IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Oubli d'un enregistrement requête sql avec mysql


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 112
    Par défaut Oubli d'un enregistrement requête 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    C'est normal étant donné qu'une ligne est consommée bien avant, par cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 112
    Par défaut
    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?

Discussions similaires

  1. fatal error -2147467259 lors d'une requête SQL avec Mysql
    Par Spartanjohn dans le forum ADO.NET
    Réponses: 2
    Dernier message: 18/03/2013, 17h23
  2. [vista,VB 2005,SQL server 2005]requêtes paramétrées avec mysql
    Par olivier57b dans le forum Accès aux données
    Réponses: 4
    Dernier message: 04/09/2008, 18h58
  3. Requête sql avec mysql sous delphi
    Par colfire_dev dans le forum Bases de données
    Réponses: 37
    Dernier message: 07/01/2008, 10h56
  4. requête SQL avec paramètre en vb avec base de donnée SQL srv
    Par dialydany dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 01/02/2005, 10h33
  5. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo