Résultat d'une requete n'apparait pas

Résolu/Fermé
zola13 Messages postés 48 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 27 août 2015 - 12 août 2010 à 12:50
chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 - 12 août 2010 à 13:54
Bonjour,

Pleasseeee, help me :-D

Je vous pose mon problème. Je souhaite faire afficher les résultats d'une rêquete à l'aide d'une boucle while que voici :

<?php

while ($row_campus = mysql_fetch_assoc ($campus))
{
$infos_unif = $row_campus ['unif'];
echo '<tr>';
echo '<td><a href="universite.php?unif='.$row_campus ['unif'].'"> '.$row_campus ['unif'].'</a></td>';
echo '</tr>';

}

?>

Seulement, voilà, le premier des résultats n'apparait pas. Quelqu'un sait m'aider ?

Merci d'avance


8 réponses

varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 699
12 août 2010 à 12:55
Peut tu nous montrer le code a partir de la récupération des données de $campus?
1
chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 143
12 août 2010 à 12:58
Salut,

Tu as un d'abords problème de guillemet..

Remplace ton code par celui-ci :

<?php

while ($row_campus = mysql_fetch_assoc ($campus))
{
   $infos_unif = $row_campus ['unif'];
   echo '<tr>';
   echo '<td><a href="universite.php?unif=' . $infos_unif . '">' . $infos_unif . '</a></td>';
   echo '</tr>';
}

?> 


Et redis-nous si ca va pas...
1
zola13 Messages postés 48 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 27 août 2015 3
12 août 2010 à 13:02
Alors, je viens d'essayer, et malheureusement, le résultat est le même :(
0
zola13 Messages postés 48 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 27 août 2015 3
12 août 2010 à 12:59
Merci pour ta réponse rapide :-)

Je suis débutant alors, parfois je ne comprends pas tjs tout... :$

C'est çà que tu demandes ? :

mysql_select_db ($database_connexion, $connexion);
$query_campus = "SELECT * FROM campus WHERE pays ='".$_GET['pays']."' ORDER BY unif ;
$campus = mysql_query ($query_campus, $connexion) or die (mysql_error()) ;
$row_campus = mysql_fetch_assoc ($campus);
1
zola13 Messages postés 48 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 27 août 2015 3
12 août 2010 à 13:05
Ce que je comprends vraiment pas, c'est que quand je fais

$row_campus_num = mysql_num_rows ($campus);
echo $row_campus_num;


Il m'inscrit qu'il y a 4 résultats mais n'en affiche que 3 :s
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 699
12 août 2010 à 13:06
C'est bien ce que je pensais:

Si ton code ressemble a ça:

mysql_select_db ($database_connexion, $connexion);
$query_campus = "SELECT * FROM campus WHERE pays ='".$_GET['pays']."' ORDER BY unif ;
$campus = mysql_query ($query_campus, $connexion) or die (mysql_error()) ;
$row_campus = mysql_fetch_assoc ($campus);
while ($row_campus = mysql_fetch_assoc ($campus))
{
$infos_unif = $row_campus ['unif'];
echo '<tr>';
echo '<td><a href="universite.php?unif='.$row_campus ['unif'].'"> '.$row_campus ['unif'].'</a></td>';
echo '</tr>';

}

?>

tu as une ligne responsable de l'erreur et c'est celle juste avant le while: supprime la.

Ton code devrait ressembler à ça:


<?php
mysql_select_db ($database_connexion, $connexion);
$query_campus = "SELECT * FROM campus WHERE pays ='".$_GET['pays']."' ORDER BY unif";
$campus = mysql_query ($query_campus, $connexion) or die (mysql_error()) ;
while ($row_campus = mysql_fetch_assoc ($campus))
{
   $infos_unif = $row_campus ['unif'];
   echo '<tr>';
   echo '<td><a href="universite.php?unif=' . $infos_unif . '">' . $infos_unif . '</a></td>';
   echo '</tr>';
}
?> 
1
chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 143
12 août 2010 à 13:12
Pour t'aider a debugger seul a l'avenir je vais te donner quelques pistes.

Deja, remplace ta requete par :

$query_campus = "SELECT * FROM campus WHERE pays ='".$_GET['pays']."' ORDER BY unif";


Il manquait un " a la fin, tu as tu l'enlever ici sinon PHP te jèterai une erreur..

Ensuite, fait un :
echo $query_campus;
die();


juste en dessous. Ca t'affichera la requete et s'arretera sur cette ligne. Copie-colle la requete et execute la sur phpMyAdmin si tu l'utilises..

Si tu vois des resultats, enleve le l'echo et le die(); et continue..

Ensuite juste apres :

$campus = mysql_query ($query_campus, $connexion) or die (mysql_error()) ; 


Rajoute

echo "J'ai trouve : " . mysql_num_rows($campus) . "resultats";
die();


Execute et regarde combien il te dit.. Si tu trouves le meme nombre que dans phpMyAdmin c'est bon signe continue ..


Ensuite enleve l'echo et le die() que tu viens de rajouter et

Rajoute apres :

$row_campus = mysql_fetch_assoc ($campus);


Ceci :

var_dump($row_campus);
die();


Ce qui t'affichera ce qu'il y a dans $row_campus..

Et tiens nous au courant ;)
0
zola13 Messages postés 48 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 27 août 2015 3
12 août 2010 à 13:25
Merci pour les conseils ! :)

Alors, je viens de faire tout ça.

Lorsque que je copie colle la requête dans PHPMyAdmin, mes 4 résultats apparaissent et PHPMyAdmin encadre bien la colonne où pays est égal à Royaume-Uni (dans ce cas-ci)

Par contre, avec le var_dump ($row_campus), bah il m'affiche les données qu'il y a dans la ligne qui ne s'affiche pas :-)
0
zola13 Messages postés 48 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 27 août 2015 3
12 août 2010 à 13:12
En fait,

mysql_select_db ($database_connexion, $connexion);
$query_campus = "SELECT * FROM campus WHERE pays ='".$_GET['pays']."' ORDER BY unif ;
$campus = mysql_query ($query_campus, $connexion) or die (mysql_error()) ;
$row_campus = mysql_fetch_assoc ($campus);

est définit tout au dessus de ma page pcq j'ai besoin d'utiliser des echo $row_campus [''] sur toute ma page. Donc en fait, dans un tableau, j'ai écris ma boucle while comme mentionné ci dessus....
0
chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 143
Modifié par chico200987 le 12/08/2010 à 13:27
Ok alors dans ce cas tu peux faire tout simplement :

<?php 
mysql_select_db ($database_connexion, $connexion); 
$query_campus = "SELECT * FROM campus WHERE pays ='".$_GET['pays']."' ORDER BY unif"; 
$campus = mysql_query ($query_campus, $connexion) or die (mysql_error()) ; 
$row_campus = mysql_fetch_assoc ($campus);

// blabla ton code 


while ($row_campus) 
{ 
   $infos_unif = $row_campus ['unif']; 
   echo '<tr>'; 
   echo '<td><a href="universite.php?unif=' . $infos_unif . '">' . $infos_unif . '</a></td>'; 
   echo '</tr>'; 
   $row_campus = mysql_fetch_assoc ($campus); 
} 
?>  

0
varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 699
12 août 2010 à 13:25
Sa marche aussi. Le truc c'est qu'il ne faut pas que tu fasse 2 fois
$row_campus = mysql_fetch_assoc ($campus);
avant d'entrer dans ta boucle, ou d'afficher $row_campus parceque sinon tu perd une ligne.
0
chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 143
12 août 2010 à 13:27
Exactement :)
0
zola13 Messages postés 48 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 27 août 2015 3
12 août 2010 à 13:33
OOOOOHHHHH Monnn Diieuuuu !!! :-D Mercii !!!!! Ca fonctionne, je garde en tête ce que je viens d'apprendre ! Par contre, comment ca se fait qu'on perd la ligne ? :$
0
varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 699
Modifié par varfendell le 12/08/2010 à 13:36
tu perdait une ligne parce dans ton code:

$campus = mysql_query ($query_campus, $connexion) or die (mysql_error()) ; 
$row_campus = mysql_fetch_assoc ($campus); //recupere la premiere ligne 
while ($row_campus = mysql_fetch_assoc ($campus))  //recupere la seconde ligne 
{ 
//affiche la seconde ligne 
}
0
zola13 Messages postés 48 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 27 août 2015 3
12 août 2010 à 13:40
Oooookkkk :-)

Donc si je comprends bien, dans la boucle, on met le $row_campus mysql_fetch_assoc à la fin pour qu'il récupère les lignes qui suivent, c'est bien ça? C'est possible que ca permette aussi à la boucle de s'arreter ?
0