Php/mysql : pb affichage avec LAST_INSERT_ID

campesinos -  
 freedelta -
Bonjour

j'ai un pb a l'affichage :
j'utilise mysql/php :je souhaite afficher mon dernier enregistrement ds 1 tableau , avec monscript ci dessous rien ne s'affiche =>page blanche ...
Merci pour votre aide et bonne fete

$res = ("SELECT LAST_INSERT_ID() from sortie");
$query=mysql_query ($res,$db) or mysql_die(mysql_error());
while($resul = mysql_fetch_array($res))
{
$e_idsortie=$resul["idsortie"];
$e_date_sortie=$resul["date_sortie"];
}
echo $e_idsortie;
 	
mysql_close()
Configuration: Windows XP
Firefox 2.0.0.1

7 réponses

  1. fatah
     
    ou sont tes balises <div

    tu dois d abord creer ton tableaux ensuite tu inseres ton enregistrement et si tu veux plusieur enregistrement tu dois entourer ton tableaux avec ton script et faire une region repeter....
    0
  2. Thom@s Messages postés 2647 Date d'inscription   Statut Membre Dernière intervention   678
     
    Salut !

    Et comme ça ?
    $res = "SELECT idsortie,date_sortie FROM sortie WHERE idsortie=".mysql_insert_id();
    $query=mysql_query ($res) or die(mysql_error());
    $resul = mysql_fetch_array($query);
    $e_idsortie=$resul["idsortie"];
    $e_date_sortie=$resul["date_sortie"];
    
    echo $e_idsortie;
    
    mysql_close()

    Apparemment, il y a plusieurs erreurs dans ton code :
    - syntaxe de SELECT...WHERE incorrecte,
    - mysql_fetch_array() prend en paramètre un pointeur ($query), et non le texte de la requête ($res),
    - mysql_die() ?? On utilise simplement die,
    - la boucle while est inutile, puisque, ici, un seul enregistrement (tuple) est retourné.

    A+ :-)
    0
  3. CAMPESINOS
     
    Merci thomas

    Bon ben ma page est tjs vide ;--((
    0
    1. Thom@s Messages postés 2647 Date d'inscription   Statut Membre Dernière intervention   678
       
      Re,

      Le code est à adapter :
      - Il faut vérifier le nom de la table (sortie) et les noms des champs (idsortie, date_sortie...) (j'ai essayé de reprendre ceux que tu avais donnés),
      - Il faudrait aussi afficher les résultats, ce que ne fait pas mon code.

      Bien sûr, aussi, le code ne marche que si dans ta page, tu fais, avant, une requête INSERT. Tu peux nous donner le code de cette requête, stp?
      Sinon, mysql_insert_id() ne correspond à rien.

      Essaie peut-être comme ça, mais encore une fois, c'est à adapter :)
      $res = "SELECT * FROM sortie WHERE idsortie=".mysql_insert_id();
      $query=mysql_query ($res) or die(mysql_error());
      $resul = mysql_fetch_array($query);
      $e_idsortie=$resul["idsortie"];
      $e_date_sortie=$resul["date_sortie"];
      
      echo $e_idsortie.' - '.$e_date_sortie.'<br>';

      A+
      0
    2. CAMPESINOS
       
      merci encore pour votre aide :
      Ma requete insert est ok =>elle m'insere bien les datas
      ...
      $sql = "INSERT  INTO sortie (idsortie,date_sortie,)   VALUES ( '',now(), ') " ;
      ....

      si affichage des résultats, pour savoir si l'insertion a marchée via:
      require_once 'testaffiche.php';


      ce fichier testaffiche.php est vide :
      j'ai testé avec le code corrigé de thomas pas eu besoin d'apporter des correctifs=tt était ok

      $res = "SELECT * FROM sortie WHERE idsortie=".mysql_insert_id();
      $query=mysql_query ($res) or die(mysql_error());
      $resul = mysql_fetch_array($query);
      $e_idsortie=$resul["idsortie"];
      $e_date_sortie=$resul["date_sortie"];

      echo $e_idsortie.' - '.$e_date_sortie.'<br>';
      0
  4. Thom@s Messages postés 2647 Date d'inscription   Statut Membre Dernière intervention   678
     
    Re,

    Tu as toujours une page blanche ?

    Tu peux essayer de :
    - Vérifier si le champ idsortie est bien un autoincrement,
    - Remplacer ta première requête $sql par :
    $sql = 'INSERT INTO sortie SET date_sortie='.now();
    - Remplacer la deuxième requête par :
    $res = "SELECT * FROM sortie WHERE idsortie=5"
    où 5 est un id qui existe vraiment dans ta table. Dis-nous ensuite les résultats: comme ça, on verra si le problème vient du mysql_insert_id() ou du reste du code.
    - La remplacer par :
    $res = "SELECT * FROM sortie WHERE idsortie=LAST_INSERT_ID()"

    A+ :-)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. CAMPESINOS
     
    Bon ben... je vois plus j'en ai pour la nuit je crois...j'ai fais tellement de modif que je vois plus rien

    ci joint le code de testaffiche.php:
    <?		   
    		//connection au serveur
      $cnx = mysql_connect( "localhost", "root", "" ) ;
     
      //sélection de la base de données:
      $db  = mysql_select_db( "bordereau" ) ;
    
    /*     //a-recherche le dernier enregistrement ds la table sortie
    $sql = ('INSERT INTO sortie SET date_sortie='.now()); 
    // Remplacer la deuxième requête par :
    $res = "SELECT * FROM sortie WHERE idsortie=LAST_INSERT_ID()" 
    $query=mysql_query ($res) or die(mysql_error());
    $resul = mysql_fetch_array($query);
    $e_idsortie=$resul["idsortie"];
    $e_date_sortie=$resul["date_sortie"];
    echo $e_idsortie;
    
    mysql_close();
    ?>
    
    
    0
  7. Emacs
     
    SELECT MAX(idsortie), c'est ça que tu veux ?
    0
  8. freedelta
     
    $query="SELECT LAST_INSERT_ID() as last_id FROM mytable";

    print "LAST INSERT= ".$lastInsert['last_id'];
    0