[RESOLU] Aide sur Formulaire

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 : [RESOLU] Aide sur Formulaire

Re: Aide sur Formulaire

par moogli » 04 sept. 2012, 23:23

- tu ne répond pas aux questions
- je doute même que tu ai la ma réponse qui devrait t'aider

et comme je suis trop bon : tu n'a pas de champ de formulaire categorie mais libelle !!!!

tu l'aurais vu en suivant ce que je disais au premier message !


@+

Re: Aide sur Formulaire

par Pemco » 04 sept. 2012, 13:30

<?php
try
{
//Connexion à partir de la base par PDO
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);
//Insertion des données dans la base à partir d'une requête preparée
$reponse=$bdd->query('select libelle,id_categorie from categorie');
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}
?>
<?php
// on teste si le visiteur a soumis le formulaire
if (isset($_POST['enregistrer']) && $_POST['enregistrer'] == 'Enregistrer') {
// on teste l'existence de nos variables. On teste également si elles ne sont pas vides
if ((isset($_POST['reference']) && !empty($_POST['reference'])) && (isset($_POST['designation']) &&
!empty($_POST['designation']))&&(isset($_POST['libelle']) && !empty($_POST['libelle']))) {
// Connexion à la base de données
$base = mysql_connect ('localhost', 'login', '');
mysql_select_db ('test', $base);
$data = mysql_fetch_array($req);
if ($data[0] == 0) {
$sql = 'INSERT INTO produit VALUES("'.mysql_escape_string($_POST['reference']).'","'.mysql_escape_string($_POST['designation']).'","'.mysql_escape_string($_POST['categorie']).'")';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: prod.php');
exit();
}
else {
$erreur = 'Un produit existe  déjà cette reférence.';
}
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Gestion des stocks</title>
<link href="../victoire/template.css" rel="stylesheet" type="text/css" />
</head>

<body>
<!--Entete de site-->
<div class="header">
<img class="icon" src="imgs/mdpasse.jpg" alt="ABUL" />
<h1>MyForum v0.1</h1>
</hr>
</div>
<!--La partie principale-->
<div class="main">
<!--Message d'erreur-->
<div class="err">
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>	
<!--La boîte de connection-->
<div class="box">
<h1>Bienvenue sur le formulaire de saisie des produits</h1>
<form action="prod.php" method="post">
<div class="field">
Référence : <input type="text" name="reference" value="<?php if (isset($_POST['reference'])) echo htmlentities(trim($_POST['reference'])); ?>"><br />
</div>
<div class="field">
Désignation: <input type="designation" name="designation" value="<?php if (isset($_POST['designation'])) echo htmlentities(trim($_POST['designation'])); ?>"><br />
</div>
<div class="field">
Libell&eacute;:<select   name="libelle"  size="1" id="libelle">
<?php 
while ($donnees= $reponse->fetch())
    {
  echo"<option value='".$donnees['id_categorie']."'>".$donnees['libelle']."</option>";
}
?>
</select>
</div>
<div class="buttons">
<input  class="button"type="submit" name="enregistrer" value="Enregistrer">
&nbsp;<input class="button" type="reset" />
</div>
</form>
</div>
</div>
<!--Le pied de page-->
<div class="footer">
<hr/>
Copyright &copy;2003-2012<br/>
Ce logiciel est sous license Gnu General Public License
</div>	
</body>
</html>
Bonjour cher amis developpeur,
Le champ Libellé qui se rempli grâce aux données d'un fichier.
Quand je seletionne les données pour les envoyer dans la base de données.
Tout se passe bien sauf pour le champ libellé.
Que faire?

Re: Aide sur Formulaire

par katikat78 » 29 août 2012, 13:31

Pourrais-tu indiquer le format de tes tables ? D'autre part le champ catégorie n'existe pas dans tes champs de formulaire ?

Re: Aide sur Formulaire

par moogli » 29 août 2012, 13:24

salut,

//Insertion des données dans la base à partir d'une requête preparée
$reponse=$bdd->query('select libelle,id_categorie from categorie');
heu y a comme une contradiction :)

ta requête SQL n'indique pas d'utiliser de libelle
$sql = 'INSERT INTO produit VALUES("'.mysql_escape_string($_POST['reference']).'","'.mysql_escape_string($_POST['designation']).'","'.mysql_escape_string($_POST['categorie']).'")';

Le fonctionnement est donc normal.

Ceci dit tu devrait avoir une erreur de la part de page (undefined index).
Il te faut définir le niveau d'erreur à E_ALL pour DEV c'est obligatoire.

Tu aurais ainsi vu que tu utilise un nom de champ qui n'existe pas (dans $_POST).

de plus tu mélange PDO et l'extension mysql, le premier est a privilégier vue que le second n'est plus maintenue.

@+

Aide sur Formulaire

par Pemco » 29 août 2012, 12:23

<?php
try
{
//Connexion à partir de la base par PDO
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);
//Insertion des données dans la base à partir d'une requête preparée
$reponse=$bdd->query('select libelle,id_categorie from categorie');
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}
?>
<?php
// on teste si le visiteur a soumis le formulaire
if (isset($_POST['enregistrer']) && $_POST['enregistrer'] == 'Enregistrer') {
// on teste l'existence de nos variables. On teste également si elles ne sont pas vides
if ((isset($_POST['reference']) && !empty($_POST['reference'])) && (isset($_POST['designation']) &&
!empty($_POST['designation']))&&(isset($_POST['libelle']) && !empty($_POST['libelle']))) {
// Connexion à la base de données
$base = mysql_connect ('localhost', 'login', '');
mysql_select_db ('test', $base);
$data = mysql_fetch_array($req);
if ($data[0] == 0) {
$sql = 'INSERT INTO produit VALUES("'.mysql_escape_string($_POST['reference']).'","'.mysql_escape_string($_POST['designation']).'","'.mysql_escape_string($_POST['categorie']).'")';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: prod.php');
exit();
}
else {
$erreur = 'Un produit existe  déjà cette reférence.';
}
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Gestion des stocks</title>
<link href="../victoire/template.css" rel="stylesheet" type="text/css" />
</head>

<body>
<!--Entete de site-->
<div class="header">
<img class="icon" src="imgs/mdpasse.jpg" alt="ABUL" />
<h1>MyForum v0.1</h1>
</hr>
</div>
<!--La partie principale-->
<div class="main">
<!--Message d'erreur-->
<div class="err">
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>	
<!--La boîte de connection-->
<div class="box">
<h1>Bienvenue sur le formulaire de saisie des produits</h1>
<form action="prod.php" method="post">
<div class="field">
Référence : <input type="text" name="reference" value="<?php if (isset($_POST['reference'])) echo htmlentities(trim($_POST['reference'])); ?>"><br />
</div>
<div class="field">
Désignation: <input type="designation" name="designation" value="<?php if (isset($_POST['designation'])) echo htmlentities(trim($_POST['designation'])); ?>"><br />
</div>
<div class="field">
Libell&eacute;:<select   name="libelle"  size="1" id="libelle">
<?php 
while ($donnees= $reponse->fetch())
    {
  echo"<option value='".$donnees['id_categorie']."'>".$donnees['libelle']."</option>";
}
?>
</select>
</div>
<div class="buttons">
<input  class="button"type="submit" name="enregistrer" value="Enregistrer">
&nbsp;<input class="button" type="reset" />
</div>
</form>
</div>
</div>
<!--Le pied de page-->
<div class="footer">
<hr/>
Copyright &copy;2003-2012 Fofana Pemignan Marcel Ismael<br/>
Ce logiciel est sous license Gnu General Public License
</div>	
</body>
</html>
Bonjour cher amis developpeur,
Le champ Libellé qui se rempli grâce aux données d'un fichier.
Quand je seletionne les données pour les envoyer dans la base de données.
Tout se passe bien sauf pour le champ libellé.
Que faire?