insertion de donné dans table de db depuis formulaire xhtml

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : insertion de donné dans table de db depuis formulaire xhtml

par BeRoots » 19 févr. 2006, 16:07

merci truc :wink:

ça fonctionne à merveille maintenant :D

je ferme le sujet :wink:

par Truc » 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.

par BeRoots » 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:

par BeRoots » 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...

par Cyrano » 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.

par BeRoots » 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:

par BeRoots » 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?

par Cyrano » 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.

par Cyrano » 17 févr. 2006, 09:48

Sujet déplacé.

par BeRoots » 17 févr. 2006, 02:32

oui mais la il est dans hebergement :cry:

par JazzFinder » 17 févr. 2006, 00:46

---

par BeRoots » 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

Re: insertion de donné dans table de db depuis formulaire xh

par HD » 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 !

insertion de donné dans table de db depuis formulaire xhtml

par BeRoots » 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?