Probleme affichage prix

Petit nouveau ! | 1 Messages

02 nov. 2011, 20:38

Bonjour tout le monde
J'ai un petit probleme dans mon scrpt :
Si je fait ma requette directe sur la BD:
SELECT t.pk_titre, t.titre, t.ISBN, t.prix_publique, c.collection, e.editeur
								FROM _pro_titres t		
									INNER JOIN _pro_titres_prenotes tp
										ON t.pk_titre = tp.fk_titre	
									INNER JOIN _pro_titres_editeurs te
										ON t.pk_titre = te.fk_titre
									INNER JOIN _pro_editeurs e
										ON te.fk_editeur = e.pk_editeur					
									LEFT OUTER JOIN _pro_titres_collections tc
										ON t.pk_titre = tc.fk_titre
									LEFT OUTER JOIN _pro_collections c
										ON tc.fk_collection = c.pk_collection				
							WHERE tp.fk_prenote = '".intval($row_prenote->pk_prenote)."'
							ORDER BY editeur, titre";


Le prix afficher comme il est enregister dans la BD ,sous le format :

Code : Tout sélectionner

7.15 21,95 22,77

Apres faire ce script pour l'affichage dans un formulaire :
	<?php 
				$editeur = "";
				while($row_titre = mysql_fetch_object($rs_titre)) :
					$qty = 0;
					$prix = $row_titre->prix_publique>0?$row_titre->prix_publique:"0,00";
					if(isset($row_bc))
					{						
						$sql_bci = "SELECT qty, prix_unitaire
										FROM _pro_bc_items 
									WHERE fk_boncmd = '".$row_bc->pk_boncmd."'
									  AND fk_item = '".$row_titre->pk_titre."'"; 	
						$rs_bci = mysql_query($sql_bci);
						if(mysql_num_rows($rs_bci)==1)
						{
							$row_bci = mysql_fetch_object($rs_bci);
							$qty = $row_bci->qty;
							$prix = $row_bci->prix_unitaire;	
						}						
					}
					if($editeur != $row_titre->editeur):
						$editeur = $row_titre->editeur;
			?>
			
			<?php echo $prix; ?> $

le prix devient :

Code : Tout sélectionner

7.00 21.00 22.00
ce script ignore tout le reste apres la virgule et le transforme en 00
Vous avez une ideé ?

ViPHP
xTG
ViPHP | 7331 Messages

02 nov. 2011, 22:12

Je pencherai pour la transformation d'une string en int...
Tout ce que renvoie le sgbd est en fait des strings.
Et mysql_fetch_object() trouve que c'est bien un numérique mais il fait pas la différence entre un flottant et un entier.
Donc il cast en entier.

Mais je suis pas sûr que ça tienne debout mon raisonnement à cause de la virgule apparaissant tout de même...
Essayes en passant par la fonction mysql_fetch_array() pour comparaison.

Mammouth du PHP | 1511 Messages

08 nov. 2011, 21:56

Attention avec les "." et les ",", qui n'ont pas les mêmes significations pour le SGBD.
Ne pas oublier de vérifier le type de champ dans la base de données (INT, FLOAT, etc...).