Update données MySQL

ViPHP
ViPHP | 2291 Messages

26 janv. 2007, 13:22

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:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 1961 Messages

26 janv. 2007, 13:32

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");
}
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

ViPHP
ViPHP | 2291 Messages

26 janv. 2007, 13:47

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 ??? :cry:

Merci
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 1961 Messages

26 janv. 2007, 14:30

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

Code : Tout sélectionner

$sql_id = " WHERE IDot = '2'"
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 ???
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

ViPHP
ViPHP | 2291 Messages

26 janv. 2007, 14:40

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

Code : Tout sélectionner

$sql_id = " WHERE IDot = '2'"
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

#-o
Je comprend pas excuse moi :!:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 1961 Messages

26 janv. 2007, 14:49

Tu trouves normal les deux WHERE ???

Code : Tout sélectionner

WHERE IDot = ' WHERE IDot = '2''" ;
Un comme clause et l'autre comme valeur ???
de plus le nombre d'apostrophes

Code : Tout sélectionner

= ' WHERE IDot = '2''" ;
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

ViPHP
ViPHP | 2291 Messages

26 janv. 2007, 14:54

Tu trouves normal les deux WHERE ???

Code : Tout sélectionner

WHERE IDot = ' WHERE IDot = '2''" ;
Un comme clause et l'autre comme valeur ???
de plus le nombre d'apostrophes

Code : Tout sélectionner

= ' WHERE IDot = '2''" ;


:oops: Oui juste sorry
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 2291 Messages

26 janv. 2007, 15:01

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 ? :wink:

Merci
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 1961 Messages

26 janv. 2007, 15:03

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.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

ViPHP
ViPHP | 2291 Messages

26 janv. 2007, 15:37

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
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 1961 Messages

26 janv. 2007, 15:43

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...
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

ViPHP
ViPHP | 2291 Messages

26 janv. 2007, 15:59

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 ?
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 1961 Messages

26 janv. 2007, 16:07

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 ???
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

ViPHP
ViPHP | 2291 Messages

26 janv. 2007, 16:16

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 :wink:
Pour le reste je test

Merci
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 2291 Messages

26 janv. 2007, 17:21

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 :wink:
Pour le reste je test

Merci
RE

J'ai modifier le nom des mes champs et ça fonctionne

Merci pour le coup de main @+ :D
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.