liste déroulante passé en pdo

Eléphant du PHP | 75 Messages

01 août 2014, 12:57

Salut voilà j'ai ce petit bout de code que j'aimerais passé en pdo.
Mais comment faut il faire svp.
Merci a tous
<!-- votre région-->      
			<?php $req_region = mysql_query("select * from regions order by nom");?>
			<label>Region</label>
			<select name="region" class="form-control margin-bottom-20">
			<?php while($reg = mysql_fetch_array($req_region)){?>
				<option value="<?php echo $reg['region_id']; ?>"><?php echo $reg['nom'];?></option>
			<?php }?>
			</select>

ViPHP
xTG
ViPHP | 7331 Messages

01 août 2014, 13:05

Tu as des exemples dans la documentation : http://fr2.php.net/manual/fr/pdostatement.fetch.php :)

Eléphant du PHP | 75 Messages

01 août 2014, 13:15

Salut,
donc voilà ce que j'ai fait:

// du code .....
 $sql = 'INSERT INTO simply_user (id_simply_user, pseudo, region, password, email, date_create) VALUES (:pseudo,:age,:region,:md5($password),:email,:sexe,NOW())';
			
$req = $DB->insert($sql,$data);


<?php 
$req_region = $DB->query('SELECT * FROM regions order by nom'); 	
?>          
<label>Region</label>
<select name="region" class="form-control margin-bottom-20">
 <?php
  while ($reg = $req_region->fetch())
  {
  ?>
   <option value="<?php echo $reg['region_id']; ?>"><?php echo $reg['nom'];?></option>
  <?php
  }
 ?> 
Mais sur la page le select reste vide et aucune erreur qui apparait...?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

01 août 2014, 13:43

Salut,

Est tu sur de niveau de rapport d'erreur ? (Error_reporting = E_ALL obligatoire en développement) + display_error = on
As tu regardé le code html génère ? (Dans ton navigateur clic droit afficher la source).

As tu ajouté (avant) la connexion ? (Instance de PDO qui pointe vers ton sgbd ? )
As tu précisé le type de fetch que tu souhaite ? (Assoc, nul etc. )

Dernière chose est ce qu'il y a bien des données dans la table.
(Pi le select * c'est le mal il est préférable d'indiquer tous les champs.


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 75 Messages

01 août 2014, 14:26

bah je pense que c'est correct, nan ?
<?php
// identification du visiteur
session_start();
if(!empty($_SESSION['membre']))
{
  header('Location: index.php');// si utilisateur non identifié retour à l'index
}
 
// Verification du formulaire
if(!empty($_POST))
{
  extract($_POST);
  $valid = true;
   

  // les verification ...   

  // Verification saisie titre
  if(empty($titre))
  {
    $valid = false;
    $erreurtitre = 'Indiquez un titre';
  }
   
   // On se coonect à la BDD
  try{
  $bdd = new PDO('mysql:host=cl1-sql8;dbname=lasortie1','lasortie1','concept') or die(print_r($bdd->errorInfo()));
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $bdd->exec('SET NAMES utf8');
  }
   
  // en cas d'erreur de co à la BDD
  catch(Exeption $e){
  die('Erreur:'.$e->getMessage());
  }

 
// On insère le tout en BDD
 $req = $bdd->prepare('INSERT INTO simply_user (id_simply_user, pseudo, region, password, email, date_create) VALUES (:pseudo,:age,:region,:md5($password),:email,:sexe,NOW())');
    $req->execute(array(
	  'pseudo'=>$pseudo,
      'region,'=>$region,

	  // la suite
    ));
	
     echo $success;
     echo $erreur;
	
}
 

?>

 
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title> inscription utilisateur</title>

</head>
<body>
<form class="ins_con" method="post" action="compte_utilisateur_inscription.php">  
<h2>Inscription</h2>

      <p>
        <label for="nom">Nom :</label>
        <input type="text" name ="pseudo" id="nom" value="<?php echo (isset($_POST['pseudo'])?$_POST['pseudo']:''); ?>">
      </p>
       <p>
        <label for="email" class="required">Email :</label>
        <input type="email" name ="email" id="email" value="<?php echo (isset($_POST['email'])?$_POST['email']:''); ?>">
      </p>
      <?php if (!empty($erreur_email)): ?>
          <div class="error"><?php echo $erreur_email; ?></div>
        <?php endif ?>
      <p>
        <label for="password" class="required">Mot de passe :</label>
        <input type="password" name ="password" id="password">
      </p>
      <?php if (!empty($erreur_password)): ?>
      <div class="error"><?php echo $erreur_password; ?></div>
      <?php endif ?>
        
            
            
<?php 
$req_region = $bdd->query('SELECT * FROM regions order by nom'); 	
?>          
<label>Region</label>
<select name="region" class="form-control margin-bottom-20">
<?php
while ($reg = $req_region->fetch())
{
?>
<option value="<?php echo $reg['region_id']; ?>"><?php echo $reg['nom'];?></option>
<?php
}
?> 
<input type="submit" name ="submit" value="S'inscrire">
</form>


</body>
</html>

Donc avec ceci j'ai comme erreur Call to a member function query() on a non-object ligne 121
ligne 121 j'ai: $req_region = $bdd->query('SELECT * FROM regions order by nom'); ( de mon select )

Donc mon select est vide n'apparait meme pas :/

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

04 août 2014, 10:20

$bdd n'est créée que si le formulaire est posté (car dans le if).
Deplaçe le avant.

Le extract c'est pas terrible il est préférable de n'utiliser que le tableau $_POST afin de garder l'origine des variable et de ne pas laisser d'ambiguïté a ce sujet.

@+
Il en faut peu pour être heureux ......