Page 1 sur 1

Fonction [UPDATE] qui ne fonctionne plus

Posté : 20 mars 2008, 16:56
par racegamers
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

Posté : 20 mars 2008, 17:30
par Ryle
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 ?

Posté : 20 mars 2008, 17:40
par racegamers
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'

Posté : 20 mars 2008, 18:08
par Ryle
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...

Posté : 20 mars 2008, 18:30
par racegamers
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:

Posté : 20 mars 2008, 18:40
par Ryle
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.. )

Posté : 20 mars 2008, 18:59
par racegamers
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)

Posté : 24 mars 2008, 22:12
par racegamers
Personne ne peux m'aider ? :oops: :cry:

Posté : 25 mars 2008, 15:54
par Ryle
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 :)