Menu

Récupération du dernier id d'un champ [Résolu/Fermé]

Messages postés
326
Date d'inscription
mercredi 5 novembre 2008
Statut
Membre
Dernière intervention
24 février 2012
- - Dernière réponse : Gl@dior
Messages postés
326
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.

Afficher la suite 

4 réponses

0
Merci
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)
Messages postés
326
Date d'inscription
mercredi 5 novembre 2008
Statut
Membre
Dernière intervention
24 février 2012
60
0
Merci
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
Merci
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
Messages postés
326
Date d'inscription
mercredi 5 novembre 2008
Statut
Membre
Dernière intervention
24 février 2012
60
0
Merci
Oué enfin, ça s'est avéré assez utile, maintenant j'ai compris ... Merci pour ton aide quand même.