{MySQL} Récuperation d'un ID

Résolu/Fermé
Bannas - 8 juin 2009 à 11:37
demattos Messages postés 2 Date d'inscription jeudi 1 janvier 2015 Statut Membre Dernière intervention 1 janvier 2015 - 1 janv. 2015 à 16:37
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)

11 réponses

ixabro Messages postés 87 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 2 mars 2010 4
8 juin 2009 à 11:56
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
dam75 Messages postés 1043 Date d'inscription lundi 4 mai 2009 Statut Webmaster Dernière intervention 21 février 2023 67
8 juin 2009 à 18:56
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
M'enfin ??..
8 juin 2009 à 11:46
Bonjour,

Pour ce qui est de recuperer le résultat d'une fonction d'agrégation comme Max() en MySql, regardez par ici (les derniers post nottament) :

http://www.commentcamarche.net/forum/affich 1691973 php mysql recuperer valeur max

Salutations.
0
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 327
8 juin 2009 à 11:46
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

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

Posez votre question
@ 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
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 327
8 juin 2009 à 11:57
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
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
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
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 327
8 juin 2009 à 17:16
Non elle sera fermée automatiquement à la fin du premier script.
0
ixabro Messages postés 87 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 2 mars 2010 4
8 juin 2009 à 17:08
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
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
demattos Messages postés 2 Date d'inscription jeudi 1 janvier 2015 Statut Membre Dernière intervention 1 janvier 2015
1 janv. 2015 à 16:37
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