Update données MySQL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Update données MySQL

par dunbar » 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

par dunbar » 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

par Ajoloca » 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 ???

par dunbar » 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 ?

par Ajoloca » 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...

par dunbar » 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

par Ajoloca » 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.

par dunbar » 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

par dunbar » 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

par Ajoloca » 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''" ;

par dunbar » 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 :!:

par Ajoloca » 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 ???

par dunbar » 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

par Ajoloca » 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");
}

Update données MySQL

par dunbar » 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: