8795 sujets

Développement web côté serveur, CMS

Salut à tous, je suis en train de construire un système d'ajout d'articles dans une table et j'ai besoin de trouvé un moyen pour connaitre l'id de la prochaine entrée.

J'avais trouvé une solution qui etait d'ajouter +1 à l'id maximal, mais le problème est que si par exemple 51 qui etait l'id max a été supprimé et que maintenant l'id maximal est 50, je veux que mon système me permette de savoir que le prochain id sera 52(car MySQL compte même les entrées supprimées donc le 51 sera plus de la table mais le l'id 51 ne pourra plus être utilisé).

Merci d'avance pour votre aide.
Bonjour,

Pourquoi as-tu besoin de connaître cet id, que comptes-tu faire à ce moment-là du programme avec ?
Ça nous aiderait à y voir plus clair sur ta demande.

Sinon si tu traites l'id après, il te suffit d'insérer ton enregistrement puis de faire ton SELECT MAX(id) après.
Modifié par ohweb (30 Oct 2014 - 10:05)
Bonjour,

@ohweb : ou mysql_insert_id après le retour de la requête d'insertion ...

@princelionel : pourquoi vouloir gérer tes id ? passe les en auto-incrémente et tu n'auras même plus besoin de chercher à la calculer et à l’insérer en même temps que le reste de tes données.
Au fait je fais un système qui ajoute des images dans un dossier avant d'inserer le chemin de l'image dans la table. Et le nom de l'image ajouté est l'id de l'entrée. Voici un peu pourquoi j'ai besoin de ce systeme
J'ai trouvé la solution. Voici ce que je recherche.


<?php
                 
    /*Récupération des infos concernant ta table*/
 
    $result= $bdd-> query ("Show table status like 'ma_table' ");
 
    /*Récupération de la valeur auto incrément*/
 
    $result -> setFetchMode (PDO::FETCH_ASSOC);
 
    foreach ($result as $row)
    {  
        $id=$row ['Auto_increment'];
        echo $id;
    }
?>
Ok je pense qu'il y a une autre solution ; car celle ci me parait assez sensible de laisser open bar une commande tel que Show table en extérieur...
Salut,

comme solution c'est vraiment pas top, génère ton id en php via uniqid par exemple et change la structure de ta table, soit tu modifies ta clef primaire actuelle (plus d'AUTO_INCREMENT) soit tu rajoutes un champ unique en plus pour ton id généré.
Oups J'ai deja utilisé le code sur plusieurs pages. Pouvez vous m'aider à ameliorer le code "sensible" svp?
Modifié par princelionel (01 Nov 2014 - 02:16)
Salut,

un truc plus simple...


<?php 
$result = $bdd->query("SELECT max(id) FROM ma_table");

//nouvel id
$result = $result+1

?>