8768 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai une table avec une colonne ou est indiqué l'état du stock.

Je veux afficher l'état qui correspond à "En attente de livraison", tous les articles qui sont dans cet état de stock.

Je sais qu'il faut faire une boucle pour lister l'ensemble des articles dans la colonne.

En mysql, pas de problème je sais faire mais en pdo, c'est une autre histoire ...

Genre articles en "Attente de livraison" et la liste qui s'affiche.

Mon code qui est faux comme d'habitude :
<?php

$connexion = new PDO('mysql:host='.$VALEUR_hote.';port='.$VALEUR_port.';dbname='.$VALEUR_nom_bd, $VALEUR_user, $VALEUR_mot_de_passe); 
$connexion->exec("SET CHARACTER SET utf8");

$req=$connexion->query('SELECT * FROM Articles WHERE s="En attente de livraison" ORDER BY l ASC'); 
$data = $req->fetch(); 
$req->closeCursor(); 

?>

Je ne sais pas trop comment faire avec la boucle.

Merci de vos retours.
Modifié par Tintin75 (27 Jan 2016 - 09:06)
J'ai réussit tout seul comme un grand Smiley murf Ca commence à rentrer !!!! Smiley cligne
Modifié par Tintin75 (26 Jan 2016 - 19:15)
éhééé tu grandis sous nos yeux (peut être un peu trop vite même Smiley cavapa ) Smiley lol Smiley lol

Par contre ça aurait été bien de partager ta solution pour les futures personnes qui seraient intéressées par ça aussi. Et puis ça permet aux autre d'apporter des suggestions s'il y a lieu d'en apporter.
Voilà mon code :
?php

$l = (isset($_POST['l']) ? $_POST['l'] : ""); 
$d = (isset($_POST['d']) ? $_POST['d'] : ""); 
$r = (isset($_POST['r']) ? $_POST['r'] : ""); 


$connexion = new PDO('mysql:host='.$VALEUR_hote.';port='.$VALEUR_port.';dbname='.$VALEUR_nom_bd, $VALEUR_user, $VALEUR_mot_de_passe); 
$connexion->exec("SET CHARACTER SET utf8");

$req=$connexion->query('SELECT * FROM Articles WHERE s="En attente de livraison" ORDER BY l ASC'); 
// Parcours les résultats de la colonne S
while ($data = $req->fetch(PDO::FETCH_ASSOC)) {
     echo $data['l'].' - ';
	 echo $data['d'].' -' ;
	 echo $data['r'].'<br/><br/>';
}

?>

Juste un petit soucis avec l'affichage de ma référence.

Réf 333444 et je voudrais un affichage 333 444 qui est beaucoup plus lisible pour moi.

Dans ma version 5.4 j'ai comme code :
.number_format($data['r'], 0, ',', ' ')
mais ça plante en version 7.

Si je met :
 echo '<u>Référence</u> : '. number_format($data['r'], 0, ',', ' ').'<br/><br/>';


J'ai bien à l'écran 333 444 si la référence est indiqué mais si j'ai pas de référence j'ai à l'écran :
Warning: number_format() expects parameter 1 to be floa

Merci de vos retours.
Modifié par Tintin75 (27 Jan 2016 - 07:58)
Bonjour,

Vu que le PHP7 à l'air un peu sensible au typage des variables, peut-être devrais-tu déjà caster ta variable en int (parce que je suppose que c'est une string)
Modifié par SolidSnake (27 Jan 2016 - 07:57)
Ok ce bon int !!! Dans ma référence je n'ai pas de , je veux juste un espace.

Merci je vais essayer, je suis pas très doué.
Modifié par Tintin75 (27 Jan 2016 - 08:01)
Bon ben, le message d'erreur me conforte dans ce que je te proposais, mais en fait, il veux un float, pas un int.
echo '<u>Référence</u> : '.number_format(floatval($data['r'], 0, ',', ' ')).'<br/><br/>';

J'ai 0 partout.

Warning: floatval() expects exactly 1 parameter

Le but est de pouvoir noté la référence plus facilement.

Le truc, c'est que j'ai bien 333 444 si référence dans la bdd, mais si j'ai pas de référence j'ai : Warning: number_format() expects parameter 1 to be float,

En 5.4, si je n'ai pas de référence, rien ne s'affiche, ce qui est normal.

Je n'arrive pas à m'en sortir ... Smiley bawling
Modifié par Tintin75 (27 Jan 2016 - 08:59)
number_format(), il attends ça comme paramètres :
number_format ( float $number , int $decimals = 0 , string $dec_point = "." , string $thousands_sep = "," )

Donc ça donne ça dans ton cas :
number_format(floatval($data['r']), 0, ',', ' ');

Sinon, avec les regex :
$str = "333444";
$result = preg_replace("/[0-9](?=(?:[0-9]{3})+(?![0-9]))/", "$0,", $str);
Merci ça fonctionne nickel, si j'ai pas de référence j'ai un 0 qui s'affiche.

J'ai pris ça comme solution : number_format(floatval($data['r']), 0, ',', ' ');

Je vais étudier ta solution pour comprendre mon erreur.

Merci encore et bonne journée. Smiley smile
Modifié par Tintin75 (27 Jan 2016 - 09:09)
Tintin75 a écrit :
number_format((float)$data['r'], 0, ',', ' ') ?

SolidSnake a écrit :
Teste plutôt floatval()

À noter que le résultat est identique, même que passer par un "casting" (float)$variable est plus rapide que l'autre solution.