Page 1 sur 1

Réccupérer la donnée d'un formulaire type liste de choix

Posté : 15 oct. 2014, 02:41
par cuixia
Salut,
J'aimerais récupérer la donnée d'un formulaire type liste de choix et la comparer avec ma base de données pour récupérer l'id correspondant.
Seulement je me retrouve avec l'erreur suivante :

Voici mon code :

//__________On se connecte à la bdd par PDO
	try
	{
		$bdd = ...
	}
	catch(Exception $e)
	{
		die('Erreur : '.$e->getMessage());
	} 
								
//__________Si le formulaire a bien été envoyé:
	if( isset($_POST['nom_fiche']) && isset($_POST['sigle_fiche']) && isset($_POST['choix_pp']) ) 
	{
//______________On echappe les variables pour pouvoir les mettre dans des requetes SQL
		if(get_magic_quotes_gpc()) 
		{
			$nom_fiche_form = stripslashes($_POST['nom_fiche']);
			$sigle_fiche_form = stripslashes($_POST['sigle_fiche']);
			$choix_pp_form  = stripslashes($_POST['choix_pp']);
		} 
		else 
		{
			$nom_fiche_form = $_POST['nom_fiche'];
			$sigle_fiche_form = $_POST['sigle_fiche'];
			$choix_pp_form = $_POST['choix_pp'];
		}
		$fixed_nom_fiche_form = mysql_real_escape_string($nom_fiche_form);
		$fixed_sigle_fiche_form = mysql_real_escape_string($sigle_fiche_form);
		$fixed_choix_pp_form = mysql_real_escape_string($choix_pp_form);	
		
//______________On sélectionne l'id de la politique publique choisie; TABLE POLITIQUE PUBLIQUE
		$sql01 = "SELECT * FROM politique_publique WHERE nom = :nom";
		$req01 = $bdd -> prepare($sql01);
		$req01 -> execute(array('nom' => $fixed_choix_pp_form));
		$select01 = $req01 -> fetch();
                $select01_idPP = $select01['idPP']
La fonction qui réutilise la variable $select01_idPP qu'il ne reconnait pas :
//__________________On remplie la base de donnée grâce à une requête "préparée" ; TABLE FICHE
			try
			{
				$sql02 = "INSERT INTO fiche VALUE ('', :nom, :sigle, NOW(), NOW(), 'hors ligne', :idUser, :idPP)";
				$req02 = $bdd-> prepare($sql02);					
				$req02 -> execute (array(	'nom' => $fixed_nom_fiche_form,
									'sigle' => $fixed_sigle_fiche_form,
									'idUser' => $_SESSION['idUser'],
									'idPP' => $select01_idPP
								));	
			}
			catch(Error $ec)
			{
				error(3);
			}		
Merci d'avance de votre aide ^^

Re: Réccupérer la donnée d'un formulaire type liste de choix

Posté : 16 oct. 2014, 13:27
par moogli
salut,

tu mélange l'extension mysql et pdo.
ceci n'est pas possible
<?php
  $fixed_nom_fiche_form = mysql_real_escape_string($nom_fiche_form);
                $fixed_sigle_fiche_form = mysql_real_escape_string($sigle_fiche_form);
                $fixed_choix_pp_form = mysql_real_escape_string($choix_pp_form);   
utilise la méthode quote de PDO pour cela.
vu que tu utilise une requête préparée (bien qu'inutile) tu n'as pas besoin de le faire.

ensuite sans la construction du select on ne peut pas trop t'aider ro mis te dire que généralement c'est la clef primaire est passée en valeur et pas un nom (différence <option value="pk">texte affiché</option> ici c'est pk qui est retourné et pas le texte).
pas de select * tu n'utilise qu'une colonne tu la mets dans le select. Et même si tu les utilisent toutes c'est plus clair pour les gens qui lisent ton code et cela ne coûte rien :)


@+