PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 20-12-2009 09:54:12

inter-rupteur
Membre
Inscription : 25-08-2009
Messages : 14

Pb avec update

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

#2 20-12-2009 11:07:24

Ralph303
Membre
Lieu : St-Cyr l'Ecole
Inscription : 30-05-2009
Messages : 98
Site Web

Re : Pb avec update

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

#3 20-12-2009 12:48:21

inter-rupteur
Membre
Inscription : 25-08-2009
Messages : 14

Re : Pb avec update

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

#4 20-12-2009 13:09:53

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Pb avec update

Salut wink
Put1, y a du boulot neutral

déja, s'il y a plusieurs enreg dans ton tuple, tu reécrase tes variables $dataX a chaque fois big_smile

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 wink

a++

Hors ligne

#5 20-12-2009 14:00:45

inter-rupteur
Membre
Inscription : 25-08-2009
Messages : 14

Re : Pb avec update

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... :

inter-rupteur a écrit :

<?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

#6 20-12-2009 14:19:34

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Pb avec update

>>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 wink
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é wink
a++

Hors ligne

#7 20-12-2009 15:46:26

inter-rupteur
Membre
Inscription : 25-08-2009
Messages : 14

Re : Pb avec update

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.


inter-rupteur a écrit :

<?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

#8 20-12-2009 19:24:48

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Pb avec update

>>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 !
roll:rolleyes::rolleyes:
t'as raison wink
continue wink
moi, j"te laisse wink big_smile
a++

Hors ligne

#9 20-12-2009 20:39:56

inter-rupteur
Membre
Inscription : 25-08-2009
Messages : 14

Re : Pb avec update

personne pour m'aider ?

Hors ligne

#10 20-12-2009 21:02:10

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Pb avec update

t'aider a quoi ??
a++

Hors ligne

#11 20-12-2009 21:07:50

inter-rupteur
Membre
Inscription : 25-08-2009
Messages : 14

Re : Pb avec update

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

#12 20-12-2009 21:46:18

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Pb avec update

je t'ai dis ou était ton erreur, tu persiste wink
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

#13 20-12-2009 22:03:22

Ralph303
Membre
Lieu : St-Cyr l'Ecole
Inscription : 30-05-2009
Messages : 98
Site Web

Re : Pb avec update

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

#14 21-12-2009 00:19:52

inter-rupteur
Membre
Inscription : 25-08-2009
Messages : 14

Re : Pb avec update

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

#15 21-12-2009 08:47:52

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Pb avec update

Pour ton problème de isSet il me semble que les input de type submit ne sont pas envoyés dans la variables $_POST.

Et concernant le reste... Je pense que je me serais fâché à la place de Pierrot...

Hors ligne

#16 21-12-2009 11:04:50

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Pb avec update

Mais non mais non, je suis patient moaaaaaaaa big_smile:D
a++

Hors ligne

#17 21-12-2009 11:29:20

inter-rupteur
Membre
Inscription : 25-08-2009
Messages : 14

Re : Pb avec update

lol !!!

Bon je travaille dessus là, je vous exposerai mes travaux d'ici peu !!! big_smile

Hors ligne

#18 21-12-2009 22:31:09

inter-rupteur
Membre
Inscription : 25-08-2009
Messages : 14

Re : Pb avec update

salut à tous !!

ouf !!!!! J'ai enfin trouvé en me creusant les meninges !!!! big_smile: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

#19 21-12-2009 23:08:07

Ralph303
Membre
Lieu : St-Cyr l'Ecole
Inscription : 30-05-2009
Messages : 98
Site Web

Re : Pb avec update

Cool !

Mais pour améliorer la lisibilité de ton code tu peux utiliser les simples quotes:


echo '<input type="submit" name="button" id="submit" value="submit" />';
 

Ralph303

Hors ligne

#20 21-12-2009 23:27:13

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Pb avec update

pour amélioré la lisibilité de ton code, tu aurais pu evité d'écrire un roman big_smile:D


<?php
  $conn = mysql_connect("localhost","root","");
  mysql_select_db("db",$conn);
  while(list($id,$a,$b,$c,$d) = mysql_fetch_array(mysql_query("SELECT * FROM test"))){
    mysql_query("update test SET id='$id', A='$a-$d', B='$b', C='$c', D='$d' WHERE id='$id'";)
  }
  mysql_close($conn);
?>
 

la même chose sans les affichage wink

a++

Dernière modification par Pierrot (21-12-2009 23:48:42)

Hors ligne

#21 22-12-2009 00:08:25

inter-rupteur
Membre
Inscription : 25-08-2009
Messages : 14

Re : Pb avec update

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 !!! cool

A++

Hors ligne

Pied de page des forums