Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1124 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MY SQL] Probleme pour mettre a jour une table [résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MY SQL] Probleme pour mettre a jour une table [résolu]

n°1612158
djmath56
Ouayo non de toui
Posté le 16-09-2007 à 23:57:26  profilanswer
 

Alors voila je vous présente mon probleme ....
 
je reçois des données via POST que je compile en array ! donc jusque la tout va bien !  
 
alors apres je veux les mettre a jour dans ma DB !
 
je marque le code suivant :
 

Code :
  1. mysql_query("UPDATE maDB SET $set WHERE pres=$pres" ) or die(mysql_error());


 
et sur la page il me renvoit cette erreur :  
 

Citation :

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 'WHERE pres=romain' at line 1


 
J'ai essayé pas mal de version de mon code mais rien n'y fait c'est toujours le meme message !
 

Code :
  1. mysql_query("UPDATE maDB SET $set WHERE pres=" . $pres) or die(mysql_error());


 
merci à ceux qui me viendront en aide !  :)


Message édité par djmath56 le 17-09-2007 à 00:46:01
mood
Publicité
Posté le 16-09-2007 à 23:57:26  profilanswer
 

n°1612161
flo850
moi je
Posté le 17-09-2007 à 00:06:15  profilanswer
 

les chaines de caractères  ( en Mysql ) doivent etre entre '
 
mysql_query("UPDATE maDB SET $set WHERE pres='$pres'" )

n°1612162
TheRom_S
Posté le 17-09-2007 à 00:07:27  profilanswer
 

met des guillemets
commence par en vouloir à flo qui m'a grillé


---------------
The Rom's, à votre service
n°1612163
djmath56
Ouayo non de toui
Posté le 17-09-2007 à 00:09:20  profilanswer
 

hélas cela donne la meme chose et sa me marque sa :  
 

Citation :

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 'WHERE pres='romain'' at line 1


 
pareil mais avec les guillements en plus xD

n°1612164
TheRom_S
Posté le 17-09-2007 à 00:12:17  profilanswer
 

Ben ton champ pres dans la table, il est bien de type varchar ou text ?
ou alors, il te dit "near" ... ce qui veut dire que  l'erreur est avant le "WHERE" et donc dans le formatage de ton $set certainement


---------------
The Rom's, à votre service
n°1612165
flo850
moi je
Posté le 17-09-2007 à 00:12:18  profilanswer
 

et sinon, tu peux nous faire aficher la requete complete ?  
genre faire $query  ="UPDATE maDB SET $set WHERE pres='$pres'"  
 
on gagnerai du temps ;)

n°1612166
TheRom_S
Posté le 17-09-2007 à 00:13:41  profilanswer
 

haha 1 sec, na !


---------------
The Rom's, à votre service
n°1612167
djmath56
Ouayo non de toui
Posté le 17-09-2007 à 00:15:13  profilanswer
 

Citation :

<?php
$db = mysql_connect("xxx", "xxx", "xxx" );
mysql_select_db("xxx", $db);
 
if (isset($_POST['nom'])) {
    $set = array (
 "nom" => $_POST['nom'],
 "ville" => $_POST['ville'],
 "trick" => $_POST['trick'],
 "skate" => $_POST['skate'],
 "planche" => $_POST['planche'],
 "musique" => $_POST['musique'],
 "aime" => $_POST['aime'],
 "aimepas" => $_POST['aimepas'],
 "extra" => $_POST['extra']);
 $pres = $_POST['pres'];
mysql_query("UPDATE dcdteam_presentation SET $set WHERE pres='$pres'" ) or die(mysql_error());
 ?>


 
alors voici la requete entiere ... mon pres ds la DB est un TEXT .. et sinon la source ds mon fichier c un POST

n°1612168
flo850
moi je
Posté le 17-09-2007 à 00:18:47  profilanswer
 

TheRom_S a écrit :

haha 1 sec, na !


me vengerai

djmath56 a écrit :

Citation :

<?php
$db = mysql_connect("xxx", "xxx", "xxx" );
mysql_select_db("xxx", $db);

 

if (isset($_POST['nom'])) {
    $set = array (
 "nom" => $_POST['nom'],
 "ville" => $_POST['ville'],
 "trick" => $_POST['trick'],
 "skate" => $_POST['skate'],
 "planche" => $_POST['planche'],
 "musique" => $_POST['musique'],
 "aime" => $_POST['aime'],
 "aimepas" => $_POST['aimepas'],
 "extra" => $_POST['extra']);
 $pres = $_POST['pres'];
mysql_query("UPDATE dcdteam_presentation SET $set WHERE pres='$pres'" ) or die(mysql_error());
 ?>

 

alors voici la requete entiere ... mon pres ds la DB est un TEXT .. et sinon la source ds mon fichier c un POST


ta syntaxe des set est fausse

 

tu dois faire UPDATE table SET truc='bidule', machin='caca' WHERE nom='romain"

 

de plus utiliser directement des valeurs issue de post est assez dangereux
si par exmeple $_POST['plance'] contient la valeur '; DROP TABLE dcdteam_presentation; # tu risque d'avoir des soucis


Message édité par flo850 le 17-09-2007 à 00:20:21
n°1612169
djmath56
Ouayo non de toui
Posté le 17-09-2007 à 00:20:05  profilanswer
 

Ouai mais bon j'me disais que comme set est un array et ke le sql est un language de feignasse ...ba j'me disais que sa aurai été bon xD

mood
Publicité
Posté le 17-09-2007 à 00:20:05  profilanswer
 

n°1612170
flo850
moi je
Posté le 17-09-2007 à 00:21:28  profilanswer
 

djmath56 a écrit :

Ouai mais bon j'me disais que comme set est un array et ke le sql est un language de feignasse ...ba j'me disais que sa aurai été bon xD


 
je ne sais pas quoi te repondre. Tu utilise une syntaxe qui est completement pifometrique et tu te demande pourquoi ca marche pas  [:proy]

n°1612171
djmath56
Ouayo non de toui
Posté le 17-09-2007 à 00:24:01  profilanswer
 

Je debute, je m'aide de tuto et donc avec ces tuto g deja creer des scripts (en copier coller) ou la syntaxe était semblable à la mienne et cela fonctionnait donc je sais plus quoi penser xD

n°1612172
TheRom_S
Posté le 17-09-2007 à 00:25:12  profilanswer
 

oui mais non, ça marche pas comme ça : tu peux pas mettre un array comme ça dans la requête. En fait, il faut que tu crée une chaîne de caractère qui corresponde à une requête écrite dans la norme SQL.
 
Donc

Code :
  1. $res = "nom = '".$_POST['nom']."',";
  2. $res+= " ville = '".$_POST['ville']."',";
  3. //toujours avec les guillemets pour les chaines (EDIT : numériques) de caractères
  4. $res += " nombre = ".$_POST['nombre'].","; // pour les numériques ...
  5. // voilà n'oublie pas de générer les espaces et les virgules aux bons endroits


à la fin, ton $res devrait ressembler à

Code :
  1. "nom = 'machin', ville = 'truc', ... , extra = 'extra'"


Message édité par TheRom_S le 17-09-2007 à 00:31:33

---------------
The Rom's, à votre service
n°1612174
djmath56
Ouayo non de toui
Posté le 17-09-2007 à 00:27:35  profilanswer
 

je ne suis aps sur de comprendre la programmation du $res  
 
en faite je met un =+ a chaque nouvel entrée pour mon $res  
 
et apres je linclu a la place de mon $set et ce sera bon ?

n°1612175
TheRom_S
Posté le 17-09-2007 à 00:30:13  profilanswer
 

heu oui j'ai écrit $res machinalement par habitude au lieu de $set, bon ça revient au même.
$truc += $machin, c'est pareil que $truc = $truc + $machin
dans le cas d'une string, attention, c'est pas pareil que $truc = $machin + $truc (question d'ordre)
les += c'est pour faire propre


---------------
The Rom's, à votre service
n°1612176
djmath56
Ouayo non de toui
Posté le 17-09-2007 à 00:31:15  profilanswer
 

ah ok merci pour l'aide ;p

n°1612178
flo850
moi je
Posté le 17-09-2007 à 00:33:02  profilanswer
 

Code :
  1. <?php
  2. $db = mysql_connect("xxx", "xxx", "xxx" );
  3. mysql_select_db("xxx", $db);
  4. $t_set =array();
  5. if (!empty($_POST['nom'])) { //test si il existe et si il est non vide
  6.    $ser  = "nom = '".mysql_real_escape_string($_POST['nom'])."'"
  7.               .",ville= '".mysql_real_escape_string($_POST['ville'])."'"
  8.               .",trick= '".mysql_real_escape_string($_POST['trick'])."'"
  9.               .",skate= '".mysql_real_escape_string($_POST['skate'])."'"
  10.               .",planche= '".mysql_real_escape_string($_POST['planche'])."'"
  11.                .",musique= '".mysql_real_escape_string($_POST['musique'])."'"
  12.                .",aime= '".mysql_real_escape_string($_POST['aime'])."'"
  13.                .",aimepas= '".mysql_real_escape_string($_POST['aimepas'])."'"
  14.                .",extra= '".mysql_real_escape_string($_POST['extra'])."'";
  15. $pres = mysql_real_escape_string($_POST['pres']);
  16. mysql_query("UPDATE dcdteam_presentation SET $set WHERE pres='$pres'" ) or die(mysql_error());
  17. }
  18. else{}
  19. ?>


 
voila ce que je ferai

n°1612179
flo850
moi je
Posté le 17-09-2007 à 00:34:14  profilanswer
 

au passage l'opérateur de concaténation est . en php , pas +  
 
si tu utilise + il va transformer tes chaine de caractères en entier et les additionner :d

n°1612181
djmath56
Ouayo non de toui
Posté le 17-09-2007 à 00:34:59  profilanswer
 

euh juste une question de débutant a quoi sert mysql_real_escape_string  ?

n°1612182
flo850
moi je
Posté le 17-09-2007 à 00:36:24  profilanswer
 

a eviter que quelqu'un ne te casse ta bdd
ca permet de bien gerer les personnes qu imettent des apostrophes , ainsi que des #  ou des \ , bref tous les caractères spéciaux en MySQL

n°1612184
TheRom_S
Posté le 17-09-2007 à 00:39:14  profilanswer
 

flo850 a écrit :

au passage l'opérateur de concaténation est . en php , pas +  
 
si tu utilise + il va transformer tes chaine de caractères en entier et les additionner :d


 
Ah oui tiens, mais j'étais plutôt sur du Java dernièrement alors ...


---------------
The Rom's, à votre service
n°1612185
djmath56
Ouayo non de toui
Posté le 17-09-2007 à 00:44:55  profilanswer
 

J'vous remerci maintenant sa marche ! maintenant je veillerais a ne plus marquer de connerie xD

n°1612186
flo850
moi je
Posté le 17-09-2007 à 00:48:00  profilanswer
 

marquer des conneries c'est pas tres grave ( j'en ecris mon lot )  
 
mais il vaut miexu eviter d ele faire expres :d

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MY SQL] Probleme pour mettre a jour une table [résolu]

 

Sujets relatifs
Problème avec boucle et affichageProbleme de valaur avec une check box!
Help!!!!!!! Probleme d'application en DelphiProblème de rendu de CSS sous IE
probleme avec gnokiiProbleme de e-mailing + Hotmail.
Mettre jour des champs de table via un recordset!possible?Problème d'installation de Visual C++ sous Vista
Plus de sujets relatifs à : [MY SQL] Probleme pour mettre a jour une table [résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR