Kommunauty
Connexion
Inscription

Récupérer dernier ID mysql +1 --> Input


maxredphenix Messages : 60

Bonjour à tous,

Je souhaite utiliser un champs de type input en php pour afficher la valeur du dernier ID enregistrer dans ma base de donnée mysql et lui mettre +1.

Je m'explique, j'ai une page php de type formulaire qui me sert à enregistrer le nombre d'appel reçu et de décrire l'appel, pour cela j'ai besoin que le champs input m'affiche le numéro de l'appel (si il y a eu 30 appels avant alors le champs m'affiche 31) et comme ça je rentre mes infos mais je sais à combien j'en suis. Le but est juste de l'afficher vu que de toute façon lors de l'enregistrement c'est la bdd qui lui affecte son numéro automatiquement.

Je sais qu'il faut que je regarde du côté de last_insert_id mais je n'arrive pas à trouver comment faire.

Si quelqu'un pouvait m'aider je suis plus que preneur parce que la je cherche depuis des heures et je trouve rien.

Merci d'avance

maxredphenix

lundi 30 avril 2012

Vanyali Messages : 1298

tu peut tout simplement faire une requête du genre

SELECT MAX(id) FROM latable

ça te donne le numéro maximum ensuite, il suffit de l'incrémenter

lundi 30 avril 2012

maxredphenix Messages : 60

Merci pour ta réponse, je vais regarder comment faire avec ta commande.

Ce que j'avais commencer à faire mais qui ne fonctionne pas c'est ceci::

<label for="id_appel">N°: </label>
<?php
echo '<INPUT NAME="id_appel" ID="id_appel">';
mysql_query("SET NAMES UTF8");
require_once('connexionbdd.php'); // Connexion à mysql via le fichier connexion.php
echo "$reponse";
$reponse = ("SELECT * FROM id ORDER BY ID DESC LIMIT 1 OFFSET 0" );
?>

Normalement il est censé me récupérer les id et les prendre par ordre décroissant donc m'afficher le dernier dans mon input mais.......

lundi 30 avril 2012

Dawlin Messages : 3381

Mais qu'eeeeest-ce que c'est que ça ...

Alors. Reprenons tout :

  • On dirait que ton code est écrit à l'envers (les lignes du bas devraient être en haut et inversement)
  • Ta requête $reponse n'est jamais exécutée par MySQL. Où as-tu vu mysql_query($reponse) ?
  • echo "$reponse" va afficher "$reponse" et non le contenu de $reponse (tu coomprend ?)
  • Je te fais confiance sur le contenu du fichier connexionbdd.php et sur le fait que ta connexion à MySQL est correcte
  • Vire la ligne sur l'utf-8 on s'en fout.
  • tu mets un input, certes. Mais tu ne lui donnes pas de valeur. Donc il restera vide toute sa vie

Sachant cela, je te propose une correction (avec l'aide de Vanyali) :


<label for="id_appel">N°: </label>
<?php
//Je commence par me connecter
require_once('connexionbdd.php');
//J'écris ma requête pour sélectionner l'id la plus haute :
$reponse = "SELECT MAX(id) FROM latable";
//Je l'éxécute
$requete = mysql_query($reponse);
//Je récupère le résultat
$resultat = mysql_fetch_array($requete);
//J'en extrait mon ID :
$maxId = $resultat['id'];
//J'affiche mon input en fonction :
print '<INPUT NAME="id_appel" ID="id_appel" value="'.$maxId.'">';
//FINI
?>

Comme tu peux le voir extraire un résultat d'une base de données c'est un peu complexe, et l'afficher dans un champ c'est facile maistu avais juste oublié. On dirait que tu copies-colles des lignes de code toutes faites sanss vraiment les comprendre... Tu as besoin de (re)voir tes bases du PhP et du MySQL

mardi 1 mai 2012

maxredphenix Messages : 60

Bonjour,

merci pour ta réponse, j'avoue que je débute en php mais j'ai tenter pas mal de chose pour ce code la parce que j'ai un peu de mal pour tout ce qui est récupération depuis une bdd mais j'ai pas fait de copier coller.

Si je rentre ton code google chrome me donne ceci: Notice: Undefined index: id in C:\wamp\www\Monsite\php\gest_appels.php on line 127 ce qui corresponds à la ligne suivante: $maxId = $resultat['id'];

Pour ma page connexionbdd.php j'ai fait ceci:

<?php
$host = "localhost";
$user = "root";
$passwd = "";
$database = "gestspie";
$link = @mysql_connect($host, $user,$passwd);

if(!$link){
die('Erreur de connexion au serveur');
}
$select_db = @mysql_select_db($database);
if(!$select_db){
die('Erreur de connexion à la base');
}
?>

Donc je pense pas que cela vienne de cette page de connexion??? et pour la ligne $reponse j'ai juste remplacer par le nom de ma table:

$reponse = "SELECT MAX(id) FROM [color=#9e141c]appels[/color]";

La je vois pas ce qui peux faire que ça fonctionne pas

mardi 1 mai 2012

Dawlin Messages : 3381

Tu feras attention il y a du BBCode dans ton MySQL

C'est un truc sérieux hein c'est de la programmation. Donc tu n'as pas besoin de mettre du BBCode pour colorer le nom de ta table.

Ce code devrait marcher si la table s'appelle appels et si le champ id existe.

mardi 1 mai 2012

maxredphenix Messages : 60

Bonsoir,

Je viens de changer ma page de connexion:

<?php
$host = "localhost";
$user = "root";
$passwd = "";
$database = "gestspie";
$link = mysql_connect($host, $user,$passwd);

if(!$link){
die('Erreur de connexion au serveur');
}
$select_db = mysql_select_db($database);
if(!$select_db){
die('Erreur de connexion à la base');
}
?>

Tu penses que c'est mieux comme ça?

Sinon pour le champs input je comprends pas parce que cela ne fonctionne pas. Voila un screen de l'erreur et de ma table:

L'erreur est toujours reconnu à la même ligne et j'ai fait un appel d'un enregistrement d'une autre table dans un select pour tester la page de connexion et cela fonctionne donc cela ne vient pas de la connexion à la bdd.

C'est assez bizarre

mardi 1 mai 2012

Vanyali Messages : 1298

hum, je pense savoir pourquoi : il faut renommer la colonne car elle doit s'appeller max(id) ou un truc bizarre donc en gros, la requête serais plutôt :

$reponse = "SELECT MAX(id) AS id FROM appels";
mercredi 2 mai 2012

maxredphenix Messages : 60

J'ai qu'une chose a dire... Merci

C'est super ça fonction très bien, il y a juste au premier lancement de page quand il y a aucun enregistrement de fait dans la table que le champs n'affiche rien mais ça c'est pas grave.

Encore merci pour ton aide.

maxredphenix

mercredi 2 mai 2012

Répondre Pour répondre, tu dois d'abord t'inscrire rapidement sur Kommunauty. Rejoins-nous vite !