[RESOLU] Requête vide

Eléphanteau du PHP | 27 Messages

04 sept. 2013, 04:43

Bonjour,

Je cherche à pousser la valeur 0 dans un tableau lorsque ma requête sql est vide. J'ai essayé ce code, qui ne marche pas. J'ai vu des choses sur le net, mais je ne les comprends pas, c'est au-dessus de mon niveau. Pourriez-vous jeter un coup d'oeil à ce code et me suggérer une modif ?
for($i=0;$i<$long;$i++){
$chainesql=
"SELECT MAX(ordre)
FROM dt_lecon_liste
INNER JOIN flw_parcours_lecons
ON dt_lecon_liste.lecon_liste_id=flw_parcours_lecons.lecon_id
WHERE dt_lecon_liste.collection_id='$cours_id[$i]'
AND flw_parcours_lecons.fait='1'
AND flw_parcours_lecons.key_id='$user_id'";
$result=mysql_query($chainesql);
while($enreg =mysql_fetch_row($result)){
if($enreg[0]>=0){
array_push($tableau,$enreg[0]+1);
}else if(!$result){
// Ici avec cette ligne, j'espérais pousser 0
// avec une requête vide...
array_push($tableau,0);
}
}
Un grand merci par avance,

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

04 sept. 2013, 10:47

Le faut que tu n'ai as de réponse ne veux pas dire que result égale a false.

D'ailleurs si $result == false tu ne peux pas exécuter le while (car erreur sur le fetch).
D'ailleurs tu n'as pas besoin de while la requête ne retrouvant qu'une seule ligne.

Je ferais quelque chose comme ça :
<?php
$result=mysql_query($chainesql);
If ($result !== false) {
    $enreg =mysql_fetch_row($result));
    if($enreg[0]>=0){
        $enreg[0]+=1;
    } else {
        $enreg[0] = 0;
    }
     array_push($tableau,$enreg[0]);
}
?>

Tu peux ajouter un var_dump($enreg); juste après le mysql_fetch_row afin d'être certain de la valeur dans le cas ou la jointure n'est pas satisfaite (ou le prédicat).

Pour info l'extension mysql est maintenant dépréciée (donc vouée à disparaître).
Tu peux utiliser l'extension mysqli en remplacement, elle est globalement similaire, la plus grosse différence c'est l'ajout de la variable de connexion dans les fonctions.
Ceci te permettra d'avoir un script prêt pour l'avenir ;)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 27 Messages

05 sept. 2013, 00:41

Salut Moogli, et merci pour aide.

Hum... je n'y arrive pas. En fait, que renvoie exactement mysql quand aucune ligne ne correspond à la requête ? Si je teste avec une égalité comme celle-ci, ça ne devrait pas marcher ?
if($enreg[0]!=""){
// il y a un résultat
}else{
// aucun résultat
}

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

05 sept. 2013, 15:20

Le fetch retourne false s'il n'y a pas (ou plus) d'enregistrement a fournir.

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 27 Messages

07 sept. 2013, 17:56

C'est bon, j'ai compris. En fait j'avais aussi une erreur dans la formulation de ma requête qui faisait que j'avais des résultats incohérents. Maintenant ça va, merci beaucoup !