Insérer élément d'une liste dans BD avec PHP

Résolu/Fermé
birdsfly Messages postés 240 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 11 octobre 2013 - Modifié par birdsfly le 3/04/2010 à 04:54
birdsfly Messages postés 240 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 11 octobre 2013 - 4 avril 2010 à 19:58
Bonjour,

en utilisant php, je transmet des données d'une page (un formulaire) vers une autre qui va se charger d'inserer ces données transmises dans la BD.
avec les zones de texte ça marche bien, mais ce n'est pas le cas pour les "select" par exemple:

page 1 dans le formulaire:
<input type=text name="titre">  
<select name="cat"> <option value="" selected> net <option value=""> virus  


page d'insertion:
<?php  
$var1=addslashes($_POST['titre']);  
$var2=$_POST['cat'];  
$req=$bdd->query("INSERT INTO table (titre, categorie) VALUES ('$var1','$var2')") or die(print_r($bdd->errorInfo()));  


lorsque je vérifie la table, je trouve que le "titre" est bien inséré, mais le champ "categorie" est toujours vide

Comment faire pour l'inserer?
Merci



"La haine est la voix de celui qui a laissé la souffrance planter son drapeau aisément sur son encéphale"
A voir également:

4 réponses

perso je me suis fais ca pour base ...


// fichier de conection a la BDD
<?php require_once('config.php'); ?>


<?php
if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent
{
if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer
{

// On utilise la fonction PHP htmlentities pour éviter d'enregistrer du code HTML dans la table
$message = htmlentities ($_POST['message'], ENT_QUOTES);
$pseudo = htmlentities ($_POST['pseudo'], ENT_QUOTES);

// Ensuite on enregistre le message
mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')");

// On se déconnecte de MySQL
mysql_close();
}
}

?>

ps: ca te va ?

__
_/ \_____________________
\__/ -
0
Utilisateur anonyme
3 avril 2010 à 05:00
le fichier config.php au cas ...

<?php

// Parametres mysql
define('DB_SERVER', 'localhost'); // serveur mysql
define('DB_SERVER_USERNAME', 'root'); // nom d'utilisateur
define('DB_SERVER_PASSWORD', ''); // mot de passe
define('DB_DATABASE', 'votre_base'); // nom de la base
define('DB_TABLE_CHAT', 'minichat');

// Connexion au serveur mysql
$connect = mysql_pconnect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD)
or die('Impossible de se connecter : ' . mysql_error());
// sélection de la base de données
mysql_select_db(DB_DATABASE, $connect);
?>
0
birdsfly Messages postés 240 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 11 octobre 2013 15
3 avril 2010 à 15:22
Merci DiabloBros, mais mon problème est seulement avec les variables postées venant d'une liste(menu).

Car dans le formulaire j'ai une liste où l'utilisateur doit sélectionner un élément (à coté d'autres zones de texte qu'il doit remplir), et lorsqu'il clique le bouton "valider", cela doit mener vers une autre page contenant du code php pour faire l'insertion des données postées par l'utilisateur dans la table, pour les données venant des zones de texte, aucun problème, elles s'insèrent dans la table, mais le champ réservé à la variable venant de la "liste" reste vide. Alors je pense que la manière de poster un élément sélectionné dans une liste est peut être différente de celle que je connais pour les zones de texte?!. Pour être plus claire voici mon code:

page "ajout.php":

<form action="ajout_post.php" method=POST>
	<table>
	<tr><td align=right>Nom ou e-mail :</td>
        <td><input type=text name="email"></td></tr>
	<tr><td>Rubrique :</td>
        <td><select name="rub"> <option value="" selected> Internet <option value=""> Free software <option value=""> Multimédia <option value=""> Communication <option value=""> Commerce <option value=""> Technologie <option value=""> Loisirs <option value=""> Manifestations </select></td></tr>
	<tr><td align=right>Titre de la nouvelle :</td>
        <td><input type=text name="titre"></td></tr>
	<tr><td align=right>Texte :</td>
        <td><textarea name="texte" rows="12" cols="70"></textarea></td></tr>
        <tr><td colspan=2 align=center><input type=submit value="Envoyer"></td></tr>
	</table>
	</form>


page "ajout_post.php":

<?php
	try
{
$bdd=new PDO('mysql:host=localhost;dbname=nouvelles', 'root', '');
}
catch(Exception $e)
{
	die('Erreur : ' . $e->getMessage());
}
$var1=addslashes($_POST['email']);
$var2=$_POST['rub'];
$var3=addslashes($_POST['titre']);
$var4=addslashes($_POST['texte']);
$req=$bdd->query("INSERT INTO nouvelle (email, rubrique, titre, texte, date, statut) VALUES ('$var1','$var2','$var3','$var4',NOW(),'attente')") or die(print_r($bdd->errorInfo()));
echo "Merci pour votre contribution...Dans quelques instants, vous serez automatiquement reconduit sur la page d'acceuil";
?>


Je pense que le problème est dans $var2 :(
0
birdsfly Messages postés 240 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 11 octobre 2013 15
3 avril 2010 à 17:54
UP
0
Utilisateur anonyme
4 avril 2010 à 00:16
essai avec $_POST['rubrique'];
0
ton code a l'air bon , donc je dirais, as tu assayé en GET plutot quand POST

c'est a dire pare une page intermediaire , dans la quel tu reafiche les données
et tu marque est ce sure c'est bien ca que vous voulez Up , un valider
et ca devrai etre bon...

(aprés re et re lecture, lol)

Haaaa sinon j'ai vu , il faut que $_POST['rub']; le rub soit rubrique

là tu post une variable appellé "rub" et tu lui dit mets rub dans "rubrique"
et du coup il comprend pas...
essai sinon avec $_POST['rubrique'];

ou alors appelé ca ligne de la BDD " rub " et pas rubtique




__
_/ \_____________________
\__/ -
0
birdsfly Messages postés 240 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 11 octobre 2013 15
4 avril 2010 à 18:39
salut :)
j'ai essayé avec $_POST['rubrique'] mais cela n'a pas réglé le problème :(
Merci pour votre aide
0
birdsfly Messages postés 240 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 11 octobre 2013 15
Modifié par birdsfly le 4/04/2010 à 19:58
Problème résolu, il me fallait juste remplir les "value" des balises <option> du menu. par l'option que je veux.

Exemple:

<select name="rubrique"><option value="Internet">Internet</option>
<option value="Commerce ">Commerce</option></select>

Et merci beaucoup DiabloBros ^^


"La haine est la voix de celui qui a laissé la souffrance planter son drapeau aisément sur son encéphale"
0