probleme de requette php

probleme de requette php - PHP - Programmation

Marsh Posté le 03-10-2005 à 10:15:06    

salut à tous,
 
j'(ai un piti probleme de requette php que je ne comprend pas  :cry:  
 
la requette est la suivante : (de mémoire)
$query = "update compte set solde='$new_solde' where (id='1')";
mysql_query($query);
 
id est l'identificateur du compte à modifier
 
le probleme : elle s'exécute tres bien sous sql dans easyphp quand je la tape manuellement, mais quand je l'éxécute dans un formulaire, tous les soldes de tous les comptes sont mis à jour (il y a deux comptes seulement pour le moment  :D )
c'est comme si la close where n'étaity pas prise en compte... quelle est mon erreur ?
 
merci de votre attention
 
++  :hello:

Reply

Marsh Posté le 03-10-2005 à 10:15:06   

Reply

Marsh Posté le 03-10-2005 à 10:19:24    

zavatha a écrit :

la requette est la suivante : (de mémoire)


 
Et dans le code, en vrai, c'est quoi?:o

Reply

Marsh Posté le 03-10-2005 à 10:41:22    

ok
voici toute la partie de mon script contenant la requette
je précise que l'id du compte que j'envoie à mon formulaire est la bonne (vérifié par un echo...)
 
<?php  
 
$time = time();
 
/***insertion des opérations en database***/
$query = "update compte set solde = '$new_solde', previsionnel = '$new_prev', last_time = '$time' where (id = '$id')";
echo "requette envoyée : $query</br>";
mysql_query($query) or die("erreur  : ".mysql_error($link));
 
/***affichage des insertions effectuées***/
echo "id du compte : $id</br>";
echo "Modification effectuée : </br></br>";
echo "<u>nouveau solde </u> : $new_solde</br><u>nouveau prévisionnel</u> : $new_prev</br>";
?>

Reply

Marsh Posté le 03-10-2005 à 10:42:13    

et ton affichage de la requête donne quoi?

Reply

Marsh Posté le 03-10-2005 à 10:42:22    

Ca sort d'où $id ?

Reply

Marsh Posté le 03-10-2005 à 10:50:46    

$id est un parametre récupéré en $post (passé dans l'URL)
 
voici ce que donne l'echo de ma requette :  
 
update compte set solde = '115', previsionnel = '90', last_time = '1128333232' where (id = '1')
 
avec une valeur pour $id qui change bien en fonction du compte sélectionné


Message édité par zavatha le 03-10-2005 à 10:54:00
Reply

Marsh Posté le 03-10-2005 à 10:51:50    

et dans ta table t'as bien qu'un seul id égal à 1?[:petrus75]

Reply

Marsh Posté le 03-10-2005 à 10:54:33    

Reply

Marsh Posté le 03-10-2005 à 10:57:36    


alors c'est de la magie, à priori.[:petrus75]

Reply

Marsh Posté le 03-10-2005 à 11:08:15    

alors c'est de la magie, à priori.[:petrus75]
 
bin oui, pour moi en tout cas, c'est pour cela que je viens ici en dernier recours...
je vous tiens au courant si je trouve la solution et repasserais vois si qqu'un a une idée
 
merci en tout cas...
 
++

Reply

Marsh Posté le 03-10-2005 à 11:08:15   

Reply

Marsh Posté le 03-10-2005 à 12:57:08    

echo mysql_affected_rows() te balance 2, donc ?

Reply

Marsh Posté le 03-10-2005 à 14:30:20    

sielfried a écrit :

echo mysql_affected_rows() te balance 2, donc ?


 
non, ca me renvoie 1, et pourtant il y a bien deux soldes modifies dans ma table, c'est à n'y rien comprendre  :cry:  
 
v me mettre à l'asp moa  
 :hello: ===>

Reply

Marsh Posté le 03-10-2005 à 14:32:45    

zavatha a écrit :

non, ca me renvoie 1, et pourtant il y a bien deux soldes modifies dans ma table, c'est à n'y rien comprendre  :cry:  
 
v me mettre à l'asp moa  
 :hello: ===>


 
Tu vérifies comment qu'il y a quelquechose de modifié dans la table? :o

Reply

Marsh Posté le 03-10-2005 à 14:47:09    

skeye a écrit :

Tu vérifies comment qu'il y a quelquechose de modifié dans la table? :o


deux solutions :  
1-je consulte le solde de chaque compte avec mon client (en cours de developpement  :heink: )
2-je vais directement afficher le contenu de ma table avec phpmyadmin  :sweat:  
 
merci pour ton intérêt en tt cas  :D  
 

Reply

Marsh Posté le 03-10-2005 à 14:49:06    

Si ca dit qu'il y a qu'1 row affectée c'est que c'est le cas ... T'es sur que ton script est pas appelé 2 fois ?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 03-10-2005 à 15:20:35    

esox_ch a écrit :

Si ca dit qu'il y a qu'1 row affectée c'est que c'est le cas ... T'es sur que ton script est pas appelé 2 fois ?


bien vu je vais vérifier ca... je parcours mes scripts et je vous donne des news...

Reply

Marsh Posté le 03-10-2005 à 16:11:36    

ct pas ca... j'appelle mon script à partir d'un formulaire que voici :  
 
<i>
include("fonctions.php" );
 $link = connect_db();
 if (isset($_GET["compte"])) $id_compte = $_GET["compte"];
  else $id_compte = 0;
?>
 
<html><body bgcolor = "<?php echo $color1; ?>">
<table width = "100%" height = "100%" align = "center" bgcolor = "<?php echo $color1; ?>">
<tr><td valign = "center">
<table  align = "center" width = "600pixels">
<form action='action3.php?compte=<?php echo $id_compte;?>' method="post">
<tr align = "center" height = "20pixels">
<?php
  $query = "select solde, previsionnel from compte where(id = '$id_compte')";
  $result = mysql_query($query);
  $rows = mysql_fetch_array($result);
  mysql_free_result($result);
  $solde = $rows[0];
  $previsionnel = $rows[1];
     
  echo "<td bgcolor = $color2><font color = \"white\">";
  echo "<b>détail des soldes actuels...</b></br>prévisionnel : <b>$previsionnel</b></br>solde effectif : <b>$solde</b>";
  echo "</font></td></tr><tr align = \"center\">";
  echo "<td bgcolor = $color2><font color = \"white\">";
  echo "nouveau solde : <input type=\"text\" name=new_solde value = $solde> nouveau prévisionnel : <input type=\"text\" name=new_prev value = $previsionnel>";
  echo "</font></td></tr>";
?>
 <tr><td align = "center" bgcolor = <?php echo $color2; ?>><input type="submit" value="VALIDER"></td></tr>
</i>
 
donc à priori mon script est appelé une seule fois...
 
d'autres idées ? perso je sèche :(

Reply

Marsh Posté le 03-10-2005 à 16:38:40    

Va faloir que tu sauvegardes dans un fichier ou une base de donnée l'ensemble des appel à ton script avec les valeurs de $_GET,$_POST ... (enfin jsute ce qu'est utilisé par ton script) ainsi que le texte des requettes SQL exécuté par le script.
 
Comme ça, tu pouras savoir si ton script est bein appellé juste une fois ou plusieurs et si le script n'exécute pas une requette parasite.
 
C'est sur qu'il y a une erreur quelque part, et vu que t'arrive pas à la voir en lisant simplement le code source, il faut que tu te donnes les moyens de tracer le script le plus finement possible.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed