Récupérer un nouvel index (SQL)

Antoine83400 -  
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Ma question va peut-être paraitre très simple pour certains, à savoir que je débute tout juste dans la programmation.


J'ai une BDD avec pour clé primaire :


NoResa | .......... | .......... | ..........
----------------------------------------
1........ | .......... | .......... | ..........
2........ | .......... | .......... | ..........
3........ | .......... | .......... | ..........
4........ | .......... | .......... | ..........


Je cherche à récupérer le dernier numéro (ici 4) en le métant dans une variable :


$noresa = "SELECT max(NoResa) FROM reservation"
mysql_query($noresa);


Je souhaite alors lui ajouter +1


$noresa++


Ceci ne fonctionne pas (à savoir que j'utilise cette variable dans une autre requête SQL pour l'envoi d'un formulaire).


De plus, si je supprime l'élément 2, je voudrais que la numérotation suive son sens.


Si l'élément 2 est supprimé, en principe ça me donne ça : 1,3,4...
Or, j'aimerais ceci : 1,2,3...


Il y a surement des sujets dessus mais je n'en ai pas trouvé. Merci de votre aide.


Antoine

9 réponses

Natio78 Messages postés 719 Date d'inscription   Statut Membre Dernière intervention   96
 
tu aurais du faire une autre colonne pour ton NoResa et mettre un id auquel tu ne touches pas (juste comme ça au cas où tu te foires en réafectant il n'y a pas d'id en doublon donc pas d'erreur).
Sinon dans ta table tu es bien sur un INT?
essai de faire un truc comme ça:

$noresa = "SELECT max(NoResa) as maxResa FROM reservation" 
mysql_query($noresa); 

$noresa = $noresa['maxResa'] +1;
echo $noresa;
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Salut !

Tu cherches à incrémenté (faire ++) sur le champ à chaque insert into ?
Si oui, tu peux le faire automatiquement, quand tu crée ton champ (ou dans la modification) il te suffis de cocher "Auto increment" :)

0
Antoine83400
 
justement voici la ligne de ma clé primaire :

# Colonne Type Null Défaut Extra
1 noresa int(4) Non Aucune AUTO_INCREMENT

Lorsque je remplis cette table j'aimerais que le # soit déjà le suivant... or je peux mettre ce que je veux en entier...
0
Antoine83400
 
$sql = "INSERT INTO reservation(noresa,nomcli,libcircuit,jourd,moisd,anneed,jourr,moisr,anneer,voitureresa,hotelresa,nopers)
VALUES (SELECT max(noresa)+1 FROM reservation,'".$nomclient."','".$libel."','".$jourd."','".$moisd."','".$anneed."','".$jourr."','".$moisr."','".$anneer."','".$voitureresa."','".$hotelresa."',1)";

voilà la requete que je passe sous MySQL_query().

il y a une erreur dedans
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Il ne faut pas le remplir ! Ne met rien quand tu ajoutes une ligne !

Si par exemple j'ai ma table personne(id, nom, prenom, sexe, age) avec id en auto increment

INSERT INTO personne (nom, prenom, sexe, age) VALUES ("Dupond", "Jean", "M", 20);

0
Antoine83400
 
et bien merci à toi, ça fonctionne! cependant il a commencé à 122, alors que j'ai supprimé toutes mes données! mais je fouiner et je vais trouver
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
C'est normal, même si tu les as supprimé, le "compteur" a continué.
Si tu veux recommencer à 0, il faut que tu fasse un TRUNCAT table
Mais attention ca t'effaceras toutes tes lignes aussi
0
Antoine83400
 
c'est bon trouvé, aucunes importances ce sont des tests, merci encore!!
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Derien :)
0