Si la valeur décimale = 0, comment afficher un message TEXTE ?

Si la valeur décimale = 0, comment afficher un message TEXTE ? - PHP - Programmation

Marsh Posté le 13-01-2006 à 17:22:00    

Bonjour je suis super débutante en PHP, j'ai développé un catalogue de produits.
Dans la base, le champ 'prix' a la valeur 'decimal 5,2'
Pour chaque référence, j'ai un prix_neuf, et un prix_occasion.
Pour certaines références, les tarifs_neuf (ou occasion) ne sont pas disponibles ponctuellement, donc le prix est "N/D"
J'ai besoin d'afficher toutes les références de mon catalogue, car certaines ont un 'prix neuf' et 'd'occasion', et d'autres seulement 'neuf'.
Bien évidement, dans ma base, tous les produits que j'ai rentrés en "N/D" prennent la valeur 0.00 €
 
Quelle condition poser avant l'affichage du tarif, pour que la valeur 0.00 prenne la valeur "N/D" ?
 

Code :
  1. <?php echo $row_Produits['prix_cw']; ?>


 
Merci par avance de votre aide, je n'ai peut-être pas assez donné d'informations, n'hésitez pas à me le faire savoir !.
 

Reply

Marsh Posté le 13-01-2006 à 17:22:00   

Reply

Marsh Posté le 13-01-2006 à 17:24:41    

Code :
  1. echo $row_Produits['prix_cw'] != 0?$row_Produits['prix_cw']:"N/D";


 
[:petrus dei]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 13-01-2006 à 17:28:46    

J'ai été grilled, c'est bizare, j'allais proposer quasiment la même chôse. :lol:

Reply

Marsh Posté le 13-01-2006 à 18:26:36    

masklinn a écrit :

Code :
  1. echo $row_Produits['prix_cw'] != 0?$row_Produits['prix_cw']:"N/D";


 
[:petrus dei]


 
Merci beaucoup !!!
 
Alors pour aller plus loin,
 :D  
La valeur 0.00 = N/D : ok !
J'ai une autre valeur 1.00 (sachant que je n'ai aucun produit à 1.00 €) = N/A (non applicable)
Comment rajouter une seconde instruction ?

Code :
  1. <?php echo $row_Produits['prix_cw'] != 0?$row_Produits['prix_cw']:"N/D" or != 1?$row_Produits['prix_cw']:"N/A"; ?>


Ca ne marche pas bien évidemment  :(  
dois mettre un parse ; ou un if ? else if ?
Merci de ton aide !


Message édité par coxine le 13-01-2006 à 18:38:23
Reply

Marsh Posté le 13-01-2006 à 18:37:19    

coxine> t'as déjà ouvert une doc sur le PHP ?

Reply

Marsh Posté le 13-01-2006 à 18:38:45    

smaragdus a écrit :

coxine> t'as déjà ouvert une doc sur le PHP ?


non pourquoi cette question ?

Reply

Marsh Posté le 13-01-2006 à 18:57:38    

coxine a écrit :

non pourquoi cette question ?


parce que visiblement tu ne connais pas ce langage [:mrbrelle]

Reply

Marsh Posté le 13-01-2006 à 19:11:25    

smaragdus a écrit :

parce que visiblement tu ne connais pas ce langage [:mrbrelle]


J'avais compris ouvert "un post" sur le PHP !
Une doc, oui, j'ai PHP/MySQL de JM Defrance, j'ai appris beaucoup...mais je sèche aussi par moments.
J'ai commencé il y a trois mois.
Ta question ne m'aide pas beaucoup !!  :pt1cable:  
J'aurais préféré une réponse constructive :whistle:  
 
bon, ce n'est pas grave, je vers chercher....
Je sais qu'il faut mettre une condition

Code :
  1. <?php echo $row_Produits['prix_cw'] != 0?$row_Produits['prix_cw']:"N/D"  OR != 1?$row_Produits['prix_cw']:"N/A"; ?>


???ça irait ça ?


Message édité par coxine le 13-01-2006 à 19:12:40
Reply

Marsh Posté le 13-01-2006 à 19:34:24    

carrément pas.
 
l'opérateur ternaire à une syntaxe du type :
$var = (expression à tester) ? (expression à renvoyer si test = true) : (expression à renvoyer si test = false)


Message édité par ritzle le 13-01-2006 à 19:39:07
Reply

Marsh Posté le 13-01-2006 à 19:41:11    

donc chez toi ca doit être :
 

Code :
  1. <?php
  2. echo $row_Produits['prix_cw'] == 0 ? "N/D" : ( $row_Produits['prix_cw'] == 1 ? "N/A" : $row_Produits['prix_cw'] );
  3. ?>

Reply

Marsh Posté le 13-01-2006 à 19:41:11   

Reply

Marsh Posté le 13-01-2006 à 19:44:14    

Mouais, vu qu'il y a de multiples conditions, laisse tomber l'opérateur ternaire et revient au if...elseif... classique (ou au switch dans ton cas).
 
(j'adore le double opérateur ternaire, dans le genre illisible :D)

Message cité 2 fois
Message édité par naceroth le 13-01-2006 à 19:45:28
Reply

Marsh Posté le 13-01-2006 à 19:56:27    

naceroth a écrit :

Mouais, vu qu'il y a de multiples conditions, laisse tomber l'opérateur ternaire et revient au if...elseif... classique (ou au switch dans ton cas).
 
(j'adore le double opérateur ternaire, dans le genre illisible :D)


 
Merci pour toutes vos réponses
Ternaire :ouch:  pour moi c super compliqué et nouveau, mais à lire Ritzle, si deux conditions, ça peut se faire non ?
Je penchais plutôt (après renseignements et relecture et visite du site des zéro  :D ) pour un if elseif. Je vais plancher et vous tiens au courant !

Reply

Marsh Posté le 13-01-2006 à 20:00:58    

ritzle a écrit :

donc chez toi ca doit être :
 

Code :
  1. <?php
  2. echo $row_Produits['prix_cw'] == 0 ? "N/D" : ( $row_Produits['prix_cw'] == 1 ? "N/A" : $row_Produits['prix_cw'] );
  3. ?>



Oui mais non, le ternaire c'est pour faire de l'inline quand on a un seul choix simple, avec 2+ choix soit elle fait des suites de if/elseif soit (beaucoup mieux dans son cas) elle utilise un switch/case avec une condition default :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 13-01-2006 à 20:01:12    

naceroth a écrit :


(j'adore le double opérateur ternaire, dans le genre illisible :D)


je l'utilise surtout en C  :D

Reply

Marsh Posté le 13-01-2006 à 20:01:53    

masklinn a écrit :

Oui mais non, le ternaire c'est pour faire de l'inline quand on a un seul choix simple, avec 2+ choix soit elle fait des suites de if/elseif soit (beaucoup mieux dans son cas) elle utilise un switch/case avec une condition default :o


je suis d'accord, mais j'essayais de reprendre ce qu'elle avait commencé

Reply

Marsh Posté le 13-01-2006 à 20:03:55    

coxine a écrit :

Merci pour toutes vos réponses
Ternaire :ouch:  pour moi c super compliqué et nouveau, mais à lire Ritzle, si deux conditions, ça peut se faire non ?
Je penchais plutôt (après renseignements et relecture et visite du site des zéro  :D ) pour un if elseif. Je vais plancher et vous tiens au courant !


 
Si je suis pas fan de l'opérateur ternaire dans ce cas là, c'est juste pour une question de lisibilité du code, y en a qui arrive à relire ça simplement, c'est pas trop mon cas donc voilà :)

Reply

Marsh Posté le 13-01-2006 à 20:11:40    

ritzle a écrit :

donc chez toi ca doit être :
 

Code :
  1. <?php
  2. echo $row_Produits['prix_cw'] == 0 ? "N/D" : ( $row_Produits['prix_cw'] == 1 ? "N/A" : $row_Produits['prix_cw'] );
  3. ?>



 
 
 :bounce:  
RITZLE MERCI MERCI ça fonctionne bien, reste à ne pas se planter quand on va implémenter dans la base de nouvelles références, 0= N/D et 1= N/A  :lol:  :pt1cable: !
Et en plus je viens d'apprendre qqch avec toi !
Je vais me "documenter" sur le ternaire, ça simplifie bcp de choses pour moi qui débute.
J'imagine qu'avec plein de conditions, ça complique les choses !
Bonne soirée à tous et bon WE !
 :hello:

Reply

Marsh Posté le 13-01-2006 à 20:17:53    

quand il y a plusieurs conditions avec des valeurs précises et numériques à tester il vaut mieux utiliser un switch

Reply

Marsh Posté le 13-01-2006 à 20:24:48    

ternaire veut dire "a trois membre" de même que binaire veut dire "a deux membre" et unaire "a un membre" (jamais entendus le mot "unaire" avant de lire le premier chapitre du bouquin sur la certification php)

Reply

Marsh Posté le 13-01-2006 à 20:35:55    

coxine a écrit :

:bounce:  
RITZLE MERCI MERCI ça fonctionne bien, reste à ne pas se planter quand on va implémenter dans la base de nouvelles références, 0= N/D et 1= N/A  :lol:  :pt1cable: !
Et en plus je viens d'apprendre qqch avec toi !
Je vais me "documenter" sur le ternaire, ça simplifie bcp de choses pour moi qui débute.
J'imagine qu'avec plein de conditions, ça complique les choses !
Bonne soirée à tous et bon WE !
 :hello:


Remplace moi tout de suite cette horreur par un switch/case :fou:  

Code :
  1. switch($row_Produits['prix_cw']) {
  2.    case 0:
  3.        echo "N/D";
  4.        break;
  5.    case 1:
  6.        echo "N/A";
  7.        break;
  8.    default:
  9.        echo $row_Produits['prix_cw'];
  10.        break;
  11. }


(enfin un truc du style, je sais plus ce que ça donne exactement en PHP, mais ça doit pas être loin)


Message édité par masklinn le 13-01-2006 à 20:37:04

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 13-01-2006 à 21:03:52    

hmmm, le truc bien pensé si un jour y a un produit qui coute 1 euro  :whistle:

Reply

Marsh Posté le 13-01-2006 à 21:05:53    

smaragdus a écrit :

hmmm, le truc bien pensé si un jour y a un produit qui coute 1 euro  :whistle:


Tu supprimes le case :p


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 13-01-2006 à 21:18:55    

Hum, le truc bien pensé  s'il y a un jours un produit qui coute 1.50 euro ou 0.90 euros.
Que je sache, le switch attend un entié et du coup il ignorera tous les chiffres aprés la virgule. Pour un systéme de gestion d'affichage des prix, ca me semble pas être la meilleure structure possible. A la place, je viserais plustôt une structure à base de "if/elseif".

Reply

Marsh Posté le 13-01-2006 à 21:24:29    

omega2 a écrit :

Que je sache, le switch attend un entié


En C peut être.
 
(et accessoirement, c'est pas un système de gestion des prix c'est l'affichage du prix, il y a 2 valeurs "magiques", t'en veux pas 15 non plus [:mlc])


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 13-01-2006 à 21:32:33    

"gestion d'affichage des prix" pas "gestion des prix". C'est pas pour rien que j'avais mis le "d'affichage". ;)
Mais bon, autant pour moi, visiblement en php, le case peut prendre n'importe quoi (je me demande comment ca réagit face à un tableau ou un object. :lol:)

Reply

Marsh Posté le 13-01-2006 à 21:34:29    

omega2 a écrit :

"gestion d'affichage des prix" pas "gestion des prix". C'est pas pour rien que j'avais mis le "d'affichage". ;)
Mais bon, autant pour moi, visiblement en php, le case peut prendre n'importe quoi (je me demande comment ca réagit face à un tableau ou un object. :lol:)


Il fait de la merde, c'est le principe de base de ce langage après tout [:jar jar]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 13-01-2006 à 22:26:42    

omega2 a écrit :

"gestion d'affichage des prix" pas "gestion des prix". C'est pas pour rien que j'avais mis le "d'affichage". ;)
Mais bon, autant pour moi, visiblement en php, le case peut prendre n'importe quoi (je me demande comment ca réagit face à un tableau ou un object. :lol:)


 
Le truc c'est que le case peut parfaitement recevoir autre chose qu'une valeur fixe. Par exemple

Code :
  1. $a = array(1,2);
  2. $b = array(3,4);
  3. $c = array(1,2,3,4);
  4. switch ($c) {
  5. case array_merge($a,$b):
  6.  echo 'réussi';
  7.  break;
  8. default:
  9.  echo 'oups';
  10.  break;
  11. }


 
fonctionne parfaitement.  
(bon, mon exemple est bateau je sais, c'est juste pour le principe)

Reply

Marsh Posté le 14-01-2006 à 07:40:07    

Ca aurait été quand même plus propre d'utiliser un champ dans la base spécifique à ce que tu cherches à faire :/
 
Car là jouer sur la valeur du prix, c'est possible mais après c'est du grand n'importe quoi  [:petrus75]  
 
tout comme faire un site de e-commerce sans avoir aucune connaissance en développement informatique :/
 
Tu nous fileras l'adresse de ton site pour qu'esox_ch et moi on vienne te dévaliser hein ? [:petrus dei]

Message cité 1 fois
Message édité par gatsu35 le 14-01-2006 à 07:40:50
Reply

Marsh Posté le 14-01-2006 à 09:19:49    

ce qui risque d'être drôle c'est la partie paiement / fdp, en général les débutants s'arrêtent là :sweat:


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 14-01-2006 à 16:11:12    

oulà, je n'ai pas vu toutes vos réponses, j'ai vu rapidement la proposition de switch case...
Je dois sortir mes enfants  :D  
Je reviendrais ce soir étudier tout ça.
 
En attendant, dans mon catalogue, je fais des "calculs"
 

Code :
  1. <?php
  2. $total+=$row_rsPanier['prix_cw'] == 0 ? "N/D" : ( $row_rsPanier['prix_cw'] == 1 ? "N/A" : $row_rsPanier['prix_cw'] ) * $liste[$i][1];
  3. $total_neuf+=$row_rsPanier['prix_neuf'] * $liste[$i][1];
  4. }
  5. $_SESSION['total']=$total;//mAj du total dans la session
  6. $_SESSION['total_neuf']=$total_neuf;//mAj du total neuf dans la session
  7. ?>


 
Pour l'affichage des résultats, qui sont actualisés si l'ionternaute choisi deux prodtuis de la même référence.
tout va bien.
Je veux afficher l'économie réalisée
Donc j'ai mis :  
 

Code :
  1. Economie r&eacute;alis&eacute;e de <?=round($total*100/$total_neuf, 0);?>  %


 
Car je m'étais aperçue qu'il me sortait : 50.333333333333333333333 % par exemple :non:  
Ok ça marche quand je mets des produits ds le panier.
Si je supprime les produits et que je reste dans la même session (sinon, j'affiche : votre panier est vide et là pas de soucis)
 
"Economie réalisée de  
Warning: Division by zero in /var/www/free.fr/9/5/site/home/panier.php on line 171
0 % "
 
Z'avez une soluc ????? Sinon je fais économie réalisée en € et non en pourcentages  :lol:  :whistle:  
Merci d'avance

Reply

Marsh Posté le 14-01-2006 à 16:38:26    

C'est bien ce qu'on dit, tu es mal barrée pour faire ton truc car tu n'as aucunes connaissances en développement informatique.
 
Il n'y a même pas d'analyse, aucun cahier des charges, ni de specs fonctionnelles ou techniques. alors développer sans ça c'est se jeter du haut d'un immeuble.
 
Enfin c'est comme ça que je conçoit un projet :o

Reply

Marsh Posté le 14-01-2006 à 16:46:14    

Je partage la même analyse que Gatsu35 :jap:
Faire un site d'e-commerce sans avoir un minimum de connaissance en programmation, c'est du n'importe quoi.  
 
Coxine, si tu as des problème pour afficher un nombre, je n'ose imaginer les problèmes que tu auras quand tu vas faire le paiement sécurisé ou la gestion des factures :lol:

Reply

Marsh Posté le 14-01-2006 à 18:57:27    

smaragdus a écrit :

Je partage la même analyse que Gatsu35 :jap:
Faire un site d'e-commerce sans avoir un minimum de connaissance en programmation, c'est du n'importe quoi.  
 
Coxine, si tu as des problème pour afficher un nombre, je n'ose imaginer les problèmes que tu auras quand tu vas faire le paiement sécurisé ou la gestion des factures :lol:


 
Merci.
Je vous trouve super agressifs et trop sérieux, Smaragus et Gatsu35, dans vos jugements.  
Vous n'avez que ça à faire, vous moquer des "débutants" ?
Gatsu, il faudrait en plus que je donne tout le squelette du projet ? Pourquoi te permets-tu de dire ça ????
Ici ce n'est pas un forum où les gens postent pour avoir de l'aide ????, :??:  :heink:  
Je précise que le dév n'est pas mon métier (je suis designeuse à la base), je fais ça pour rendre service, mais à priori, ce n'est pas votre tasse de thé "rendre service". Et pourquoi me justifier pour répondre à ces remarques futiles ????
Je crois que je vous ai assez ennuyé, je retourne dans ma prairie de moutons.....
:hello:  
 

Reply

Marsh Posté le 14-01-2006 à 18:59:21    

Justement on te rend service en te prévenant qu'il faudra pas pleuré quand ton site se fera exploser par un hacker [:spamafote]

Reply

Marsh Posté le 14-01-2006 à 18:59:53    

coxine a écrit :

Merci.
Je vous trouve super agressifs et trop sérieux, Smaragus et Gatsu35, dans vos jugements.  
Vous n'avez que ça à faire, vous moquer des "débutants" ?
Gatsu, il faudrait en plus que je donne tout le squelette du projet ? Pourquoi te permets-tu de dire ça ????
Ici ce n'est pas un forum où les gens postent pour avoir de l'aide ????, :??:  :heink:  
Je précise que le dév n'est pas mon métier (je suis designeuse à la base), je fais ça pour rendre service, mais à priori, ce n'est pas votre tasse de thé "rendre service". Et pourquoi me justifier pour répondre à ces remarques futiles ????
Je crois que je vous ai assez ennuyé, je retourne dans ma prairie de moutons.....
:hello:


Ils sont également honnêtes, un site d'e-commerce, c'est extrèmement difficile à faire, ça demande pas mal de connaissances, et c'est dangereux.
 
Tenter d'en faire un quand ce n'est pas son métier c'est se donner de grandes chances de se manger un mur.
 
Ils te le disent, après tu fais ce que tu veux de leurs déclarations.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 14-01-2006 à 19:06:59    

masklinn a écrit :

Ils sont également honnêtes, un site d'e-commerce, c'est extrèmement difficile à faire, ça demande pas mal de connaissances, et c'est dangereux.
 
Tenter d'en faire un quand ce n'est pas son métier c'est se donner de grandes chances de se manger un mur.
 
Ils te le disent, après tu fais ce que tu veux de leurs déclarations.


 
oulàlà
Ce n'est pas un site d'e-commerce, je ne me serais pas risquée là dedans !!! Et je n'ai pas la prétention de prendre le métier des développeurs pros.
Et l'association ne m'aurait pas confié ça non plus  :pt1cable:  
J'essaye juste d'aller un peu plus loin....puis leur proposer. Si je n'y arrive pas, pas grave.
Je suis experte en XHTML / CSS, mais pas en programmation php, pas du tout.
Elargir son champ de connaissance, y trouver un intérêt, c'est ça mon but.
Etre honnetes, oui ! Mais être "ironiques" non !
J'avoue que je prends mal ce genre de remarques, qui ne sont pas fondées, car...effectivement, je ne vous ai pas livré le cahier des charges du "projet" comme ils disent  
 ;)
Mon métier actuel : mère au foyer sans emploi  :lol: J'm'occupe, j'ai du temps à perdre  :lol:  :D  ;)

Message cité 1 fois
Message édité par coxine le 14-01-2006 à 19:07:53
Reply

Marsh Posté le 14-01-2006 à 19:09:45    

gatsu35 a écrit :

Ca aurait été quand même plus propre d'utiliser un champ dans la base spécifique à ce que tu cherches à faire :/
 
Car là jouer sur la valeur du prix, c'est possible mais après c'est du grand n'importe quoi  [:petrus75]  
 
tout comme faire un site de e-commerce sans avoir aucune connaissance en développement informatique :/
 
Tu nous fileras l'adresse de ton site pour qu'esox_ch et moi on vienne te dévaliser hein ? [:petrus dei]


 
 
 :lol:  :lol:  :lol:  :lol:  :lol:  
Je me marre
C'était le but ????
  :jap:

Reply

Marsh Posté le 14-01-2006 à 19:17:56    

coxine a écrit :

...

Code :
  1. Economie r&eacute;alis&eacute;e de <?=round($total*100/$total_neuf, 0);?>  %


...
"Economie réalisée de  
Warning: Division by zero in /var/www/free.fr/9/5/site/home/panier.php on line 171
0 % "
 
Z'avez une soluc ????? Sinon je fais économie réalisée en € et non en pourcentages  :lol:  :whistle:  
Merci d'avance


 
Vérifier avant de faire le calcul que $total_neuf n'est pas égal à 0 ? On a déjà donner plusieurs exemples de syntaxe en if (ou opérateur ternaire), ça devrait pas être difficile à adapter non ?  :hello:  
 
(enfin, perso, j'ai plus de mal avec le design qu'avec la prog, donc :D)

Reply

Marsh Posté le 14-01-2006 à 19:19:44    

coxine a écrit :

oulàlà
Ce n'est pas un site d'e-commerce, je ne me serais pas risquée là dedans !!!


Gestion de panier, possibilité de passer commande en ligne voir de payer, désolé mais c'est du commerce électronique [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 14-01-2006 à 19:41:19    

naceroth a écrit :

Vérifier avant de faire le calcul que $total_neuf n'est pas égal à 0 ? On a déjà donner plusieurs exemples de syntaxe en if (ou opérateur ternaire), ça devrait pas être difficile à adapter non ?  :hello:  
 
(enfin, perso, j'ai plus de mal avec le design qu'avec la prog, donc :D)


 
hehe, tu veux un logo ?  ;)  
Je pense avoir compris pourquoi...
Si je vide le panier, une fois la session ouverte, il est là virtuellement, mais sans références, et sans prix.
Donc, le total = 0€
Je vais plancher sur une condition  

Code :
  1. if ($total_neuf !=0 AND $total_neuf!=1) 
  2. {
  3. echo..... ;


 
ou bien  ;)  suite à vos conseils :  
 

Code :
  1. <?php
  2. switch($total_neuf)
  3. {
  4. case '0': // si la variable total_neuf est égale à 0
  5. echo '-';
  6. break;
  7. case '1':// si la variable total_neuf est égale à 1
  8. echo '-';
  9. break;
  10. default: //  
  11. '=round($total*100/$total_neuf, 0)' ; // on affiche le calcul du pourcentage
  12. } ;?> %


 
Sinon, pour mes champs prix dans lesquels effectivement, non dispos et non applicables...je bien conscience que ce n'est pas du tout pro  :non: de mettre des "case" avec les valeurs 0 et 1.
Ca m'enquiquine un peu de rajouter deux champs dans ma table...dans mais je pense que si j'arrive à sortir mon "panier devis"...car les gens doivent se déplacer pour acheter, je ne me risquerais pas à ce qu'ils intègrent une valeur 1€ !!!
 
 :jap:  

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed