MySQL: besoin d'aide!!!
Résolu
toto
-
toto aussi -
toto aussi -
Bonjour,j'ai déjà posté ce message dans le forum programation, mais comme ça concerne aussi le webmastering,
et par conséquent les webmaster pourraient apporter la solution, je le poste aussi dans ce forum.
J'espère que CCM me pardonnera si c'est contraire au réglement.
Je vous présente ma table appelée message avec les valeurs :
+----------------------+--------------------------+
| message | numeroDePlace |
+----------------------+--------------------------+
| Bonjour, aaa | 1 |
| Bonjour, bbbb | 2 |
| Bonjour, ccc | 3 |
| Bonjour, dddd | 4 |
| Bonjour, eeeee | 5 |
| Bonjour, zzzz | 6 |
+----------------------+-----------------------+ |
Voilà , mon problème est que je n'arrive pas à trouver la requète qui me permettrait d'incrémenter les valeur de la colonne de numeroDePlace de 1 pour avoir le résultat suivant:
+----------------------+--------------------------+
| message | numeroDePlace |
+----------------------+--------------------------+
| Bonjour, aaa | 2 |
| Bonjour, bbbb | 3|
| Bonjour, ccc | 4 |
| Bonjour, dddd | 5 |
| Bonjour, eeeee | 6 |
| Bonjour, zzzz | 7 |
+----------------------+-----------------------+ |
J'ai essayé la requète suivante :
$request1="select numeroDePlace from message";
$result1=mysqli_query($connection,$request1) or die("no request1");
while($line1=mysqli_fetch_assoc($result1))
{
$request2="update message set numeroDePlace=$line1[numeroDePlace]+1";
$result2=mysqli_query($connection,$request2) or die("no request2");
}
mais ça ne marche pas car ça remplace toutes les valeurs de numeroDePlace par 8 comme ceci:
+----------------------+--------------------------+
| message | numeroDePlace |
+----------------------+--------------------------+
| Bonjour, aaa | 8 |
| Bonjour, bbbb | 8|
| Bonjour, ccc | 8 |
| Bonjour, dddd | 8 |
| Bonjour, eeeee | 8 |
| Bonjour, zzzz | 8 |
+----------------------+-----------------------+ |
Donc, est-ce que quelqu'un connait bien mySQL pour pouvoir résoudre ce problème ?
Merci d'avance à tous ceux qui essaient de m'aider
Cordialement
et par conséquent les webmaster pourraient apporter la solution, je le poste aussi dans ce forum.
J'espère que CCM me pardonnera si c'est contraire au réglement.
Je vous présente ma table appelée message avec les valeurs :
+----------------------+--------------------------+
| message | numeroDePlace |
+----------------------+--------------------------+
| Bonjour, aaa | 1 |
| Bonjour, bbbb | 2 |
| Bonjour, ccc | 3 |
| Bonjour, dddd | 4 |
| Bonjour, eeeee | 5 |
| Bonjour, zzzz | 6 |
+----------------------+-----------------------+ |
Voilà , mon problème est que je n'arrive pas à trouver la requète qui me permettrait d'incrémenter les valeur de la colonne de numeroDePlace de 1 pour avoir le résultat suivant:
+----------------------+--------------------------+
| message | numeroDePlace |
+----------------------+--------------------------+
| Bonjour, aaa | 2 |
| Bonjour, bbbb | 3|
| Bonjour, ccc | 4 |
| Bonjour, dddd | 5 |
| Bonjour, eeeee | 6 |
| Bonjour, zzzz | 7 |
+----------------------+-----------------------+ |
J'ai essayé la requète suivante :
$request1="select numeroDePlace from message";
$result1=mysqli_query($connection,$request1) or die("no request1");
while($line1=mysqli_fetch_assoc($result1))
{
$request2="update message set numeroDePlace=$line1[numeroDePlace]+1";
$result2=mysqli_query($connection,$request2) or die("no request2");
}
mais ça ne marche pas car ça remplace toutes les valeurs de numeroDePlace par 8 comme ceci:
+----------------------+--------------------------+
| message | numeroDePlace |
+----------------------+--------------------------+
| Bonjour, aaa | 8 |
| Bonjour, bbbb | 8|
| Bonjour, ccc | 8 |
| Bonjour, dddd | 8 |
| Bonjour, eeeee | 8 |
| Bonjour, zzzz | 8 |
+----------------------+-----------------------+ |
Donc, est-ce que quelqu'un connait bien mySQL pour pouvoir résoudre ce problème ?
Merci d'avance à tous ceux qui essaient de m'aider
Cordialement
Configuration: Windows Vista Internet Explorer 7.0
5 réponses
-
tu peux mettre ton champ numéro de place en auto_increment
tu fais modification du champ concerné->extra->auto_increment, et ça le fait automatiquement à chaque enregistrement^^-
Merci pour ta réponse, mais ça ne peux pas marcher car le tableau que j'ai montré est partiel (j'ai pas affiché la colonne numeroDeMessage car c'est pour économiser les frappe de texte), le tableau complet est en fait:
+-----------------+----------------+-----------------+
| numeroDeMessage | message | numeroDePlace |
+-----------------+----------------+-----------------+
| 17 | Bonjour, aaa | 1 |
| 18 | Bonjour, bbbb | 2 |
| 19 | Bonjour, ccc | 3 |
| 20 | Bonjour, dddd | 4 |
| 21 | Bonjour, eeeee | 5 |
| 22 | Bonjour, zzzz | 6 |
+-----------------+----------------+-----------------+
dans lequel la colonne numeroDeMessage était déjà mis en extra>auto_increment.
Par conséquent, je ne peux pas mettre aussi la colonne numeroDePlace en extra>auto_increment.
Le type de donnée pour la colonne numeroDePlace est bigint .
-
-
désolé (: j'aurais du m'en douter^^ :D
$request1="select numeroDePlace from message"; $result1=mysqli_query($connection,$request1) or die("no request1"); while($line1=mysqli_fetch_assoc($result1)) { $newNb=$line1['numeroDePlace']++; $request2="update message set numeroDePlace=' ".$newNb."' where numeroDeMessage='".$line1['numeroDeMessage']."' "; mysqli_query($connection,$request2) or die("no request2"); }
J'aurais fait quelque chose dans ce goût là^^ -
Bonjour
Normal que ça te mette la même valeur partout, dans ta requête update, il n'y a pas de 'WHERE' donc elle s'applique à tous les enregistrements.
Tu as un moyen très simple d'obtenir ton résultat sans avoir de boucle à faire :
update message set numeroDePlace=numeroDePlace+1.
Pas besoin de select et de while pour traiter tes enregistrements un par un-
Merci pour ta réponse, mais justement, j'ai pas mis le where car je veux que l'incrémentation s'applique à TOUTES les valeurs de la colonne numeroDePlace,
et en plus tu as dis qu'il y a un moyen très simple d'obtenir le résultat sans avoir de boucle à faire :
update message set numeroDePlace=numeroDePlace+1 -> Ce moyen, je l'ai déjà fait , je l'ai méme mentionné dans l'énoncé de mon problème par update message set numeroDePlace=$line1[numeroDePlace]+1- non
sans where tu affectes la même valeur à tous les enregistrements. Et avec la boucle en prime, tu recommences autant de fois qu'il y a d'enregisrements. Si tu pouvais voir les valeurs intermédiaires tu les verrais tous passer à 2 puis tous à 3 puis tous à 4 etc.. jusqu'à 8
avec une formule du type champ = champ+1, sans boucle, tu incrémentes tous les champs une fois et une seule
-
-
Tu n'as pas lu ma réponse.
Ce n'est pas pas $line1[numeroDePlace]+1 mais numeroDePlace+1 qu'il faut mettre-
-
C'est formidable totoaussi, j'ai fait copier-coller ton code et supprimer le while , et ça marche .T'avais raison, y a pas besoin de boucle,
et il fallait bien mettre numeroDePlace=numeroDePlace+1 (c'est très important)
Merci à toi aussi smokebird,
et aussi à CCM
RESOLU, je peux dormir tranquillement -_-
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
pas de where, pas de boucle, juste :
mysqli_query('update `message` set `numeroDePlace`=`numeroDePlace`+1') or dir (mysql_error());