Récupération du dernier id d'un champ

Résolu/Fermé
Gl@dior Messages postés 327 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 24 février 2012 - 8 juin 2010 à 23:14
Gl@dior Messages postés 327 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 24 février 2012 - 13 juin 2010 à 22:51
Bonjour,

J'essaye de récupérer l'id du dernier enregistrement sur une table pour affecté un id au prochain enregistrement, mais ça ne fonctionne pas.

Voilà comment est ma table :

id (ai)
Titre (text)
Auteur(text)
Date(text)
Univers(text)
Article(longtext)
id_article(int)

Et voilà le code :

<?php
 
$Titre = trim($_POST['Titre']);
$Auteur = trim($_POST['Auteur']);
$Date = trim($_POST['Date']);
$Univers = trim($_POST['Univers']);
$Article = trim($_POST['Article']);


if(empty($Titre) || empty($Auteur) || empty($Date) || empty($Univers) || empty($Article)) {
	echo 'Veuillez remplir tout les champs : <a href="newarticle.php">retour</a>';
} else {
	if(@mysql_connect("127.0.0.1","root","")) 
	{
		if(@mysql_select_db('cinegeeks')) 
		{
			$id = mysql_query("SELECT LAST_INSERT_ID() FROM articles " ); 
			
			$query = 'INSERT INTO articles VALUES(
				"",
				"'.mysql_real_escape_string($Titre).'",
				"'.mysql_real_escape_string($Auteur).'",
				"'.mysql_real_escape_string($Date).'",
				"'.mysql_real_escape_string($Univers).'",
				"'.mysql_real_escape_string($Article).'",
				'$id+1')';
			$result = mysql_query($query);
			if($result == true)
			{
			echo "Ajout de l'article réussi";
			}
			else
			{
			echo "Une erreur est survenu lors de l'ajout de l'article";
			}
		} else
			echo 'Impossible d\'utiliser la base : ' . mysql_error();
	} else
		echo 'Non connecté : ' . mysql_error();
}
?>


Et voici l'erreur :

Parse error: syntax error, unexpected T_VARIABLE

Merci pour votre aide.

4 réponses

Salut,

en utilisant select max(id) from ...
tu obtiens l'id le "plus élevé" qui a de fortes chances d'avoir été le dernier créé.

si tu le fais juste après une insertion, tu obtiens l'id qui vient d'être créé
si tu le fais juste avant une insertion, tu obtiens l'id de l'insertion précédente

si l'id autoincrémanet n'est pas pratique à manipuler, utilise alors un id que tu incrémentes manuellement (insert into table select max(id)+1, constante, constante, constante ... from table) voire mieux : une clé primaire qui signifie quelque chose (ie: auteur + titre + version) et qui t'évite de manipuler un id dénué de sens.


mais si tu sais pas te servir d'autoincrément, ne t'en sers pas ! ou alors apprends à t'en servir (je sais, c'est pénible, il faut lire la doc)
0
Gl@dior Messages postés 327 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 24 février 2012 79
9 juin 2010 à 23:33
J'ai essayé aussi avec select max(id) mais ça donne rien aussi.

Je ne vois pas comment faire même en me servant juste d'un ID que j'incrémente manuellement ... En même temps, à cette heure, je suis pas très net là x)
0
Salut,

Peut-être devrais-tu t'engager dans une (re)lecture du chapitre mysql_query dans le manuel. Ça sera bien plus intelligent que de poster quasiment le même message dans un nouveau topic
0
Gl@dior Messages postés 327 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 24 février 2012 79
13 juin 2010 à 22:51
Oué enfin, ça s'est avéré assez utile, maintenant j'ai compris ... Merci pour ton aide quand même.
0