Page 1 sur 1

INSERT INTO

Posté : 20 mars 2006, 11:11
par ephemere
Vous me croirez si vous voulez mais...j'ai un problème! (ça me change 8) )
Voila le bout de code concerné:
$req = mysql_select_db("gii");
$sql = "INSERT INTO incidents (Commentaire-signalement_incidents) VALUES($coms)"; 
$req = mysql_query($sql) or die(mysql_error()); 
Et je reçois le message d'erreur suivant:
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 ''Commentaire-signalement_incidents') VALUES()' at line 1

Peut être que ça vient du "-" entre commentaire et signalement...mais j'ai pas envie d'aller changer le nom de champs dans la table...y a t-il un moyen simple d'y pallier?

Autres questions...cette valeur est censée s'enregistrer dans une table ou chaque ligne est auto-incrémentée. On m'a fait la reflexion qu'il fallait d'abord que je spécifie la ligne dans laquelle je voulait que l'enregistrement se fasse...j'aurais plutôt pensé que ça se faisait automatiquement à la suite des précédents....ai-je tord ou raison?

Et si il ya des champs "not null", suis je obligé de tous les remplir en même temps à l'enregistrement?

merci d'avance! :wink:

Re: INSERT INTO

Posté : 20 mars 2006, 11:29
par albat
Peut être que ça vient du "-" entre commentaire et signalement...
mais j'ai pas envie d'aller changer le nom de champs dans la table...
y a t-il un moyen simple d'y pallier?
Bingo ! ;)
La bonne solution est : Renomme ton champ.

Certains avancent la possibilité d'isoler le nom d'un champ entre apostrophes :afraid:
lorsqu'il contient des caractères illicites, mais je te le déconseille très fortement.
C'est de la rustine, de la bidouille.

Faire les choses proprement, c'est plus simple et beaucoup plus sûr. :pouce:

Re: INSERT INTO

Posté : 20 mars 2006, 11:32
par albat
cette valeur est censée s'enregistrer dans une table ou chaque ligne est auto-incrémentée.
On m'a fait la reflexion qu'il fallait d'abord que je spécifie la ligne dans laquelle je voulait que l'enregistrement se fasse...
j'aurais plutôt pensé que ça se faisait automatiquement à la suite des précédents....
ai-je tord ou raison?
Tu as décidément de mauvaises fréquentations... :langue:
C'est toi qui as bon.

Quel est l'intérêt d'un auto-incrément si tu dois préciser sa valeur ? :roll:
Par définition, un auto-incrément s'incrémente automatiquement
lors de l'insertion d'un nouvel enregistrement.
En aucun cas, tu n'as à intervenir sur un auto-incrément.

Re: INSERT INTO

Posté : 20 mars 2006, 11:33
par albat
Et si il ya des champs "not null", suis je obligé de tous les remplir en même temps à l'enregistrement?
Tout dépend si tu as précisé des valeurs par défaut pour ces champs
lors de la construction de ta table.

Posté : 20 mars 2006, 11:34
par jpaul
Le problème ne viendrait-il pas de la variable $coms qui semble être vide au regard du message d'erreur ?

Posté : 20 mars 2006, 11:39
par albat
Par ailleurs, la syntaxe de ta requête n'est pas optimale.
Je te propose plutôt :
$sql = "INSERT INTO incidents (commentaire_signalement_incidents) VALUES(".$coms.")";    // Si $coms est une valeur numérique
$sql = "INSERT INTO incidents (commentaire_signalement_incidents) VALUES('".$coms."')";  // Si $coms est une valeur alphanumérique

Posté : 20 mars 2006, 11:48
par ephemere
merci pour vos réponses rapides! :D
1-Oui il y a des champs NOT NULL dans ma table,
2-J'ai pas envie de changer le nom de champs il va falloir que je le fasse pour tout le reste après !!!
3-je vous envoi le code un peu plus complet juste pour info:
 $coms = $_POST['coms'];
  $req = mysql_connect("odin","root","*****") or die(mysql_error());
$req = mysql_select_db("gii");
$sql = "INSERT INTO incidents (Commentaire-signalement_incidents) VALUES($coms)"; 
$req = mysql_query($sql) or die(mysql_error()); 
  
J'essaye de suivre vos conseils et je vous tient au courant! merki :wink: :wink:

Posté : 20 mars 2006, 12:39
par ephemere
OK ça marche nickel, je me suis amusé a changer tous les nom de champs...

Alors je profite d'avoir des experts sous la main pour poser une autre question (j'vais pas reposter un nouveau sujet toute les deux minutes quand même :? )

Lorsque l'utilisateur valide le formulaire, le bouton ne fait que le renvoyer vers une page de confirmation de type "êtes vous sûr? oui/non"...et donc je voudrais que les modifications ne soient enregistrées dans la base qu'au clic du bouton oui...Or c'est compliqué puisque, vous l'aurez compris, il sagit de deux pages distinctes...
Comment faire pour que le bouton oui de la deuxième page valide le formulaire de la première :?: :?: :?:

Posté : 20 mars 2006, 16:57
par jpaul
Comment faire pour que le bouton oui de la deuxième page valide le formulaire de la première :?: :?: :?:
Ben tu fais un formulaire (pour le bouton tu en as besoin) et tu propages tes données à l'aide de balises input de type hidden (qui restent invisibles).