Problème simple et bète

Visiteur
Invité n'ayant pas de compte PHPfrance

17 sept. 2005, 19:11

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]

Petit nouveau ! | 4 Messages

17 sept. 2005, 19:44

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 :)

Petit nouveau ! | 3 Messages

18 sept. 2005, 10:43

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 ?

ViPHP
pjl
ViPHP | 2119 Messages

18 sept. 2005, 11:18

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.

Mammouth du PHP | 19672 Messages

18 sept. 2005, 11:29

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);
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: