Fonction [UPDATE] qui ne fonctionne plus

Eléphanteau du PHP | 34 Messages

20 mars 2008, 16:56

Bonjour a tous,

Voilà, depuis 3 jours, mes requette avec la fonction "UPDATE" ne veulent plus fonctionner.
Je tiens a preciser que ca fais 3 ans que j'ai le site et que ca a toujours marché comme ca.


Je vais chercher les infos :
$sql = 'SELECT user, m1, m2, m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16,m17,m18,m19,m20,m21,m22,m23,m24,m25,m26,m27,m28,m29,m30 FROM class_Colin_DIRT_2008 ORDER BY user ASC';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

echo "<table><tr><td>Pilote</td><td>m1</td><td>m2</td><td>m3</td><td>m4</td><td>m5</td><td>m6</td><td>m7</td><td>m8</td><td>m9</td><td>m10</td><td>m11</td><td>m12</td><td>m13</td><td>m14</td><td>m15</td><td>m16</td><td>m17</td><td>m18</td><td>m19</td><td>m20</td><td>m21</td><td>m22</td><td>m23</td><td>m24</td><td>m25</td><td>m26</td><td>m27</td><td>m28</td><td>m29</td><td>m30</td></tr> ";
while($data = mysql_fetch_assoc($req))
    {

echo '<form method="POST" action="zadd-class.php">
<tr><td><input type="text" name="user" size="4" value="'.$data['user'].'"></td>
<td><input type="text" name="m1" size="1" value="'.$data['m1'].'">   </td>
<td><input type="text" name="m2" size="1" value="'.$data['m2'].'">   </td>
<td><input type="text" name="m3" size="1" value="'.$data['m3'].'">   </td>
<td><input type="text" name="m4" size="1" value="'.$data['m4'].'">   </td>
<td><input type="text" name="m5" size="1" value="'.$data['m5'].'">   </td>
<td><input type="text" name="m6" size="1" value="'.$data['m6'].'">   </td>
<td><input type="text" name="m7" size="1" value="'.$data['m7'].'">   </td>
<td><input type="text" name="m8" size="1" value="'.$data['m8'].'">   </td>
<td><input type="text" name="m9" size="1" value="'.$data['m9'].'">   </td>
<td><input type="text" name="m10" size="1" value="'.$data['m10'].'">   </td> 
<td><input type="text" name="m11" size="1" value="'.$data['m11'].'">   </td>
<td><input type="text" name="m12" size="1" value="'.$data['m12'].'">   </td>
<td><input type="text" name="m13" size="1" value="'.$data['m13'].'">   </td>
<td><input type="text" name="m14" size="1" value="'.$data['m14'].'">   </td>
<td><input type="text" name="m15" size="1" value="'.$data['m15'].'">   </td>
<td><input type="text" name="m16" size="1" value="'.$data['m16'].'">   </td>
<td><input type="text" name="m17" size="1" value="'.$data['m17'].'">   </td>
<td><input type="text" name="m18" size="1" value="'.$data['m18'].'">   </td>
<td><input type="text" name="m19" size="1" value="'.$data['m19'].'">   </td>
<td><input type="text" name="m20" size="1" value="'.$data['m20'].'">   </td>
<td><input type="text" name="m21" size="1" value="'.$data['m21'].'">   </td>
<td><input type="text" name="m22" size="1" value="'.$data['m22'].'">   </td>
<td><input type="text" name="m23" size="1" value="'.$data['m23'].'">   </td>
<td><input type="text" name="m24" size="1" value="'.$data['m24'].'">   </td>
<td><input type="text" name="m25" size="1" value="'.$data['m25'].'">   </td>
<td><input type="text" name="m26" size="1" value="'.$data['m26'].'">   </td>
<td><input type="text" name="m27" size="1" value="'.$data['m27'].'">   </td>
<td><input type="text" name="m28" size="1" value="'.$data['m28'].'">   </td>
<td><input type="text" name="m29" size="1" value="'.$data['m29'].'">   </td>
<td><input type="text" name="m30" size="1" value="'.$data['m30'].'">   </td>
<td><input type="submit" value="Modifier" name="envoyer"></form></td></tr>';
    }
echo "</table>";
Ensuite, je modifie et je fais mon update
$id=$_POST['id'];

include("../db/db.php");
$st1 = ($m1+$m2+$m3+$m4+$m5+$m6+$m7+$m8+$m9+$m10);
$st2 = ($m11+$m12+$m13+$m14+$m15+$m16+$m17+$m18+$m19+$m20);
$st3 = ($m21+$m22+$m23+$m24+$m25+$m26+$m27+$m28+$m29+$m30);
$total = ($st1+$st2+$st3);
$sql = "UPDATE class_Colin_DIRT_2008 SET m1='$m1', m2='$m2', m3='$m3', m4='$m4', m5='$m5', m6='$m6', m7='$m7', m8='$m8', m9='$m9', m10='$m10',m11='$m11', m12='$m12', m13='$m13', m14='$m14', m15='$m15', m16='$m16', m17='$m17', m18='$m18', m19='$m19', m20='$m20',m21='$m21', m22='$m22', m23='$m23', m24='$m24', m25='$m25', m26='$m26', m27='$m27', m28='$m28', m29='$m29', m30='$m30', st1='$st1', st2='$st2', st3='$st3', total='$total' WHERE user = '$user'";


echo("<p>". $sql ."</p>\n");
$mise_a_jour = mysql_query($sql);
if($mise_a_jour)
et c'est là ou j'ai mon probleme, car le "user" est codé maintenant.
Au lieu d'avoir "Paul", j'ai un NDpzZWJmOjY1ZmJlZjA1ZTAxZmFjMzkwY2IzZmEwNzNmYjNlOGNmOjEwOjowOjA6MDowOkFlb2x1czo0MDk2

Voici ce que j'ai :

UPDATE class_Colin_DIRT_2008 SET user='NDpzZWJmOjY1ZmJlZjA1ZTAxZmFjMzkwY2IzZmEwNzNmYjNlOGNmOjEwOjowOjA6MDowOkFlb2x1czo0MDk2', m1='', m2='', m3='', m4='1', m5='1', m6='', m7='', m8='', m9='', m10='',m11='', m12='', m13='', m14='', m15='', m16='', m17='', m18='', m19='', m20='',m21='', m22='', m23='', m24='', m25='', m26='', m27='', m28='', m29='', m30='', st1='2', st2='0', st3='0', total='2' WHERE user = 'NDpzZWJmOjY1ZmJlZjA1ZTAxZmFjMzkwY2IzZmEwNzNmYjNlOGNmOjEwOjowOjA6MDowOkFlb2x1czo0MDk2'

Vos infos on été ajoutées.



Heu, c'est quoi le probleme avec le "user" car je comprends pas bien là ...........

D'avance merci
http://www.racegamers.com
Championnat offline sur tous les jeux de sport mecanique

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 mars 2008, 17:30

Elle sort d'où ta variable $user ? elle vient de $_POST ? de $_GET ? de $_SESSION ? de $_COOKIE ? elle a été déclarée au préalable ? elle n'a pas été modifiée entre sa déclaration et son usage ? le script "db.php" ne l'affecte pas ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 34 Messages

20 mars 2008, 17:40

Elle vient de la premiere requette (select user .......)
Elle est ensuite envoyé comme toutes les autres infos (m1, m2 etc .....) par un formulaire en "POST" puis reafiché dans un tableau.
Là, on modifie les m1 , m2 ...... et on fais le UPDATE.
Sauf que là, les valeurs des m1 .... sont correcte, mais le user a disparu en une suite de chiffre et de lettre user = 'NDpzZWJmOjY1ZmJlZjA1ZTAxZmFjMzkwY2IzZmEwNzNmYjNlOGNmOjEwOjowOjA6MDowOkFlb2x1czo0MDk2'
http://www.racegamers.com
Championnat offline sur tous les jeux de sport mecanique

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 mars 2008, 18:08

Donc dans ton champ, tu as bien "Paul" ? quelle est la valeur de $_POST['user'] ? (affiche le avec un echo :))
Affiche également $user pour voir quelle valeur il peut avoir et regarde s'il ne change pas en fonction de si tu l'affiches avant ou après le include("../db/db.php") par exemple...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 34 Messages

20 mars 2008, 18:30

Alors là, c'est vraiment bisare ..............

$data['user'] => Paul

$_POST['user'] => Rien du tout, champ vide

$user => NDpzZWJmOjY1ZmJlZjA1ZTAxZmFjMzkwY2IzZmEwNzNmYjNlOGNmOjEwOjowOjA6MDowOkFlb2x1czo0MDk2



C'est quoi ce truc de fou ?!?!?! ........... :shock:
http://www.racegamers.com
Championnat offline sur tous les jeux de sport mecanique

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 mars 2008, 18:40

Difficile à dire.... Montre nous le code complet de ta page zadd-class.php (logiquement dans celle-ci, une fois les données du formulaire envoyées, $_POST['user'] devrait contenir la bonne valeur... tu peux également faire un print_r($_POST) pour vérifier ce qu'il contient après la soumission.. )
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 34 Messages

20 mars 2008, 18:59

Encore MERCI de ton aide, VRAIMENT 100000000000000000 MERCI

Bon, voici les codes des 3 fichiers

db.php
$db = mysql_connect('sql6', 'XXXX', 'XXXX');
mysql_select_db('racegamesite2',$db);

class.php
<?php

include("../db/db.php");

$sql = 'SELECT user, m1, m2, m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16,m17,m18,m19,m20,m21,m22,m23,m24,m25,m26,m27,m28,m29,m30 FROM class_Colin_DIRT_2008 ORDER BY user ASC';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

echo "<table><tr><td>Pilote</td><td>m1</td><td>m2</td><td>m3</td><td>m4</td><td>m5</td><td>m6</td><td>m7</td><td>m8</td><td>m9</td><td>m10</td><td>m11</td><td>m12</td><td>m13</td><td>m14</td><td>m15</td><td>m16</td><td>m17</td><td>m18</td><td>m19</td><td>m20</td><td>m21</td><td>m22</td><td>m23</td><td>m24</td><td>m25</td><td>m26</td><td>m27</td><td>m28</td><td>m29</td><td>m30</td></tr> ";
while($data = mysql_fetch_assoc($req))
    {

echo '<form method="POST" action="zadd-class.php">
<tr><td><input type="text" name="user" size="4" value="'.$data['user'].'"></td>
<td><input type="text" name="m1" size="1" value="'.$data['m1'].'">   </td>
<td><input type="text" name="m2" size="1" value="'.$data['m2'].'">   </td>
<td><input type="text" name="m3" size="1" value="'.$data['m3'].'">   </td>
<td><input type="text" name="m4" size="1" value="'.$data['m4'].'">   </td>
<td><input type="text" name="m5" size="1" value="'.$data['m5'].'">   </td>
<td><input type="text" name="m6" size="1" value="'.$data['m6'].'">   </td>
<td><input type="text" name="m7" size="1" value="'.$data['m7'].'">   </td>
<td><input type="text" name="m8" size="1" value="'.$data['m8'].'">   </td>
<td><input type="text" name="m9" size="1" value="'.$data['m9'].'">   </td>
<td><input type="text" name="m10" size="1" value="'.$data['m10'].'">   </td> 
<td><input type="text" name="m11" size="1" value="'.$data['m11'].'">   </td>
<td><input type="text" name="m12" size="1" value="'.$data['m12'].'">   </td>
<td><input type="text" name="m13" size="1" value="'.$data['m13'].'">   </td>
<td><input type="text" name="m14" size="1" value="'.$data['m14'].'">   </td>
<td><input type="text" name="m15" size="1" value="'.$data['m15'].'">   </td>
<td><input type="text" name="m16" size="1" value="'.$data['m16'].'">   </td>
<td><input type="text" name="m17" size="1" value="'.$data['m17'].'">   </td>
<td><input type="text" name="m18" size="1" value="'.$data['m18'].'">   </td>
<td><input type="text" name="m19" size="1" value="'.$data['m19'].'">   </td>
<td><input type="text" name="m20" size="1" value="'.$data['m20'].'">   </td>
<td><input type="text" name="m21" size="1" value="'.$data['m21'].'">   </td>
<td><input type="text" name="m22" size="1" value="'.$data['m22'].'">   </td>
<td><input type="text" name="m23" size="1" value="'.$data['m23'].'">   </td>
<td><input type="text" name="m24" size="1" value="'.$data['m24'].'">   </td>
<td><input type="text" name="m25" size="1" value="'.$data['m25'].'">   </td>
<td><input type="text" name="m26" size="1" value="'.$data['m26'].'">   </td>
<td><input type="text" name="m27" size="1" value="'.$data['m27'].'">   </td>
<td><input type="text" name="m28" size="1" value="'.$data['m28'].'">   </td>
<td><input type="text" name="m29" size="1" value="'.$data['m29'].'">   </td>
<td><input type="text" name="m30" size="1" value="'.$data['m30'].'">   </td>
<td><input type="submit" value="Modifier" name="envoyer"></form></td></tr>';
    }
echo "</table>";

echo "<p><br><br>Ceci est la page pour la mise a jour du classement des pilotes";  

echo '<hr>Ajout d\'un nouvelle user dans le classement<p><table><form method="POST" action="zadd-user.php">
<tr><td><input type="text" name="user" value="'.$data['user'].'"></td>
<td><input type="submit" value="Ajout" name="envoyer"></form></td></tr>';

echo "</table>";




mysql_close();
?>

zadd-class.php
<?
// On commence par récupérer les champs
$id=$_POST['id'];

include("../db/db.php");
$st1 = ($m1+$m2+$m3+$m4+$m5+$m6+$m7+$m8+$m9+$m10);
$st2 = ($m11+$m12+$m13+$m14+$m15+$m16+$m17+$m18+$m19+$m20);
$st3 = ($m21+$m22+$m23+$m24+$m25+$m26+$m27+$m28+$m29+$m30);
$total = ($st1+$st2+$st3);
$sql = "UPDATE class_Colin_DIRT_2008 SET user='$data[user]', m1='$m1', m2='$m2', m3='$m3', m4='$m4', m5='$m5', m6='$m6', m7='$m7', m8='$m8', m9='$m9', m10='$m10',m11='$m11', m12='$m12', m13='$m13', m14='$m14', m15='$m15', m16='$m16', m17='$m17', m18='$m18', m19='$m19', m20='$m20',m21='$m21', m22='$m22', m23='$m23', m24='$m24', m25='$m25', m26='$m26', m27='$m27', m28='$m28', m29='$m29', m30='$m30', st1='$st1', st2='$st2', st3='$st3', total='$total' WHERE user = '$user'";


echo("<p>". $sql ."</p>\n");
$mise_a_jour = mysql_query($sql);
if($mise_a_jour)
{
?>
<p>Vos infos on été ajoutées.</p>
<a href="class.php">Retour a la page des classements</a>
<?php
}
else
{
?>
<p>Un incident technique s'est produit. history.go(-1)</p>
<?php
}
?>

voilà, c'est les 3 fichiers pour 1-> se connecter, 2-> recuperer les infos et les modifier, 3-> mettre a jour les infos modifié

a savoir aussi qu'avant, tout marchais bien (ca marche plus depuis 3 ou 4 jours)
http://www.racegamers.com
Championnat offline sur tous les jeux de sport mecanique

Eléphanteau du PHP | 34 Messages

24 mars 2008, 22:12

Personne ne peux m'aider ? :oops: :cry:
http://www.racegamers.com
Championnat offline sur tous les jeux de sport mecanique

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

25 mars 2008, 15:54

Dans ta page "zadd-class.php" ajoute le code suivant pour afficher le contenu de $_POST :
echo '<pre>';
print_r($_POST);
echo '</pre>';
et vérifies la valeur de l'index "user". Il devrait normalement correspondre à ce qui a été saisi dans le formulaire. Si c'est bien le cas, remplace dans ta requête le $user par un $_POST['user'] qui est de toute façon plus propre et plus sécurisé (toujours préciser d'où proviennent les variables que l'on utilise permet d'éviter de devoir activer le register globals, cf. la FAQ pour plus d'infos)

C'est également valable pour toutes les variables que tu récupères en post : $st1 = ($_POST['m1']+$_POST['m2']+...); , en get, en session ou via un cookie le cas échéant :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...