Page 1 sur 1

Problème simple et bète

Posté : 17 sept. 2005, 19:11
par Visiteur
Bonjour a tous :D

J'ai commencé a programmer un forum, je bute sur un truc tout bète:
je veux insérer un message dans une base mysql. Je mets alors
mysql_connect("localhost", "root", "");
mysql_select_db("rep");
mysql_query("INSERT INTO repo VALUES('', '$topic', '$pse', '$mes', '$em')");
mysql_close();
Vous voyez ou est le problème ?

Merci d'avance :)

P.S:$em ne contient rien[/php]

Posté : 17 sept. 2005, 19:44
par Reiji
salut,

essaye ca :
mysql_connect("localhost", "root", ""); 
mysql_select_db("rep"); 
mysql_query("INSERT INTO repo ( 'nom_col1' , 'nom_col2' , 'nom_col3' , 'nom_col4' , 'nom_col5' ) VALUES('', '$topic', '$pse', '$mes', '$em')"); 
mysql_close(); 
où tu remplace evidement nom_colx par le nom de tes colonnes :)

Posté : 18 sept. 2005, 10:43
par Visiteur
C'est moi (je me suis enregistré)

J'ai essayé ton truc Reiji mais rien n'y fait ! Il y a mème pas de message d'erreur...

Quelqu'un a une idée ?

Posté : 18 sept. 2005, 11:18
par pjl
normal que tu ne vois pas les messages d'erreur. Tu ne demandes pas à les afficher.
regarde ce tutau : http://www.phpdebutant.org/article67.php
et pour ta requete, commence par l'aficher et la tester dans phpmyadmin par exemple.

Posté : 18 sept. 2005, 11:29
par Cyrano
La solution proposée par Reiji est syntaxiquement invalide. La forme d'une requête d'insertion en SQL est :

Code : Tout sélectionner

INSERT INTO nom_table [(champ_1[, champ_2,.. champ_n])] VALUES ('valeur_1'[, valeur_2.. valeur_n]);
Si on ne précise pas le nom des champs après le nom de la table, la requête d'insertion concernera TOUS les champs, il faudra donc qu'il y ait autant de valeur de que colonne dansla table. On peut cependant préciser seuoement les champs où on veut insérer une valeur. Pour la clé primaire, s'il s'agit d'un champ de type INT auto_increment, on a pas l'obligation de le préciser dans le second cas, le SGBD se chargeant de le remplir lui-même.

Donc Visiteur, la requête que tu as incrite est syntaxiquement valide. Coté programmation PHP, il manque un détail ou deux, mais ils sont facultatifs. Voici une proposition à tester:
<?php
/* On se connecte au serveu de base de données */
$connexion = mysql_connect("localhost", "root", "");
/* On sélectionne la base de données */
mysql_select_db("rep",$connexion);
/* On crée la requête SQL */
$sql = "INSERT INTO repo VALUES('', '". $topic ."', '". $pse ."', '". $mes ."', '". $em ."')";
/* On exécute la requête SQL */
mysql_query($sql, $connexion) or die("<h3>Une erreur s'est produite : ". mysql_error($connexion) ."</h3>\n");
/* On ferme la connexion */
mysql_close($connexion);
?>