Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour à tous !!
voilà, j'ai un petit souci avec Update en Mysql. Je vous explique ce que je veux faire :
je fais un select dans un premier temps pour récupérer des data, puis je fais un update avec un rajout dans une certaine table ! J'ai écrit ce bout de code, mais ca ne marche pas ! Peut-être ce n'est la bonne façon de faire...
Je vous mets mon code :
<?php
$conn = mysql_connect("localhost","","");
mysql_select_db("db",$conn);
$req = mysql_query("SELECT * FROM test") or die(mysql_error());
while($dat = mysql_fetch_array($req))
{
// on affiche les informations de l'enregistrement en cours
$data1=$dat['id'];
$data2=$dat['A'];
$data3=$dat['B'];
$data4=$dat['C'];
$data5=$dat['D'];
echo $dat['id']."-";
echo $dat['A']."-";
echo $dat['B']."-";
echo $dat['C']."-";
echo $dat['D'];
echo "<br>";
}
if (isset($_POST['submit']))
{
for($data1=2; $data1<5;$data1++){
$upd = "update test SET id='$data1', A='$data2."-".$data5', B='$data3', C='$data4', D='$data5' WHERE id='$data1'";
$DEP = mysql_query($upd) or die('Erreur SQL !<br>'.$upd.'<br>'.mysql_error());
}
}
mysql_close($conn);
$submit="submit";
echo "<form id=\"form1\" name=\"form1\" method=\"post\" action=$_SERVER[PHP_SELF]>";
echo "<input type=\"submit\" name=\"button\" id=\"button\" value=\"$submit\" />";
echo "</form>";
?>
Quand je teste ce code, il ne se passe rien...
Merci à vous !
Inter-Rupteur
Dernière modification par inter-rupteur (20-12-2009 12:48:48)
Hors ligne
Bonjour !
Il me semble qu'il y ait un pb de logique dans ton code.
Lors du UPDATE, dans la clause WHERE, tu mets id='$dat[id]', or c'est donc toujours sur le même tuple que tu fais le UPDATE...
Peut être que si tu mettais WHERE id='$data1', cela marcherais mieux...
Ralph303
Hors ligne
Merci Ralph303 !
Mais ca change rien... ma db ne récupére rien ! J'ai pas l'impression qu'au niveau du isset il se passe qq chose en faite ???
Hors ligne
Salut
Put1, y a du boulot
déja, s'il y a plusieurs enreg dans ton tuple, tu reécrase tes variables $dataX a chaque fois
et la cerise sur le gâteau, tu met encore d'autre valeurs dans $data1 et $data2 dans ta boucle for.
Donc, si tu penses que ton problème viens du isset ..............
un bon conseil, remet tout à plat
a++
Hors ligne
oui y a plusieurs enregistrements mais ils ne sont pas réécrasés !!! L'update ne fonctionne pas car meme en simulant une variable différente (bidon quoi !) de celle que j'ai, j'ai meme pas d'erreur... Donc, le isset n'agit pas là !!
je remet mon code avec des modifs (remis le if dans la boucle et retirer les variables data1, 2, etc... :
<?php
$conn = mysql_connect("localhost","","");
mysql_select_db("db",$conn);$req = mysql_query("SELECT * FROM test") or die(mysql_error());
while($dat = mysql_fetch_array($req))
{
// on affiche les informations de l'enregistrement en cours
echo $dat['id']."-";
echo $dat['A'] ."-";
echo $dat['B'] ."-";
echo $dat['C'] ."-";
echo $dat['D'];
echo "<br>";
}if (isset($_POST['submit']))
{for($dat['id']=2; $dat['id']<5;$dat['id']++){
$upd = "update test SET id='$dat[id]', A='$dat[A]'."-".'$dat[D]', B='$dat[b]', C='$dat[C]', D='$dat[D]' WHERE id='$dat[id]'";
$DEP = mysql_query($upd) or die('Erreur SQL !<br>'.$upd.'<br>'.mysql_error());
}
}mysql_close($conn);
$submit="submit";
echo "<form id=\"form1\" name=\"form1\" method=\"post\" action=$_SERVER[PHP_SELF]>";
echo "<input type=\"submit\" name=\"button\" id=\"button\" value=\"$submit\" />";
echo "</form>";?>
Hors ligne
>>oui y a plusieurs enregistrements mais ils ne sont pas réécrasés
j'ai pas dis que tu réécrasais tes enreg, mais tes variables, oui
remet ta boucle for à l'intérieur de ton while, et ce, avec d'autre variables, et tu seras plus proche de la réalité
a++
Hors ligne
J'ai remis à l'intérieur du while, mais tjrs rien dans la base... Je comprends pas !!
Le fait de mettre d'autre variable, ne servira à rien car je suis à l'intérieur de la boucle : j'utilise ceux de mysql_fetch_array !
Merci.
<?php
$conn = mysql_connect("localhost","","");
mysql_select_db("db",$conn);$req = mysql_query("SELECT * FROM test") or die(mysql_error());
while($dat = mysql_fetch_array($req))
{
// on affiche les informations de l'enregistrement en cours
echo $dat['id']."-";
echo $dat['A'] ."-";
echo $dat['B'] ."-";
echo $dat['C'] ."-";
echo $dat['D'];
echo "<br>";
if (isset($_POST['submit']))
{for($dat['id']=2; $dat['id']<5;$dat['id']++){
$upd = "update test SET id='$dat[id]', A='$dat[A]'."-".'$dat[D]', B='$dat[b]', C='$dat[C]', D='$dat[D]' WHERE id='$dat[id]'";
$DEP = mysql_query($upd) or die('Erreur SQL !<br>'.$upd.'<br>'.mysql_error());
}
}
}mysql_close($conn);
$submit="submit";
echo "<form id=\"form1\" name=\"form1\" method=\"post\" action=$_SERVER[PHP_SELF]>";
echo "<input type=\"submit\" name=\"button\" id=\"button\" value=\"$submit\" />";
echo "</form>";?>
Dernière modification par inter-rupteur (20-12-2009 16:19:48)
Hors ligne
>>Le fait de mettre d'autre variable, ne servira à rien car je suis à l'intérieur de la boucle : j'utilise ceux de mysql_fetch_array !
:rolleyes::rolleyes:
t'as raison
continue
moi, j"te laisse
a++
Hors ligne
personne pour m'aider ?
Hors ligne
t'aider a quoi ??
a++
Hors ligne
Pierrot, tu m'aides pas là.... à résoudre mon probleme !! Si tu pouvais réellement m'aider, se serait sympa de ta part !!
Merci
Inter-Rupteur
Hors ligne
je t'ai dis ou était ton erreur, tu persiste
tu met des valeurs dans ton tableau $dat et tu les écrasent avec ta boucle for.
Mais que veut tu faire exactement ??
mettre des valeur aléatoires dans une table ??
quel intérêt ????
a++
Hors ligne
Comme je le disais avant, il y a gros pb de logique dans ton code.
A chaque tuple de ton select avec la boucle while, tu mets à jour les tuples dont les ids vont de 2 à 4 avec la boucle for...
Le refaire à chaque fois ca sert à rien.
Si j'ai bien compris, ce que tu veux faire, c'est concaténer les champs A et D avec un "-" entre ?
Dans ce cas, la boucle for ne sert à rien...
Mais je ne vais pas écrire le code à ta place...
Bon courage !
Ralph303
Hors ligne
désolé, j'ai cherché pendant des heures et je ne trouve pas ! J'ai retiré la boucle for car effectivement elle ne sert a rien !! Mais ca ne change rien.
Ce que je veux faire exactement :
J'ai plus de 1000 entrées dans ma base avec une erreur sur un champs. Pour eviter de me taper phpmyadmin et corriger chaque ligne de ma base, je me suis dis tiens je vais faire un script qui va faire un select sur la base, récupérer toutes les lignes, faire la modif et refaire un update derriere pour les remettre dans la base !!! Voilà
Inter-Rupteur
Hors ligne
Mais non mais non, je suis patient moaaaaaaaa :D
a++
Hors ligne
lol !!!
Bon je travaille dessus là, je vous exposerai mes travaux d'ici peu !!!
Hors ligne
salut à tous !!
ouf !!!!! J'ai enfin trouvé en me creusant les meninges !!!! :D
Je vous mets en avant première mes travaux : (lol)
<?php
$conn = mysql_connect("localhost","root","");
mysql_select_db("db",$conn);
$req = mysql_query("SELECT * FROM test") or die(mysql_error());
echo "<form id=\"form1\" name=\"form1\" method=\"post\" action=$_SERVER[PHP_SELF]>";
$i=0;
$data1=array();
while($dat = mysql_fetch_array($req))
{
$data1[$i]=$dat['id'];
$data2[$i]=$dat['A'];
$data3[$i]=$dat['B'];
$data4[$i]=$dat['C'];
$data5[$i]=$dat['D'];
echo $data1[$i]."-";
echo $data2[$i]."-";
echo $data3[$i]."-";
echo $data4[$i]."-";
echo $data5[$i];
echo "<br>";
$i++;
}
echo "<br>";
echo "<input type=\"submit\" name=\"button\" id=\"submit\" value=\"submit\" />";
echo "</form>";
if (isset ($_POST['button']))
{
for ($i=0; $i<3; $i++)
{
echo $data1[$i]."-";
echo $data2[$i]."-";
echo $data3[$i]."-";
echo $data4[$i]."-";
echo $data5[$i];
echo "<br>";
$upcell = $data2[$i]."-".$data5[$i];
$upd = "update test SET id='$data1[$i]', A='$upcell', B='$data3[$i]', C='$data4[$i]', D='$data5[$i]' WHERE id='$data1[$i]'";
$DEP = mysql_query($upd) or die('Erreur SQL !<br>'.$upd.'<br>'.mysql_error());
}
}
mysql_close($conn);
?>
Pas cool ca, hein !!! ;-)
Merci à vous
Inter-Rupteur
Hors ligne
pour amélioré la lisibilité de ton code, tu aurais pu evité d'écrire un roman :D
la même chose sans les affichage
a++
Dernière modification par Pierrot (21-12-2009 23:48:42)
Hors ligne
C'est vrai !! Mais bon là, ca veut dire que j'aurai eu qq temps de pratique, alors que moi j'ai à peine qq heures !!!
A++
Hors ligne
Pages :: 1