{MySQL} Récuperation d'un ID

Résolu
Bonjour,

j'expose mon probleme, je veux recuperer le dernier 'ID' enregistré d'une table. Je ne peux pas utiliser la fonction mysql_insert_id() car j'ai fermé ma connection sql entre temps. Je souhaite donc utiliser la fonction max() (un seul utilisateur a la fois donc pas de soucis. VOici mon code :

//récuperation de l'ID

$requete0 = "SELECT MAX(id_projet) FROM projet ";
$id_pro = mysql_query ($requete0) or die ("Exécution de la requête impossible");
$id_projet=mysql_fetch_array($id_pro);

//requete

$requete1="select nom_album, type_album from album, projet where album.id_projet=projet.$id_projet";
$resultat1=mysql_query($requete1);
$row1=mysql_fetch_array($resultat1);

Le problème etant que je n'arrive pas a effectuer ma requete1 (le $id_projet semble poser problème)
Configuration: Windows Vista Internet Explorer 7.0

11 réponses

  1. Bonjour,

    Pour selectionner le dernier ID d'une table je te conseille :

    $sql = 'SELECT * FROM album ORDER BY id_projet DESC LIMIT 0,0';
    $query = mysql_query($sql) or die mysql_error();
    $id_projet = mysql_fetch_array($query);

    Donc là on a récupéré toutes les infos où il y a le dernier ID.

    ------------------------------------

    $sql2="SELECT nom_album, type_album FROM album WHERE album.id_projet= '".projet.$id_projet;
    $query2 =mysql_query($sql2);
    $sql3="SELECT nom_album, type_album FROM projet WHERE album.id_projet= '".projet.$id_projet;
    $query3 =mysql_query($sql3);

    $data_album = mysql_fetch_array($query2);
    $data_projet = mysql_fetch_array($query3);

    -----------------------------------
    1
    1. Webmaster
      Bonjour,

      pour moi il y a un pb PHP :
      $requete0 = "SELECT MAX(id_projet) FROM projet ";
      $id_pro = mysql_query ($requete0) or die ("Exécution de la requête impossible");
      $id_projet=mysql_fetch_array($id_pro);

      devrait etre

      $requete0 = "SELECT MAX(id_projet) FROM projet ";
      $id_pro = mysql_query ($requete0) or die ("Exécution de la requête impossible");
      $row=mysql_fetch_array($id_pro);
      $id_projet=$row[0];

      non ?
      1
      1. Modérateur
        select nom_album, type_album from album, projet where album.id_projet=projet.$id_projet

        $id_projet n'appartient pas à une table, ce que tu veux faire c'est plutôt préciser une valeur, mais pas un attribut :
        select nom_album, type_album from album, projet where album.id_projet=$id_projet
        0
        1. @ M'enfin??..

          Merci pour ce link, je l'avais deja regardé et apres plusieurs modifications j'ai tjrs mon probleme

          @Yoan

          il y a effactivement une table projet, d'ou la jointure "album.id_projet=projet.$id_projet"

          En faite, je ne sais pas ou placer ma variable $id_projet dans ma requete. Car ma requete max(id_projet) est bonne mais pas la requete pour l'exploiter.
          0
          1. Modérateur
            il y a effactivement une table projet, d'ou la jointure "album.id_projet=projet.$id_projet"
            Mais alors ce n'est pas comme ça que ça s'écrit :)
            Parce que comme tu l'as écrit, ta requête va ressembler par exemple à :
            select nom_album, type_album from album, projet where album.id_projet=projet.65

            Tu peux faire une sélection plus une jointure si tu veux, mais il ne faut pas mélanger les conditions :
            select nom_album, type_album from album, projet where album.id_projet=$id_projet and album.id_projet=projet.lautreidprojetdelatableprojet
            0
            1. Hum... j'ai essayer vos deux solutions et ca ne fonctionne toujours pas... c'est OK pour le DESC LIMIT mais pas pour le reste.
              0
              1. J'ai precisez dans mon premier post que je n'utilisez pas la fonction mysql_insert_id() a cause d'une nouvelle connexion a ma base. Sachant que je le formulaire (donc l'insertion dans la base de donnée) et ma page actuelles sont 2 pages distinct, est il possible de garde la connexion ouvertE ? je demande au cas ou...
                0
                1. Modérateur
                  Non elle sera fermée automatiquement à la fin du premier script.
                  0
              2. Voilà normalement le DESC LIMIT que je t'ai donné devrait avoir marché, mais je m'interroge quand même sur la version de ton php ?
                0
                1. Bonjour,

                  je tiens a vous remercier pour votre engagement et votre aide :)

                  @ixabro : j'etais en version 5.2.6 j'en ai profité pour passer en 5.2.9-2 ;) merci

                  @dam75 : j'ai utilisé ta remarque et cela fonctionne !! apres avoir passé la journée d'hier dessus tu me ouvert la voie et je t'en remercie.

                  Donc encore merci à vous pour cette aide precisieuse ;)
                  0
                  1. Comme ça vous pouvez récupérer tous les champs de votre base de données. ;-)

                    SELECT * FROM tbl_etc WHERE id=LAST_INSERT_ID();

                    Bien à vous !

                    DeMattos
                    0