Page 1 sur 1
modification non effectué
Posté : 27 oct. 2008, 16:32
par Cypher_PHP
bonjour
après envoyé le formulaire dans lequel je modifie les données, ceux ci ne sont pas modifiés dans la base.
je cherche ce problème.
un problème de syntaxe?
merci de vos réponses
voici le code source
// -------modification des données du formulaire modif1_tuteur.php -------------------------
if(isset($_POST['modif_tuteur']))
{
$sql_update = "UPDATE tuteur SET nom = '".$_POST['nom']."', prenom = '".$_POST['prenom']."' WHERE id_tuteur = '".$_POST['id_tuteur']."' ";
$req_update = mysql_query($sql_update)or die('Erreur SQL !'.$sql_update.'<br>'.mysql_error());
}
Posté : 27 oct. 2008, 16:36
par charabia
Hello !
Toutes les valeurs sont-elles correctement récupérées ?
$sql_update = "UPDATE tuteur SET nom = '".$_POST['nom']."', prenom = '".$_POST['prenom']."' WHERE id_tuteur = ".$_POST['id_tuteur'];
l'id_tuteur est un entier, il ne faut pas l'entourer de simple quote.
Posté : 27 oct. 2008, 16:37
par Victor BRITO
As-tu des messages d'erreur ?
De plus, je te conseille vivement d'utiliser mysql_real_escape_string() pour te prémunir d'attaques par injonction SQL.
Enfin, $_POST['id_tuteur'] a-t-elle une valeur valide ?
Posté : 27 oct. 2008, 16:42
par Cypher_PHP
voici le message d'erreur:
Code : Tout sélectionner
Erreur SQL !UPDATE tuteur SET nom = 'BOUCHONNEAU', prenom = 'GILLEs' WHERE id_tuteur =
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
// -------modification des données du formulaire modif1_tuteur.php -------------------------
if(isset($_POST['modif_tuteur']))
{
$sql_update = "UPDATE tuteur SET nom = '".$_POST['nom']."', prenom = '".$_POST['prenom']."' WHERE id_tuteur = ".$_POST['id_tuteur']." ";
$req_update = mysql_query($sql_update)or die('Erreur SQL !'.$sql_update.'<br>'.mysql_error());
}
voici la structure BD
CREATE TABLE `tuteur` (
`id_tuteur` int(3) NOT NULL auto_increment,
`nom` varchar(50) NOT NULL,
`prenom` varchar(50) NOT NULL,
KEY `id_tuteur` (`id_tuteur`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=45 ;
Posté : 27 oct. 2008, 16:43
par mere-teresa
Que donne echo $sql_update; ?
Posté : 27 oct. 2008, 16:46
par Victor BRITO
Il est fort probable que $_POST['id_tuteur'] soit vide.
Posté : 27 oct. 2008, 16:55
par Cypher_PHP
vide???
oh non!!
dans le formulaire, il m'affiche tous les données récupérées compris l'id_tuteur
Posté : 27 oct. 2008, 17:02
par Victor BRITO
Pourrais-tu nous montrer l'affichage généré par echo $sql_update ?

Posté : 27 oct. 2008, 17:06
par Cypher_PHP
je viens de tester en remplaçant par un nombre entier
avec cette syntaxe, ca marche
//$id_tuteur = $_POST['id_tuteur'];
if(isset($_POST['modif_tuteur']))
{
$sql_update = "UPDATE tuteur SET nom = '".mysql_real_escape_string($nom)."', prenom = '".mysql_real_escape_string($prenom)."'
WHERE id_tuteur = 39 ";
$req_update = mysql_query($sql_update)or die('Erreur SQL ! '.$sql_update.'<br>'.mysql_error());
}
donc probablement un pb de quotes?
Posté : 27 oct. 2008, 17:11
par Victor BRITO
je viens de tester en remplaçant par un nombre entier
avec cette syntaxe, ca marche
//$id_tuteur = $_POST['id_tuteur'];
if(isset($_POST['modif_tuteur']))
{
$sql_update = "UPDATE tuteur SET nom = '".mysql_real_escape_string($nom)."', prenom = '".mysql_real_escape_string($prenom)."'
WHERE id_tuteur = 39 ";
$req_update = mysql_query($sql_update)or die('Erreur SQL ! '.$sql_update.'<br>'.mysql_error());
}
donc probablement un pb de quotes?
Non. Le problème doit certainement venir de la valeur retournée par $_POST['id_tuteur'].
Si tu effectues un echo $_POST['id_tuteur'], qu'est-ce que ça affiche ?
Posté : 27 oct. 2008, 17:16
par Cypher_PHP
non, il n'affiche pas le résultat de l'id
bonne idée de tester cela
Posté : 27 oct. 2008, 17:17
par charabia
Regarde donc côté formulaire si tu ne t'es pas trompé de nom pour le champ.
Posté : 27 oct. 2008, 17:20
par Cypher_PHP
ca y est
bravo à toi
un grand génie
un erreur dans le formulaire
j'ai tapé trop vite : id au lieu d'id_tuteur
merci beaucoup
je mets en résolu
Posté : 27 oct. 2008, 17:21
par Victor BRITO
Regarde donc côté formulaire si tu ne t'es pas trompé de nom pour le champ.
Voire si aucun champ correspondant n'existe (fût-il de type hidden).
Édition : grillé.