probleme de requette php - PHP - Programmation
Marsh Posté le 03-10-2005 à 10:19:24
ReplyMarsh 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>";
?>
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é
Marsh Posté le 03-10-2005 à 11:08:15
alors c'est de la magie, à priori.
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...
++
Marsh Posté le 03-10-2005 à 12:57:08
ReplyMarsh 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
v me mettre à l'asp moa
===>
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 |
Tu vérifies comment qu'il y a quelquechose de modifié dans la table?
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? |
deux solutions :
1-je consulte le solde de chaque compte avec mon client (en cours de developpement )
2-je vais directement afficher le contenu de ma table avec phpmyadmin
merci pour ton intérêt en tt cas
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 ?
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...
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
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.
Marsh Posté le 03-10-2005 à 10:15:06
salut à tous,
j'(ai un piti probleme de requette php que je ne comprend pas
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 )
c'est comme si la close where n'étaity pas prise en compte... quelle est mon erreur ?
merci de votre attention
++