[SQL] Update du champ id

Résolu/Fermé
hektoumayo - 23 mai 2005 à 20:52
SearchLab Messages postés 4 Date d'inscription lundi 15 décembre 2008 Statut Membre Dernière intervention 16 décembre 2008 - 16 déc. 2008 à 16:08
Bonjour,
Voila mon petit problème :
J'ai un table mysql dont le champ "primaire" "auto_incriment" se nomme "id". Je voudrais après suppression d'un champ de la table modifier le "id" pour que celui ci commence toujours à 1. Donc voici le script que j'ai réaliser :

$req="SELECT id FROM livredor";
$resultat=mysql_query($req) or die('ERREUR SQL :'.$req.'<br />'.mysql_error());

$val=mysql_fetch_array($resultat);
$i=1;
while($val) {
$query="UPDATE livredor SET id=' ".$i." ' ";
mysql_query($query) or die('ERREUR SQL :'.$query.'<br />'.mysql_error());
$i=$i+1;
}

Mais celui-ci ne marche pas. Il ne s'agit pas d'une erreur de syntaxe mai bel et bien d'une erreur de programmation.
Est ce que quelqu'un pourrai s'il vous plait m'indiquer l'erreur? Et surtout s'il existe une solution à ce problème.
Merci d'avance.

2 réponses

sam3000 Messages postés 1225 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 13 juin 2005 144
23 mai 2005 à 22:36
donc, la solution de ton probleme c'est lors de la suppression!
tu fait ton DELETE, et puis tu fais la commande:
" UPDATE livredor SET id=(id-1) WHERE id>='$id' "
ça decremente les "faux" numéros juste apres l'effacement
2
sam3000 Messages postés 1225 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 13 juin 2005 144
23 mai 2005 à 21:40
le "update" en général est utilisé avec "where" pour cibler les enregistrements
UPDATE table SET champ=valeur WHERE condition

dans ton cas, je ne vois pas pourquoi tu veux "forcer" la valeur de "id" si tu l'as au préalable définis à "auto_increment".
c'est tout simplement INUTILE!

il te suffis lors de l'ajout d'un nouveau enregistrement d'utiliser la syntaxe:
INSERT INTO table (champs) VALUES (valeurs)

mais, dans les champs, tu ne met pas le champ "id", il sera mis automatiquement par MySQL!

donc tu ignore completement ce champ sauf lors de la selection d'un enregistrement bien précis dans un SELECT:
" SELECT * FROM table WHERE id='$id' "

sur ce, @+
0
Bon je pense que tu n'a pa bien compris ce que je voulais dire.
En fait , je voudrais creer un formulaire ds lequel je preciserez le numéro du message à supprimer. Ce numero correspond à l'id de ma table.
La suppression se passe très bien mais le problème c'est que lors de l'affichage de mon livre d'or a nouveau , le premier message du livre d'or a par exemple le numero 3 ( après avoir supprimé le premier et le deuxieme message) , ce qui est parfaitement débil puisqu'il est le premier !
Est ce que tu vois ce que je veu dire?
0
SearchLab Messages postés 4 Date d'inscription lundi 15 décembre 2008 Statut Membre Dernière intervention 16 décembre 2008 > hektoumayo
16 déc. 2008 à 16:08
Dis moi hektoumayo j'ai le même problème que toi quelle solution as tu trouvé pour corriger ton problême (je sais le post est un peu vieux...)
0