manque 1 enregistrement

toujoursenretard
Invité n'ayant pas de compte PHPfrance

11 oct. 2006, 13:56

bonjour,
avec cette requete il me manque un enregistrement, je sais que c'est du au $totalrows_recordset, parce que ca decale le pointeur de 1 je crois.
Mais je ne sais pas comment faire pour quand meme recuperer la valeur qui manque ...
Voici mon code :

$query_Recordset = "SELECT annuaire.ID, annuaire.nom, annuaire.lien_lang, annuaire.classement,annuaire.rubrique, rubrique.ID FROM annuaire, rubrique where annuaire.rubrique='Art Culture & Patrimoine' and rubrique.rubrique=annuaire.rubrique and validation='v'";
$Recordset = mysql_query($query_Recordset, $livre_dor) or die(mysql_error());
$row_Recordset = mysql_fetch_assoc($Recordset);
$totalRows_Recordset = mysql_num_rows($Recordset);
Merci d'avance

Eléphanteau du PHP | 15 Messages

13 oct. 2006, 13:55

je ne comprends pas trop ton code, tu veux recuperer tous les enregistrement mais tu ne fais qu'un mysl_fetch_assoc donc tu ne peux recupérer qu'un enregistrement

avec un truc dans ce genre ca devrait mieux marcher:
<?php 
$query_Recordset = "SELECT annuaire.ID, annuaire.nom, annuaire.lien_lang, annuaire.classement,annuaire.rubrique, rubrique.ID 
FROM annuaire, rubrique 
WHERE annuaire.rubrique='Art Culture & Patrimoine' 
AND rubrique.rubrique=annuaire.rubrique and validation='v'";

$Recordset = mysql_query($query_Recordset, $livre_dor) or die(mysql_error());
//tu verifie la présence d'enregistrement dans le resultat
if(mysql_num_rows($Recordset)!=0){
   //tu parcours les enregistrements retournés
   while($row_Recordset = mysql_fetch_assoc($Recordset){
     //et la tu fait ton traitement en utilisant $row_Recordset
   }
}
?>

toujoursenretard
Invité n'ayant pas de compte PHPfrance

19 oct. 2006, 11:19

ma boucle existe et est comme la tienne . Le probleme est que ca me zappe le premier enregistrement qui doit etre afficher par la requete ( il m'enleve l'enregistrement 0 )
j'avais lu qu'il y avait un pb quand on utilisait mysql-numrows ... et je n'arrive pas a remettre la main dessus ...

Eléphant du PHP | 193 Messages

19 oct. 2006, 11:25

Peux-tu montrer le code qui pose problème?

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

19 oct. 2006, 11:39

bonjour,
avec cette requete il me manque un enregistrement, je sais que c'est du au $totalrows_recordset, parce que ca decale le pointeur de 1 je crois.
Mais je ne sais pas comment faire pour quand meme recuperer la valeur qui manque ...
Voici mon code :

$query_Recordset = "SELECT annuaire.ID, annuaire.nom, annuaire.lien_lang, annuaire.classement,annuaire.rubrique, rubrique.ID FROM annuaire, rubrique where annuaire.rubrique='Art Culture & Patrimoine' and rubrique.rubrique=annuaire.rubrique and validation='v'";
$Recordset = mysql_query($query_Recordset, $livre_dor) or die(mysql_error());
$row_Recordset = mysql_fetch_assoc($Recordset);
$totalRows_Recordset = mysql_num_rows($Recordset);
Merci d'avance

Tu peux remarquer que tu fais déjà un mysql_fetch_assoc() qui lit le premier, c'est pourquoi si tu enchaines avec une boucle while qui fait aussi un fetch elle commencera à partir du second.

Correction : efface le mysql_fetch_assoc() qui se trouve avant mysql_num_rows().
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

toujoursenretard
Invité n'ayant pas de compte PHPfrance

19 oct. 2006, 12:19

ok mais je fais comment ensuite pour recuperer mes enregistrements sans mon fetch ...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 oct. 2006, 12:54

Ben l'idée, c'est de ne faire le fetch qu'au moment où tu as besoin de lire tes enregistrements, c'est à dire dans ta boucle. Tu devrais donc normalement pouvoir te passer de celui-ci :
$query_Recordset = "SELECT annuaire.ID, annuaire.nom, annuaire.lien_lang, annuaire.classement,annuaire.rubrique, rubrique.ID 
FROM annuaire, rubrique where annuaire.rubrique='Art Culture & Patrimoine' and rubrique.rubrique=annuaire.rubrique and validation='v'"; 
$Recordset = mysql_query($query_Recordset, $livre_dor) or die(mysql_error()); 
// cette ligne ci lit le premier enregistrement (qui te manque ensuite) et n'a pas l'air d'être utilisée. 
// $row_Recordset = mysql_fetch_assoc($Recordset); 
$totalRows_Recordset = mysql_num_rows($Recordset);  
Si cela génère des erreurs ou ne ramène pas l'enregistrement manquant, c'est que tu as un problème dans le reste du code... montre nous dans ce cas la boucle dans laquelle tu récupères les données :)

toujoursenretard
Invité n'ayant pas de compte PHPfrance

19 oct. 2006, 13:01

je posterai ca ce soir l'ai pas avec moi et je ferai un ou deux tests avant histoire de verifier tout ce que tu me dis ...
Merci encore

Eléphanteau du PHP | 15 Messages

19 oct. 2006, 16:43

le code que je te proposait correspondait a TOUT ce qui etait necessaire donc comme on te le propose par la suite, ne pas faire un fetch puis ensuite la boucle,
il te suffisait de faire un copier/coller à l'adaptation près.
En fait le principe est simple:
1. ecrire la requete
2. l'executer
3. verifier que le resultat comporte des lignes
4. parcourir les ligne en faisant le traitement necessaire