Page 1 sur 1

Aide sur Formulaire

Posté : 29 août 2012, 12:23
par Pemco
<?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?

Re: Aide sur Formulaire

Posté : 29 août 2012, 13:24
par moogli
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.

@+

Re: Aide sur Formulaire

Posté : 29 août 2012, 13:31
par katikat78
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

Posté : 04 sept. 2012, 13:30
par Pemco
<?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

Posté : 04 sept. 2012, 23:23
par moogli
- 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 !


@+