[MySql] obtenir la valeur de l'actuel AUTO-INCREMENT

Résolu
ajp55 Messages postés 482 Statut Membre -  
 oliversoft -
Bonjour.
Je debute en PHP en MySQL, et je voulais obtenir l'actuel valeur de l'auto-increment d'une table avant de faire mon insertion.
après insertion, je sais que je peux faire un
mysql_insert_id()
pour trouver le dernier identifiant de l'insertion précedente. mais je veux pas faire de insertion avant de savoir quel étai l'identifiant. je veux, à un moment donné, consulter la valeur actuel de mon auto-increment.
Quelqu'un peut il m'aider?
Merci d'avance pour toute tentative de réponses.

--
"L'ordinateur est une grande invention : il y a autant d'erreur qu'avant mais plus personne n'est responsable..."

4 réponses

  1. Alain_42 Messages postés 5413 Statut Membre 904
     
    tu fais une requette en recherchant le maxi de la colone qui est en autoincrement

    $sql="SELECT MAX(id) AS max_id .......
    0
    1. ajp55 Messages postés 482 Statut Membre 23
       
      ceci n'est pas toujours vrai d'autan plus que le dernier element peut avoir été supprimé. mais l'auto incrément lui, continue au suivant enrégistrement; La requete est possible, mais cela ne restera pas vrai pour toute elements. si le dernier n'a été supprimé, alors, c'est correct.
      0
  2. jeremy.s Messages postés 1248 Statut Membre 79
     
    Salut !

    Si tu utilises l'objet PDO, tu as last_insert_id, à essayer ! Je pense que ca marche même sans avoir fait un insert into juste avant. (Equivalent de ton mysql_insert_id )

    Sinon il doit y avoir un trigger quelque part pour l'auto increment, reste juste à le trouvé !
    0
  3. ajp55 Messages postés 482 Statut Membre 23
     
    merci à tous,
    vous avez été d'une grande aide. j'utilise la méthode de elghafoud.
    Thk a Alain_42
    0
  4. Alain_42 Messages postés 5413 Statut Membre 904
     
    et comme ça:

    $query = 'SHOW TABLE STATUS';
    	$result = mysql_query($query) or ;
    	//On parcours les ligne de resultats
    	while( $infos_tables = mysql_fetch_array($result) )
    	{
    		//Si le nom de la table $infos_tables[0] == au nom de la table dont vous voulez l'autoincrement ...
    		if( $infos_tables[0] == 'nom_de_ta_table' )
    			$id_autoincrement = $infos_tables[10];
    	}
    -1
    1. ajp55 Messages postés 482 Statut Membre 23
       
      correct Alain_42, mais c'est une function a réaliser là. j'ai cru à une simple instruction mysql ou PHP.
      Merci pour la réponse. je laisse le sujet ouvert, pour toute eventuelle réponse avec moins d'instruction.
      0
    2. elghafoud Messages postés 129 Statut Membre 18
       
      La méthode qu'Alain a donné est la plus rapide mais pas besoin du while:
      $result = mysql_query("SHOW TABLE STATUS LIKE 'table_name'");
      $row = mysql_fetch_array($result);
      $nextId = $row['Auto_increment'];
      mysql_free_result($result);
      0
    3. Alain_42 Messages postés 5413 Statut Membre 904
       
      si plusieurs tables dans la base il faut une boucle while pour comparer le nom de la table avec lindex[0]
      et récupérer l'autoincrement dans l'index[10]
      0
    4. oliversoft
       
      Merci les amis pour la solution

      La méthode qu'Alain a donné est la plus rapide mais pas besoin du while:
      $result = mysql_query("SHOW TABLE STATUS LIKE 'table_name'");
      $row = mysql_fetch_array($result);
      $nextId = $row['Auto_increment'];

      ceci m'a enormemant aider
      0