Prb d'écriture dans la table de ma base

Signaler
Messages postés
230
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
5 avril 2015
-
Messages postés
230
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
5 avril 2015
-
Bonjour,

Je n'arrive pas à pouvoir écrir dans la table de ma base depuis mon formulaire....

Mon script de connexion nomé config.php

<?
//SQL:
$host='localhost'; //Serveur SQL
$user='root'; //Identifiant SQL
$pass=''; //Mot de pass SQL
$base='liftski_db'; //Ma base de données
$table1='messagesfr_tbl '; //table Française
$table2='messagesus_tbl '; //table Américaine
?>

Le cript du formulaire ( tout tourne bien depuis la page du site, mais je n'arrive pas à écrir dans ma table ...)

Mon script de mon formulaire :

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<?php
include("../livre_fr/config.php");//On charge les paramètres de connexion !

//je me connecte au serveur
$db=mysql_connect($host,$user,$pass);

$link = mysql_connect ($host,$user,$pass) or
die ('erreur :'.mysql_error());

// je mémorise les données de connexion
$connect = mysql_connect($host,$user,$pass);

//je teste si la connection fonctionne
if ($db) {
$sel=mysql_select_db($table1);
if ($sel) mysql_select_db($table1,$connect); //On choisit la base de données
}

//$sql = 'INSERT INTO `messagesfr_tbl` ( `ID` , `nomfr` , `emailfr` , `messagefr` )';

?>

<style type="text/css">
<!--
body {
background-color: #2D6C93;
}
.Style1 {color: #FFFFFF}
.Style2 {font-size: 32px}
.Style3 {font-size: 10px}
-->
</style></head>



Pour écrire un message

<form action="../livre_fr/ajout.php" method="get" name="form_messagesfr_tbl" id="form_messagesfr_tbl">
Nom:
,
,

----

Adresse E-mail:

,
,

----

Message:

<textarea name="messagefr" cols="70" rows="10" id="messagefr"></textarea>

Que pensez-vous du site?

<select name="questionfr" id="questionfr">
<option value="original">Original</option>
<option value="instructif">Instructif</option>
<option value="intéressant">Intéressant</option>
<option value="passionnant">Passionnant</option>
<option value="curieux">Curieux</option>
</select>

,

----

</form>




</html>

merci de votre aide !!!
rem78

28 réponses

Messages postés
230
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
5 avril 2015

Ma page ajout.php qui permet d'écrire les données dans la table et qui permet de confirmer le bon enregistrement des données de mon formulaire et qui redirige automatiquement vers la page accueil du site.

<?php
include("../Livre_fr/config.php");//On charge les parametres du fichier config.php
$db = mysql_connect("$host","$user","$pass"); //je me connecte au serveur
$connect = mysql_connect("$host","$user","$pass");// je mémorise les données de connexion
mysql_select_db($table1,$connect);//On choisit la base de données
$date = date("Y-m-d");
$query = ("INSERT INTO '$table1'[(nomfr, emailfr, messagefr, questionfr, datefr)] VALUES('nomfr','emailfr','messagefr','questionfr','datefr')"); //On stock les données dans la table1
$result = mysql_query($query);
?>

les données du formulaire ne s'écrivent pas dans ma table et je ne sais pas pourquoi ??

merci de votre aide
Messages postés
60
Date d'inscription
mercredi 9 juillet 2003
Statut
Membre
Dernière intervention
3 septembre 2004

Salut,

Bon déja un truc qui me choque c'est que tu te connecte plusieurs fois de suite au serveur sql.
$db = mysql_connect("$host","$user","$pass"); //je me connecte au serveur
$connect = mysql_connect("$host","$user","$pass");// je mémorise les données de connexion


La deuxieme sert strictement à rien puisque les données de connection sont déja sauvegardés dans $db.

Ensuite dans le script de ton formulaire à quoi sa te sert de faire ceci:
include("../livre_fr/config.php");//On charge les paramètres de connexion !

//je me connecte au serveur
$db=mysql_connect($host,$user,$pass);

$link = mysql_connect ($host,$user,$pass) or
die ('erreur :'.mysql_error());

// je mémorise les données de connexion
$connect = mysql_connect($host,$user,$pass);

//je teste si la connection fonctionne
if ($db) {
$sel=mysql_select_db($table1);
if ($sel) mysql_select_db($table1,$connect); //On choisit la base de données
}

//$sql = 'INSERT INTO `messagesfr_tbl` ( `ID` , `nomfr` , `emailfr` , `messagefr` )';


De plus tu multiplie la connection au serveur sql encore ici et apres tu selectionne ta base de données deux fois de suite. Pour tester si ta connection est toujour ouverte tu peux toujour utiliser la fonction mysql_ping().

Et enfin pour répondre à ta question: ta requete pour inserer les éléments de ton formulaire est fausse. Voila comment elle doit être:

"INSERT INTO '$table1' [(nomfr, emailfr, messagefr, questionfr, datefr)] VALUES('$_GET[nomfr]','$_GET[emailfr]','$_GET[messagefr]','$_GET[questionfr]','$_GET[datefr]')"

Ici j'utilse $GET[] car ta utiliser la methode get dans ton formulaire. Si tu aurais utilsé la methode post alors les $GET[..] seraient remplacés pas des $_POST[...].

Voila :)

Une bonne programmation c'est avant tout une bonne analyse. :)
Messages postés
60
Date d'inscription
mercredi 9 juillet 2003
Statut
Membre
Dernière intervention
3 septembre 2004

Au faite si tu avais pas remarqué, tu peux cliqué sur la fonction mysql_ping() sa te donnera sa documentation ^^
Bonne continuation.

Une bonne programmation c'est avant tout une bonne analyse. :)
Messages postés
230
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
5 avril 2015

Merci pour vos réponse !!!

J'ai mis la ligne de commande INSERT INTO corrigé par Korrox dans mon script, ce qui donne :

18 <?php
19 include("../Livre_fr/config.php");//On charge les parametres du fichier config.php
20 $db = mysql_connect("$host","$user","$pass"); //je me connecte au serveur
21 $connect = mysql_connect("$host","$user","$pass");// je mémorise les données de connexion
22 mysql_select_db($table1,$connect);//On choisit la base de données
23 $date = date("Y-m-d");
24 $query = ("INSERT INTO '$table1' [(nomfr, emailfr, messagefr, questionfr, datefr)] VALUES('$_GET[nomfr]','$_GET[emailfr]','$_GET[messagefr]','$_GET[questionfr]','$_GET[datefr]')"; //On stock les données dans la table1
25 $result = mysql_query($query);
26 ?>

Mais cela me procure l'erreure suivante :

Parse error: parse error, unexpected ';' in c:\program files\easyphp1-7\www\liftski\livre_fr\ajout.php on line 24

je ne comprend pas !!

rem78
Messages postés
230
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
5 avril 2015

Oups... j'avais oublié une ) .... ;)

mais j'ai un petit problème, j'ai une erreure suivante :

Notice: Undefined index: datefr in c:\program files\easyphp1-7\www\liftski\livre_fr\ajout.php on line 24

je veux mettre la date et l'heure avec l'envoi du formulaire lors
de l'envoi de celui-çi.

Moi, j'ai créé un champs datefr dans ma table 1 et j'ai mis l'instruction suivante dans mon script :

$date = date("Y-m-d");

Mais visiblement cela ne marche pas...je ne sais pas comment faire cela.

rem78
Messages postés
60
Date d'inscription
mercredi 9 juillet 2003
Statut
Membre
Dernière intervention
3 septembre 2004

Regarde dans ton query ta mis un ( devant, et sinon la date se trouve dans la variable $date et dans la requete on utilse la variable $datefr donc sa va pas aller ;) Voila ce que sa doit donner ta requete sql donc:

$query = "INSERT INTO '$table1' [(nomfr, emailfr, messagefr, questionfr, datefr) VALUES('$_GET[nomfr]','$_GET[emailfr]','$_GET[messagefr]','$_GET[questionfr]','$date')";

++

Une bonne programmation c'est avant tout une bonne analyse. :)
Messages postés
230
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
5 avril 2015

Visiblement je n'arrive toujours pas à pouvoir écrire dans ma base depuis la page livre d'or de mon site,
voila ma table
ID (int)11 no Null auto-increment PRIMARY
date (date) No Null
nomfr (vachar)50 No Null
emailfr 5vachar)200 No Null
messagefr (mediumtext) No Null
Question (vachar)50 no null

mon script de mon formulaire est plus haut dans mon 1er message.

Le script de ma page ajout.php qui est la page d'envoi des
info à la base :

<?php
include("../Livre_fr/config.php");//On charge les parametres du fichier config.php
$db = mysql_connect("$host","$user","$pass"); //je me connecte au serveur
$connect = mysql_connect("$host","$user","$pass");// je mémorise les données de connexion
mysql_select_db($table1,$connect);//On choisit la base de données
$date = date("Y-m-d");
$query = "INSERT INTO '$table1' [(nomfr, emailfr, messagefr, questionfr, datefr) VALUES('$_GET[nomfr]','$_GET[emailfr]','$_GET[messagefr]','$_GET[questionfr]','$date')";
//On stock les données dans la table1
$result = mysql_query($query);
?>

Là moi je ne vois pas pourquoi je n'arrive pas à pouvoir écrir dans cette base ??????
Autre question, à partir du questionnaire de mon formulaire, visiblement je n'arrive pas à pouvoir écrire la réponse dans ma table !!!

Merci de m'aider ;)
rem78
Messages postés
60
Date d'inscription
mercredi 9 juillet 2003
Statut
Membre
Dernière intervention
3 septembre 2004

Ok, tu utilise un champ de type date dans ta table; donc il faudra enregistrer la date autrement. Voici le script corriger:

<?php
include("../Livre_fr/config.php");//On charge les parametres du fichier config.php
$db = mysql_connect("$host","$user","$pass"); //je me connecte au serveur
mysql_select_db($table1,$db);//On choisit la base de données
$query = "INSERT INTO '$table1' (nomfr, emailfr, messagefr, questionfr, datefr) VALUES('$_GET[nomfr]','$_GET[emailfr]','$_GET[messagefr]','$_GET[questionfr]', NOW())";
//On stock les données dans la table1
$result = mysql_query($query);
?>


NOW() permet de retourner la date courante si le champ de ta table et de type DATE et c'est le cas ici.

De plus ta base comporte les champs suivants:
ID (int)11 no Null auto-increment PRIMARY
date (date) No Null
nomfr (varchar)50 No Null
emailfr (varchar)200 No Null
messagefr (mediumtext) No Null
Question (varchar)50 no null

alors que dans ta requete tu utilise au lieu de date => datefr et au lieu de Question => questionfr. Donc sql ne trouvera pas ces champs. Donc soit tu modifie les noms dans ta table soit dans ta requete à toi de voir.

[b]Une bonne programmation c'est avant tout une bonne analyse. :) [/b
Messages postés
230
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
5 avril 2015

bon ça marche pas :sad)

Dans mon formulaire, j'utilise les lignes suivant pour questionfr :
(name= questionfr et id=questionfr) comme pour ma table.

Que pensez-vous du site?



<select name ="questionfr" id="questionfr">
<option value="original">Original</option>
<option value="instructif">Instructif</option>
<option value="intéressant">Intéressant</option>
<option value="passionnant">Passionnant</option>
<option value="curieux">Curieux</option>
</select>


Dans ma requete j'utilise les lignes que tu as corrigé et qui sont bien nomées de la meme façon!!!
Mais visiblement je n'arrive toujours pas à écrir dans ma base :sad)

sympa ton aide !!

PS : je ne savais pas que les souries était très forte en programmation....C'est beau la génétique .... ;)

rem78
Messages postés
60
Date d'inscription
mercredi 9 juillet 2003
Statut
Membre
Dernière intervention
3 septembre 2004

L'erreur toute bête, j'avais même pas remarqué.

Quand tu selectionne ta base a l'aide de mysql_select_db(), tu as fait une erreur, tu a mis en paremetre le nom de la table au lieu de la base ;) Donc sa donne

mysql_select_db($base,$db); //On choisit la base de données


Une bonne programmation c'est avant tout une bonne analyse. :)
Messages postés
230
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
5 avril 2015

merci ptit sourie... ;) je vais corriger ça...

Tu as un message dans ta boite !!! ;)

j'attend ta réponse....

rem78
Messages postés
230
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
5 avril 2015

j'ai corrigé mon 'erreure mais visiblement cela n'écri pas dans ma base, toujours 0 message après avoir envoyé un méssage depuis mon formulaire ..... :sad) :sad) :sad) :sad)
rem78 :sad)
Messages postés
60
Date d'inscription
mercredi 9 juillet 2003
Statut
Membre
Dernière intervention
3 septembre 2004

C'est trés bizzarre, sur mon pc sa fonctionne correctement :/ Je te donne les codes entier que j'ai sur mon pc:

LE FORMULAIRE
----------------------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
body {
background-color: #2D6C93;
}
.Style1 {color: #FFFFFF}
.Style2 {font-size: 32px}
.Style3 {font-size: 10px}
-->
</style>
</head>

 

Pour écrire un message 

<form action="ajout.php" method="get" name="form_messagesfr_tbl" id="form_messagesfr_tbl">
 Nom: 

</form>

</html>

AJOUT.PHP
-----------------
<code>
<?php
include("../livre_fr/config.php");//On charge les parametres du fichier config.php
$db = mysql_connect("$host","$user","$pass"); //je me connecte au serveur
mysql_select_db($base,$db);//On choisit la base de données
$query = "INSERT INTO $table1 (nomfr, emailfr, messagefr, questionfr, datefr) VALUES('$_GET[nomfr]','$_GET[emailfr]','$_GET[messagefr]','$_GET[questionfr]', NOW())";
//On stock les données dans la table1
mysql_query($query);
?>


Pour répondre a ton courrier, le mieux pour toi c'est de chercher par toi même. Effectivement plus tu cherchera par toi même les solutions a tes problemes plus tu trouvera facilement la solution d'un probleme quelconque dans l'avenir. Demander a chaque fois la solution lorsque tu rencontre un probléme te rendra toujour "bête". C'est pas mechant se que je dit, ne le prend pas mal.

Voila, pour ton ajout, verifie bien que tu as la même chose quitte a faire un copier/coller ;)

Une bonne programmation c'est avant tout une bonne analyse. :)
Messages postés
230
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
5 avril 2015

tu as raison, je vais chercher par moi meme !!!

bon bah chez moi cela ne marche pas, je n'arrive pas à pouvoir enregistrer les données du formulaire dans ma base, j'ai toujours après envoi du formulaire, 0 enregistrement dans ma base !!!
ma base :

Base de données liftski_db sur le serveur localhost
# phpMyAdmin SQL Dump
# version 2.5.3
# http://www.phpmyadmin.net
#
# Serveur: localhost
# Généré le : Dimanche 29 Août 2004 à 23:09
# Version du serveur: 4.0.15
# Version de PHP: 4.3.3
#
# Base de données: `liftski_db`
#

# --------------------------------------------------------

#
# Structure de la table `messagesfr_tbl`
#

CREATE TABLE `messagesfr_tbl` (
`ID` int(11) NOT NULL auto_increment,
`date` date NOT NULL default '0000-00-00',
`nomfr` varchar(50) NOT NULL default '',
`emailfr` varchar(200) NOT NULL default '',
`messagefr` mediumtext NOT NULL,
`questionfr` varchar(50) NOT NULL default '',
PRIMARY KEY (`ID`,`ID`),
KEY `ID` (`ID`)
) TYPE=MyISAM COMMENT='table des méssages du livres d''or Français' AUTO_INCREMENT=57 ;

#
# Contenu de la table `messagesfr_tbl`
#

# --------------------------------------------------------

#
# Structure de la table `messagesus_tbl`
#

CREATE TABLE `messagesus_tbl` (
`ID` int(11) NOT NULL auto_increment,
`nomus` varchar(50) NOT NULL default '',
`emailus` varchar(100) NOT NULL default '',
`messageus` mediumtext NOT NULL,
PRIMARY KEY (`ID`)
) TYPE=MyISAM COMMENT='table des méssages du livres d''or Américain' AUTO_INCREMENT=1 ;

#
# Contenu de la table `messagesus_tbl`
#
tu as déja toute ma page formulaire, je met toute ma page ajout.php, essaye avec des copiers collés :

AJOUT.PHP

<html>
<head>
<meta http-equiv="refresh" content="10;URL=../templates/principale.dwt.php">
<title>Votre message à bien été ajouté !</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.Style2 {color: #FFFFFF}
.Style3 {
color: #FF0000;
font-weight: bold;
}
.Style4 {font-size: 18px}
-->
</style>
</head>
<?php
include("../livre_fr/config.php");//On charge les parametres du fichier config.php
$db = mysql_connect("$host","$user","$pass"); //je me connecte au serveur
mysql_select_db($base,$db);//On choisit la base de données
$query = "INSERT INTO $table1 (nomfr, emailfr, messagefr, questionfr, datefr) VALUES('$_GET[nomfr]','$_GET[emailfr]','$_GET[messagefr]','$_GET[questionfr]', NOW())";
//On stock les données dans la table1
mysql_query($query);
?>











Votre message a été envoyé et sera

édité après lecture par le Webmaster !

Vous allez être redirigé dans quelques secondes vers la page d'accueil





</html>

Voila si cela marche chez toi avec mes pages....

rem78
Messages postés
60
Date d'inscription
mercredi 9 juillet 2003
Statut
Membre
Dernière intervention
3 septembre 2004

:question) C'est vraiment bizarre, chez moi sa fonctionne correctement :question)
Il faudrais que tu essaye de faire un teste d'insertion à la main. C'est à dire que tu crée un fichier php teste.php et dedans tu te connecte a la base de donnée, tu selectionne ta base et ensuite tu insert un truc bidon dans ta table en mettant directement des valeur dans la requete. Ensuite tu execute ta requete et tu ferme la connection sql. Enfin t'execute le fichier teste.php et tu regarde si tu as eu l'insertion.

Fait plein de petit teste un peu partout dans ton code pour voir ou sa bug :)

Une bonne programmation c'est avant tout une bonne analyse. :)
Messages postés
230
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
5 avril 2015

j'ai essayé depuis ma base en selectionant ma table et en utilisant la touche insérer, là ça marche sans prb,

je sais ou cela bug, j'ai testé mes connexion, base et table1, tout est ok, mais là ou ça bloque c'est à :

$query = "INSERT INTO $table1 (nomfr, emailfr, messagefr, questionfr, datefr) VALUES('$_GET[nomfr]','$_GET[emailfr]','$_GET[messagefr]','$_GET[questionfr]', NOW())";
mysql_query($query);//On stock les données dans la table1

visiblement il n'arrive pas à écrire dans cette table1

je ne sais pas quoi mettre comme requete de test dans ma page test? et je l'exécute depuis mon navigateur ?
je cherche aussi dans mes bouquins php
rem78
Messages postés
60
Date d'inscription
mercredi 9 juillet 2003
Statut
Membre
Dernière intervention
3 septembre 2004

En faite le mieux c'est que dans ta page ajout.php tu met cette requete en commentaire. Ensuite tu met celle la en dessous:

$query = "INSERT INTO messagesfr_tbl (nomfr, emailfr, messagefr, questionfr, datefr) VALUES('toto','toto@hotmail.com','salut je suis toto','original', NOW())";

Regarde si tes données sont insérés.

Une bonne programmation c'est avant tout une bonne analyse. :)
Messages postés
230
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
5 avril 2015

Bon, j'ai trouvé le prb, en faite il y en avait 2 :
j'ai déinstallé et réinstallé PHP 1.7 puis recréé ma base
et j'ai fait le test ta ligne d'instruction, ça marche, cela s'écri bien dans ma base.
Donc j'ai remplacé dans la ligne $query = INSERT INTO $table1 par messagesfr_tbl, et là ça marche, j'arrive à écrir dans ma base.
Ce que je ne comprend pas c'est pourquoi il ne reconnait pas la valeur de la variable $table1 qui est déffini dans mon fichier config.php
Il trouve bien les valeur des variable $host, $user, $pass, donc la lecture du fichier ce fait bien de ajout.php à config.php.

Autre chose, peut on arriver à insérer l'heure dans l'enregistrement des données dans ma table ?

rem78
Messages postés
60
Date d'inscription
mercredi 9 juillet 2003
Statut
Membre
Dernière intervention
3 septembre 2004

Oue c'est bizarre pour ta variable $table1, regarde bien si ta pas d'espace ou une faute dans le nom de ta table dans le config.php.

Sinon pour l'heure:
Pour avoir l'heure et la date dans le même champ, il faut que ton champ soit du type DATETIME
Pour avoir l'heure dans un autre champ il faut que ton champ soit du type TIME. Et dans ce cas la utilise encore un NOW() pour l'inserer dans ta base de données.

Une bonne programmation c'est avant tout une bonne analyse. :)
Messages postés
230
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
5 avril 2015

ok j'ai changé pour DATE par DATETIME.
Mais pour la variable $table1, elle est nomé pareil dans ma page config.php, regarde :

//SQL:
$host='localhost'; //Entrez ici votre serveur SQL
$user='root'; //Ici votre identifiant SQL
$pass=''; //Votre Mot de pass SQL
$base='liftski_db'; //Votre base de données (pour les Freenautes, comme moi, votre base de données s'appelle comme votre identifiant
$table1='messagesfr_tbl'; //table Française
$table2='messagesus_tbl'; //table Américaine
?>

moi je ne comprend pas pourquoi !!!!!Bizar.....

en tout cas merci pour ton aide ....la ptite sourie.... ;)

rem78