Je m'en remet à vous - boucle do while

WRInaute occasionnel
Bonjour à tous, après une lutte acharné et des centaines, que dis-je des milliers de neurones brulés :cry: par mon mal de tête je ne trouve pas de réponse ! :roll:

Je cherche a faire une liste déroulante avec une boucle do while, le code :

Code:
				$plat_query = tep_db_query("SELECT * FROM products_plat ORDER BY plat_id ASC");
      			        $plat = tep_db_fetch_array($plat_query);
				$totalRows_rsPlat = mysql_num_rows($plat_query);
				do {  
				?>
				<option value="choix_plat.php?v=<?php echo $row_rsPlat['plat_id'];  ?>"><?php echo $row_rsPlat['plat_nom']; ?></option>
				<?php
				} while ($row_rsPlat = mysql_fetch_assoc($plat_query));
				  $rows = $totalRows_rsPlat;
				  if($rows > 0) {
					  mysql_data_seek($plat_query, 0);
					  $row_rsPlat = mysql_fetch_assoc($plat_query);
				  }

la boucle marche, le seul truc c'est que ma premiere ligne est nulle, comme si il y avait une ligne null dans ma table, comment puis-je supprimer ca ?

Auriez vous d'autre méthode de boucle à me proposer qui reprend cette requete ?

merci :wink:
 
WRInaute occasionnel
Enfaite, j'ai comme l'impression que ca me saute le premier enregistrement, ou que du moins ca me le met "vide" ou un truc du genre :s

*******


Après vérification en effet, ca me compte bien le 1er enregistrement, mais ca me retourne des valeurs nulles, autrement dit mes variables a l'intérieur de la boucle sont nulles pour le 1er enregistrement :s
 
WRInaute impliqué
Ben oui c'est logique que ça fasse ça!
Dans une boucle do-while, le while est exécuté après la première boucle.

Quel interet d'utiliser un do-while ici???? Un while est fait pour ça !
 
WRInaute impliqué
Ben....

while ($row_rsPlat = mysql_fetch_assoc($plat_query))

Tu te compliques la vie pour rien...
 
WRInaute accro
Oui le curseur dans le tableau de résultats commence à -1 si tu veux. Donc forcément il faut commencer par prendre le résultat suivant avant de l'afficher.
 
WRInaute occasionnel
Bah moi je veux bien :D mais ca revient exactement au même, mon 1er enregistrement est vide :s

je récap :

Code:
//ma requete
$plat_query = tep_db_query("SELECT * FROM products_plat ORDER BY plat_id ASC");
//debut de la boucle
while ($row_rsPlat = mysql_fetch_assoc($plat_query)) {

//affichage
echo $row_rsPlat['entree'].'<br/>';

}

Voila en simplifier le code :s
 
WRInaute occasionnel
Le SQL
Code:
CREATE TABLE `products_plat` (
  `plat_id` int(11) NOT NULL auto_increment,
  `plat_nom` varchar(150) NOT NULL default '',
  PRIMARY KEY  (`plat_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ;

et non pas de souci particulier mise a part que je suis obligé de mettre une ligne nulle pour afficher correctement mes autres enregistrements ^^

HElp me please, parce-que je suis entrain de faire du bidouillage et j'aime pas ca :D
 
WRInaute accro
essaie en affichant l'id, t'es sur qu'il doit exister celui-la:
Code:
echo $row_rsPlat['plat_id'].'<br/>';

Et je ne vois pas de colonne du nom de "entree" qui correspond à $row_rsPlat['entree']
Il vient d'ou ?
 
WRInaute occasionnel
T'inquiete "entree" c'est parceque c'est ce qui m'ai venu a l'idée, je me rappelais plus des champs exacte ;)

Concernant l'id pas de retour, enfaite ce qui est bizarre c'est que le while reconnait qu'il y a un enregistrement parcequ'il me crée une ligne, mais n'affiche aucune variable, enfin si les affiche nulles sinon j'aurai une erreur comme quoi elles sont pas attribuées
 
WRInaute accro
Si l'id s'affiche pas, c'est que le problème vient du code, c'est impossible d'avoir une valeur null pour un ID clé primaire. Maintenant soit tu ne nous montres pas tout, soit tu ne fais pas les tests sur le fichier que tu as mis à jour =D
 
WRInaute occasionnel
héhé, est ce que ca pourrait venir de ma fonction tep_db_query qui se charge de faire le mysql_query et la connexion à la base ?
 
WRInaute accro
tep_db_query... je dirais plutôt que c'est le code d'un OsCommerce, et à mon avis (pour une fois) ça ne vient pas de là.
 
WRInaute occasionnel
non ca vient pas de la, j'ai testé également avec un code bon vieux code perso et ca me fait la meme ^^

Ya des trucs qui m'échappent je vous jure :x
 
Nouveau WRInaute
Si la fonction mysql_fetch_assoc renvoie "false" c'est qu'il n'y a aucun enregistrements renvoyés par ta requête.

De plus, si la requête renvoyait une ligne vide (ce qui n'est pas possible pour la raison évoquée par YoyoS), tu aurais de toute façon un retour contenant une variable remplie avec des valeurs vides :
$row_rsPlat["plat_id"] == "" et $row_rsPlat["plat_nom"] == ""

Vérifie que tu tapes bien dans la bonne base de données (mysql_connect, mysql_select_db), et si cette dernière contient bien la table "products_plat" avec les champs indiquées par ton script CREATE TABLE...
 
Discussions similaires
Haut