insertion de donné dans table de db depuis formulaire xhtml

Mammouth du PHP | 843 Messages

16 févr. 2006, 23:07

salut à tous :D

cela fait un moment que je lutte pour essayer d'enregistrer des donnée recuperer d'un formulaire xhtml dans une table.

j'ai essayer differente façon mais aucune ne marche :cry:

j'ai essayer le script de votre tutorial et lui fonctionne tres bien

j'ai donc esayer de le modifier un peu pour l'adapter à mes besoin mais ça marche plus (aucune erreur mais aucun enregistrement ne se fait) :x

doit on absolument avoir le formulaire et le php dans le même fichier?
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

HD
Mammouth du PHP | 1181 Messages

16 févr. 2006, 23:10

doit on absolument avoir le formulaire et le php dans le même fichier?
non
mais si tu nous montrez le code xhtml ainsi que celui php on pourra essayer de trouver la source du probleme !
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Mammouth du PHP | 843 Messages

16 févr. 2006, 23:40

ok :wink:

voici le formulaire xhtml:

Code : Tout sélectionner

<html> <head> </head> <body> <form class="editor" method="post" action="save_manif_db3.php"> <input type="hidden" name="action" value="inserer" /> <p class="txt_admin">Entrer ici la date de l'evenement (au format AAAA-MM-JJ):</p> <input name="champ_date" type="text" size="7" maxlength="10" /> <br /> <p class="txt_admin">Entrer ici le contenu d&eacute;sir&eacute; pour la page manifestation du site</p> <textarea name="content" cols="70" rows="20">Entrez le code de votre page ici:</textarea> <input type="submit" value="Sauver" /> <input type="submit" value="Aperçu" /> </form> </body> </html>
et voila le php:
<?php


     switch($_POST['action'])
{
     // INSERTION DANS LA BASE
     case "inserer":

    // déclaration de quelques variables
    $host = "localhost";
    $user = "root";
    $pass = "";
    $bdd = "chartreuse";
    $table = "table_manif1";
    
    // connection avec MySQL
    @mysql_connect($host, $user, $pass) or die("Impossible de se connecter à la base de données"); // Le @ indique à php de ne pas afficher de message d'erreur
    @mysql_select_db($bdd) or die("Impossible de se connecter à la base de données");
    
    // stockage dans la bdd
    $manif_date  = $_POST['champ_date'];
    $manif  = $_POST['content'];
    if(!get_magic_quotes_gpc())
  	{
  	  // si php n'est pas configuré pour le faire automatiquement, on ajoute des \ devant les '
  	  // deux raisons : autoriser d'ajouter des ', et sécuriser notre requete
  	  // on y reviendra dans un prochain tutorial
  	  $manif_date = addslashes($manif_date);
  	  $manif = addslashes($manif);
  	}
    $sql = "INSERT INTO " . $table . "(manif_date, manif) VALUES('" . $manif_date . "','" . $manif . "')";
    $res = mysql_query($sql);
    
    // déconnection avec MySQL
    mysql_close();
    
    // redirection
    header("location: manif_admin_test.html");
    exit;
}

?>
ma table est de type:

Code : Tout sélectionner

CREATE TABLE table_manif2 ( manif_id int(11) auto_increment, date_manif date, manif text(10000), PRIMARY KEY (manif_id) )
1°) je n'est aucun message d'erreur mais aucun enregistrement ne ce fait




2°) autre question: pourquoi utilise t'on cceci dans le formulaire du tuto?

Code : Tout sélectionner

<input type="hidden" name="action" value="inserer" />
et
     switch($_POST['action'])
{
     // INSERTION DANS LA BASE
     case "inserer":
suis je obliger de faire ainsi?

merci d'avance pour votre aide
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Eléphant du PHP | 417 Messages

17 févr. 2006, 00:46

---
Modifié en dernier par JazzFinder le 28 juin 2006, 16:42, modifié 1 fois.

Mammouth du PHP | 843 Messages

17 févr. 2006, 02:32

oui mais la il est dans hebergement :cry:
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 19672 Messages

17 févr. 2006, 09:48

Sujet déplacé.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 19672 Messages

17 févr. 2006, 09:54

Bon, je reviens sur ce sujet: première règle pour débugguer en cours de développement: ne JAMAIS utiliser de "@" pour empécher l'affichage de messages d'erreur.

Commence par les enlever et refais un test d'insertion : reviens avec le résultat obtenu.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 843 Messages

17 févr. 2006, 16:21

ok, j'ai virer les @ et ça ne passe pas :cry:
je n'est aucun message d'erreur mais une page blanche dont l'url correspond au nom du script en question :?

j'ai donc choisi de revenir sur un autre script et un autre formulaire (afficher si apres).

mais j'ai le message suivant:
Parse error: parse error in c:\program files\easyphp1-8\www\chart_php2\admin\save_manif_db1.php on line 10
c'est la ligne ou l'on essaye de ce connecter au server sql

voila l'autre script:
<?php
// ATTENTION, pour que le script fonctionne la table doit être crée
$host = "localhost";
$user = "root";
$pass = "pass";
$usebdd = "chartreuse";
$table = "table_manif2"

//connexion au serveur MySQL
$connexion = mysql_connect($host, $user, $pass);
if (!$connexion) {
echo "Impossible d'effectuer la connexion";
exit;
}

//sélection de la BDD
$db = mysql_select_db($usebdd,$connexion);
if (!$db) {
echo "Impossible de sélectionner cette base de données";
exit;
}

// insertion des données recuperer dans la table
$manif_date  = $_POST['champ_date'];
$manif  = $_POST['content'];
if(!get_magic_quotes_gpc())
  	{
  	  // si php n'est pas configuré pour le faire automatiquement, on ajoute des \ devant les '
  	  // deux raisons : autoriser d'ajouter des ', et sécuriser notre requete
  	  // on y reviendra dans un prochain tutorial
  	  $manif_date = addslashes($manif_date);
  	  $manif = addslashes($manif);
  	}
$sql = "INSERT INTO " . $table . "(manif_date, manif) VALUES('" . $manif_date . "','" . $manif . "')";
$result = mysql_query($sql);

// déconnection avec MySQL
mysql_close();

// redirection
header("location: manif_admin_test.html");
exit;

?>
et l'autre formulaire xhtml:

Code : Tout sélectionner

<form class="editor" method="post" action="save_manif_db1.php"> <p class="txt_admin">Entrer ici la date de l'evenement (au format AAAA-MM-JJ):</p> <input name="champ_date" type="text" size="7" maxlength="10" /> <br /> <p class="txt_admin">Entrer ici le contenu d&eacute;sir&eacute; pour la page manifestation du site</p> <textarea name="content" cols="70" rows="20">Entrez le code de votre page ici:</textarea> <input type="submit" value="Sauver" /> <input type="submit" value="Aperçu" /> </form>
le truc c'est que je vois pas d'erreur à cette ligne :-k

qu'en pense vous?
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 843 Messages

19 févr. 2006, 14:14

ma version de mysql est 4.1.9
php est en version 4.3.10

penser vous que cela vienne de là?

sinon je n'est toujour pas réussi à me connecter au server sql :cry:

merci d'avance pour votre aide :wink:
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 19672 Messages

19 févr. 2006, 14:20

"parse error" signifie qu'il manque un caractère ou qu'il y a un caractère en trop au mauvais endroit.

Regarde la ligne indiquée et reviens à l'instruction précédente: cette instruction précédente initialise une variable $table : il manque le ";" en fin de ligne.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 843 Messages

19 févr. 2006, 14:41

merci c'etait bien ça :wink:

maintenant mon script passe sans erreur et redirige bien mais toujour aucun enregistrement dans la table :cry:

si quelqu'un voit pourquoi car j'ai l'impression que l'on recupere rien ce qui est vraiment bizard...
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 843 Messages

19 févr. 2006, 15:16

je vient de faire un test pour etre sur que l'on recupere bien le contenu des champs du formulaire et c'est le cas...

j'ai juste remplacer la partie suivante du code par un echo des variable de contenu des champs du formulaire:
$sql = "INSERT INTO " . $table . "(manif_date, manif) VALUES('" . $manif_date . "','" . $manif . "')";
$result = mysql_query($sql);
donc le probleme vient soit de ma table soit de la requete sql je pense...

ma table est de type:

Code : Tout sélectionner

CREATE TABLE table_manif2 ( manif_id int(11) auto_increment, date_manif date, manif text(10000), PRIMARY KEY (manif_id) )
si quelqu'un peut m'aider car je ne comprend pas trop pourquoi sa ne fonctionne pas :oops:
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

19 févr. 2006, 15:48

ce que tu peux faire en cas de doute sur une requete est d'ajouter un message d'erreur et l'afficher:
$sql = "INSERT INTO " . $table . " (manif_date, manif) VALUES('" . $manif_date . "','" . $manif . "')";
$result = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
donc tu aurras un message te signalant qu'il n'y a pas de champ "manif_date" dans la table, verifis le nom du champ :wink:

et éventuellement mettre un espace avant " (manif_date, manif)" dans la requete.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 843 Messages

19 févr. 2006, 16:07

merci truc :wink:

ça fonctionne à merveille maintenant :D

je ferme le sujet :wink:
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non: