Sql - newbie

Sql - newbie - PHP - Programmation

Marsh Posté le 28-04-2005 à 14:18:26    

Bonjour,
alors le but de ma requete est de selectionner mon PARENT_ID maximum (un entier auto incrémentiel) et de le mettre en référence maxi dans ma boucle for.
Alors j'avais déjà testé avec succès avec un classique :

Code :
  1. for ($i=1; $i <= mysql_num_rows($res); $i++) {


Mais certaines valeurs sont ammenées à disparaitre de ma table....
il y a un truc que je dois sûrement pas bien capter (newbie aidant)...
Symptome : boucle infinie !
Solution : mauvaise requete? mysql_fetch_assoc pas bon?
 
Le code:
 
 

Code :
  1. $req = "SELECT MAX(PARENT_ID) FROM `news` WHERE`PARENT_ID` != 0";
  2. $res = mysql_db_query ("database", $req, $dbConn);
  3. $result = mysql_fetch_assoc($res);
  4. for ($i=1; $result; $i++) { blbalbalblabla.....


 
 
merci d'avance

Reply

Marsh Posté le 28-04-2005 à 14:18:26   

Reply

Marsh Posté le 28-04-2005 à 14:28:04    

Ta condition d'arrêt de ta boucle est "$result". A moins que cette valeur ne change à l'intérieur de la boucle, la valeur de cette expression sera toujours la même...


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 28-04-2005 à 14:42:37    

Code :
  1. list($max_id) = mysql_fetch_row(mysql_db_query("database", "SELECT MAX(PARENT_ID) FROM `news` WHERE`PARENT_ID` != 0", $dbConn));
  2. for ($i=1; $i <= $max_id; $i++) {
  3.      ...instructions...
  4. }

Reply

Marsh Posté le 28-04-2005 à 14:51:52    

je vais tester ça merci beaucoup!

Reply

Marsh Posté le 28-04-2005 à 15:33:10    

Me revoilà, alors j'ai suivi les conseils de  Jeff@be, merci encore et j'ai pondu ceci :
 

Code :
  1. list($max_id) = mysql_fetch_row(mysql_db_query("database", "SELECT MAX(PARENT_ID) FROM `news` WHERE`PARENT_ID` != 0", $dbConn));
  2. list($min_id) = mysql_fetch_row(mysql_db_query("database", "SELECT MIN(PARENT_ID) FROM `news` WHERE`PARENT_ID` != 0", $dbConn));
  3.    
  4.     for ($min_id; $i <= $max_id; $i++) {


 
Alors mon problème cette fois ci est que la boucle for parcourt le tableau de la valeur MIN à la valeur MAX excepté le 0, et ayant pour incrément non pas ++ mais... la valeur suivante du tableau.
Des idées? :??:  

Reply

Marsh Posté le 28-04-2005 à 15:42:47    

Relis correctement ce que Jeff te propose et essaye de comprendre ce que tu fais.
 
Comprends-tu la signification des 3 branches du "for" ?


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 28-04-2005 à 15:44:49    

je pense, la premiere pour la valeur minimale, la seconde pour le maxi, et la 3e pour l'increment.
Or déjà je viens de voir que j'ai laissé une faute dans le code que je viens de coller sur le forum. :) oups

Reply

Marsh Posté le 28-04-2005 à 15:46:34    

Bon, si je comprends bien, pour chacun de tes "parent_id", tu veux provoquer une action... alors voilà
 

Code :
  1. $res = mysql_db_query("database", "SELECT PARENT_ID FROM `news` WHERE `PARENT_ID` != 0 ORDER BY `PARENT_ID`", $dbConn);
  2. while (list($parent_id) = mysql_fetch_row($res)) {
  3.     ... instructions ...
  4. }


 
Bien que ça m'a l'air trop simple pour que ça t'ait causé des problème, donc je doute avoir vraiment compris ce dont tu as besoin.

Reply

Sujets relatifs:

Leave a Replay

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