Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/10/2011, 22h04   #1
Nouveau Membre du Club
 
nathanael levasseur
Inscription : octobre 2010
Messages : 103
Détails du profil
Informations personnelles :
Nom : nathanael levasseur

Informations forums :
Inscription : octobre 2010
Messages : 103
Points : 33
Points : 33
Par défaut oubli d'un enregistrement requete sql avec mysql

Bonjour,

La requête que j’exécute m'affiche 2enregistrement au lieu de 3, et lorsque je rajoute un enregistrement elle m'affiche 3 au lieu de 4 bref à chaque fois que j’exécute la requête elle m'oublie un enregistrement pourtant lorsque je compte le nombre de "row" elle m'affiche bien le nombre exacte d'enregistrement..... voici le code

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 $select = " SELECT livre.*,auteur.* FROM livre,auteur  where livre.name = '".$ok."'   " ; 
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
echo $select  ;
echo $total ;
$row = mysql_fetch_array($result) ; //Retourne une ligne de résultat MySQL sous la forme d'un tableau associatif
echo $row;
$histoire = $row['histoire'] ;
$photo = $row['photo'] ;
// print '<img src="'$photo'" alt="" width="100" height="100"/><br />'; 
// si on a récupéré un résultat on l'affiche.
if($total) {
    // début du tableau
    echo '<table bgcolor="#FFFFFF">'."\n";
        // première ligne on affiche les titres prénom et surnom dans 2 colonnes
        echo '<tr>';
        echo '<td bgcolor="#669999"><b><u>livre</u></b></td>';
		echo '<td bgcolor="#669999"><b><u>date</u></b></td>';
		echo '<td bgcolor="#669999"><b><u>édition</u></b></td>';
               echo '</tr>'."\n";
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
  while($row = mysql_fetch_array($result)) {
        echo '<tr>';       
        echo '<td bgcolor="#CCCCCC">'.$row['nom'].'</td>';	
		echo '<td bgcolor="#CCCCCC">'.$row['dateparution'].'</td>';
		echo '<td bgcolor="#CCCCCC">'.$row['édition'].'</td>';		
        echo '</tr>'."\n";
    }
    echo '</table>'."\n" ;
    // fin du tableau.
}
si vous souhaitez des informations sur la table ou autre je suis à votre disposition ....

Cordialement
levasseur62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2011, 23h25   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
C'est normal étant donné qu'une ligne est consommée bien avant, par cette ligne :
Code :
$row = mysql_fetch_array($result) ;
Ce qui, d'ailleurs, est "faux" si jamais il n'y avait aucun résultat puisque vous cherchez à exploiter cette première ligne sans aucun contrôle par les instructions :
Code :
1
2
$histoire = $row['histoire'] ;
$photo = $row['photo'] ;
Au choix :
* Supprimez ce mysql_fetch_array, puisque mysql_num_rows/$total effectue ce contrôle :
Code :
1
2
3
4
5
6
7
8
9
$result = mysql_query($select, $link);
if (mysql_num_rows($result) > 0) {
    // au moins un résultat
    while ($row = mysql_fetch_assoc($result)) {
        // "affichage" de $row
    }
} else {
    // aucun résultat
}
* Sinon supprimez mysql_num_rows/$total et utilisez une boucle do/while :
Code :
1
2
3
4
5
6
7
8
9
$result = mysql_query($select, $link);
if (FALSE !== ($row = mysql_fetch_assoc($result))) {
    // au moins un résultat
    do {
        // "affichage" de $row
    } while ($row = mysql_fetch_assoc($result));
} else {
    // aucun résultat
}
PS : bizarre la requête ...
PPS : oublie != oubli
julp est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/10/2011, 23h45   #3
Nouveau Membre du Club
 
nathanael levasseur
Inscription : octobre 2010
Messages : 103
Détails du profil
Informations personnelles :
Nom : nathanael levasseur

Informations forums :
Inscription : octobre 2010
Messages : 103
Points : 33
Points : 33
julp

sinon je suis d'accord avec toi pour la requête, je sélectionne tout les enregistrements dans la table livre quand livre= "au livre que j'ai choisit" ainsi que je prends tout les enregistrement de la table auteur, je sais pas si c'est plus claire...
On peut faire plus simple?
levasseur62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h24.


 
 
 
 
Partenaires

Hébergement Web