Page 1 sur 1
Update données MySQL
Posté : 26 janv. 2007, 13:22
par dunbar
Bonjour,
Je voudrais pouvoir modifier des données de ma TABLE mais je ne comprend pas pourquoi il n'éffectue pas les modifications ?
Voici mon code :
$sql = " UPDATE
MA_TABLE
SET
ref_client = '".$_POST['ref_client']."'
WHERE
IDot = '".$_GET['IDot']."'" ;
$result = mysql_query($sql) or die("Erreur MySQL : Impossible de sauvegarder la/les modification/s");
Y aurais t'il une erreur ?
D'avance merci:lol:
Posté : 26 janv. 2007, 13:32
par Ajoloca
Bonjour,
Quand tu accèdes à MySQL, il est judicieux de faire afficher la requête et éventuellement de l'exécuter en direct (phpMyAdmin, client mysql, MySQL Query browser, ...)
De cette manière tu est sur que ta requête est bonne.
Je ne sais pas si tu le fais avant, mais je ne vois pas de tests sur $_GET['ref_client'] et $_GET['IDot'].
Avec cette façon d'écrire (afficher la requête) tu pourras voir ce que tu envoies à MySQL (en cas d'erreur).
Si tu n'as pas d'erreur, c'est vers les données de ta table qu'il faudra te tourner.
$sql = " UPDATE
MA_TABLE
SET
ref_client = '".$_POST['ref_client']."'
WHERE
IDot = '".$_GET['IDot']."'" ;
if(false ===($result = mysql_query($sql))) {
die("Erreur MySQL :<br />" . $sql . "<br />" . "Impossible de sauvegarder la/les modification/s");
}
Posté : 26 janv. 2007, 13:47
par dunbar
Bonjour,
Voici mon fichier modification.php
<?php
$sql_id= (isset($_GET['IDot'])) ? " WHERE IDot = '".$_GET['IDot']."'" : "";
$select = "SELECT
*
FROM
MA_TABLE"
.$sql_id;
$result = mysql_query($select,$sql) or die ('Erreur de liens : '.mysql_error());
$total = mysql_num_rows($result);
$row = mysql_fetch_array($result);
?>
<html>
<head>
<meta http-equiv="Content-Language" content="fr-be">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Modification prestation</title>
</head>
<body>
<body background="../../img/grd-4px.gif">
<form method="POST" action="modif2.php">
<td width="69" valign="top"><b>ID :</b></td>
<?php echo '<td valign="top">'.$row["IDot"].'</td>'; ?>
<td width="69" valign="top"><b>Référence :</b></td>
<?php echo '<td valign="top"><input type="text" name = ["ref_client"] value = '.$row["ref_client"].' </input></td>'; ?>
<p><input type="submit" value="Envoyer" name="MOD"></p>
</form>
et voici mon fichier modif2.php
<?php
include "../../connect/fc-phpconnect_tvc.php";
//include "../../Administrator/stat.php";
/* connection à la DB */
$sql_id= (isset($_GET['IDot'])) ? " WHERE IDot = '".$_GET['IDot']."'" : "";
echo $sql = " UPDATE
MA_TABLE
SET
ref_client = '".$_POST['ref_client']."'
WHERE
IDot = '".$sql_id."'" ;
if(false ===($result = mysql_query($sql))) {
die("Erreur MySQL :<br />" . $sql . "<br />" . "Impossible de sauvegarder la/les modification/s");
}
?>
Et je ne reçois aucune erreur mais il n'éffectue pas les modifications
pourquoi ???
Merci
Posté : 26 janv. 2007, 14:30
par Ajoloca
Re,
Tu dois avoir la directive display_errors à Off parce que tu devrais en avoir.
On ne regarde que la partie update.
On va dire que $_GET['IDot'] vaut 2.
Dans
$sql_id= (isset($_GET['IDot'])) ? " WHERE IDot = '".$_GET['IDot']."'" : "";
On va avoir
On va supposer que $_POST['ref_client'] vaut 10035
Dans ta requete ($sql) on va avoir
$sql = " UPDATE
MA_TABLE
SET
ref_client = '10035'
WHERE
IDot = ' WHERE IDot = '2''" ;
Tu ne trouves rien de bizarre ???
Posté : 26 janv. 2007, 14:40
par dunbar
Re,
Tu dois avoir la directive display_errors à Off parce que tu devrais en avoir.
On ne regarde que la partie update.
On va dire que $_GET['IDot'] vaut 2.
Dans
$sql_id= (isset($_GET['IDot'])) ? " WHERE IDot = '".$_GET['IDot']."'" : "";
On va avoir
On va supposer que $_POST['ref_client'] vaut 10035
Dans ta requete ($sql) on va avoir
$sql = " UPDATE
MA_TABLE
SET
ref_client = '10035'
WHERE
IDot = ' WHERE IDot = '2''" ;
Tu ne trouves rien de bizarre ???
Et bin non
Justement ces bien la modif à effectué nouvelle ref = 10035 qui correspond à l'ID 2
Je comprend pas excuse moi

Posté : 26 janv. 2007, 14:49
par Ajoloca
Tu trouves normal les deux WHERE ???
Un comme clause et l'autre comme valeur ???
de plus le nombre d'apostrophes
Posté : 26 janv. 2007, 14:54
par dunbar
Tu trouves normal les deux WHERE ???
Un comme clause et l'autre comme valeur ???
de plus le nombre d'apostrophes

Oui juste sorry
Posté : 26 janv. 2007, 15:01
par dunbar
Alors voici ma requete après modification.
UPDATE MA_TABLESET ref_client = '' WHERE IDot = ''
elle est vide
Et mon code.
$ref = $_POST['ref_client'];
$sql_id= $_GET['IDot'];
echo $sql = " UPDATE
MA_TABLE
SET
ref_client = '".$ref."'
WHERE
IDot = '".$sql_id."'" ;
Il manque un pt truc mais quoi ?
Merci
Posté : 26 janv. 2007, 15:03
par Ajoloca
Re,
Cela veut dire que tu as un PB dans le passage de paramètres.
La page qui appelle celle-ci ne les transmet pas, ou pas sous cette forme ou pas sous ces noms.
Posté : 26 janv. 2007, 15:37
par dunbar
Re,
Cela veut dire que tu as un PB dans le passage de paramètres.
La page qui appelle celle-ci ne les transmet pas, ou pas sous cette forme ou pas sous ces noms.
Y a t'il un moyen de savoir les données transmise ?
Merci
Posté : 26 janv. 2007, 15:43
par Ajoloca
Il faut que tu regardes dans la page appelante.
Comment sont transmises ces variables (actuellement tu en récupères une en $_GET[], l'autre en $_POST[]) c'est bien comme ça que tu les transmets ?
Vérifier que les noms de variables son bien les mêmes ref_client et IDot (attention aux majuscules et minuscules)
Etc...
Posté : 26 janv. 2007, 15:59
par dunbar
Il faut que tu regardes dans la page appelante.
Comment sont transmises ces variables (actuellement tu en récupères une en $_GET[], l'autre en $_POST[]) c'est bien comme ça que tu les transmets ?
Vérifier que les noms de variables son bien les mêmes ref_client et IDot (attention aux majuscules et minuscules)
Etc...
Oui tout me semble correct.
A mon avis il doit y avoir un stud avec IDot parce quand je rentre une idée manuellement (exemple : 557) les modifs fonctionne.
dans mon fichier modification.php
<?php
$sql_détail= (isset($_GET['IDot'])) ? " WHERE IDot = '".$_GET['IDot']."'" : "";
echo $select = "SELECT
IDot, ref_client
FROM
MA_TABLE"
.$sql_détail;
$result = mysql_query($select,$sql) or die ('Erreur de liens : '.mysql_error());
$total = mysql_num_rows($result);
$row = mysql_fetch_array($result);
?>
<html>
<head>
<meta http-equiv="Content-Language" content="fr-be">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Modification prestation</title>
</head>
<body>
<body background="../../img/grd-4px.gif">
<form method="POST" action="modif2.php">
<td width="69" valign="top" ><b>ID :</b></td>
<?php echo '<td valign="top"><input name=["IDot"] value= '.$row["IDot"].' </input></td>'; ?>
<td width="69" valign="top"><b>Référence :</b></td>
<?php echo '<td valign="top"><input name=["ref_client"] value= '.$row["ref_client"].' </input></td>'; ?>
<p><input type="submit" value="Envoyer" name="B1"></p>
</form>
</body>
</html>
je reçois bien la bonne ID mais je ne comprend pas pourquoi il ne la transmet pas à modif2.php ?
Posté : 26 janv. 2007, 16:07
par Ajoloca
D'après ce code,
1 - Tu as des erreurs HTML,
<input name=["IDot"] value= '.$row["IDot"].' </input><td>';
La syntaxe d'un champ input c'est ça
<input name=["IDot"] value= "' . $row["IDot"] . '" /><td>';
Et ceci est valable pour les deux champs
2 - Tes deux variables sont transmises en $_POST[] et toi en récupères une en $_GET[], ça ne te choque pas ???
Posté : 26 janv. 2007, 16:16
par dunbar
D'après ce code,
1 - Tu as des erreurs HTML,
<input name=["IDot"] value= '.$row["IDot"].' </input><td>';
La syntaxe d'un champ input c'est ça
<input name=["IDot"] value= "' . $row["IDot"] . '" /><td>';
Et ceci est valable pour les deux champs
2 - Tes deux variables sont transmises en $_POST[] et toi en récupères une en $_GET[], ça ne te choque pas ???
Merci, pour le $_POST j'avais corriger l'erreur
Pour le reste je test
Merci
Posté : 26 janv. 2007, 17:21
par dunbar
D'après ce code,
1 - Tu as des erreurs HTML,
<input name=["IDot"] value= '.$row["IDot"].' </input><td>';
La syntaxe d'un champ input c'est ça
<input name=["IDot"] value= "' . $row["IDot"] . '" /><td>';
Et ceci est valable pour les deux champs
2 - Tes deux variables sont transmises en $_POST[] et toi en récupères une en $_GET[], ça ne te choque pas ???
Merci, pour le $_POST j'avais corriger l'erreur
Pour le reste je test
Merci
RE
J'ai modifier le nom des mes champs et ça fonctionne
Merci pour le coup de main @+
