PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 15-11-2012 11:26:06

valmelissa
Membre
Inscription : 07-11-2012
Messages : 12

[Résolu] recupérer la valeur de la liste deroulante dynamique

Bonjour,
je voudrais pouvoir recupérer la valeur de l'attribut name de l'input du formulaire que j'ai fait mais je n'y arrive pas. mon code est celui-ci

<?php
echo "<select name='annees' >";
for($i=1920; $i<=2009; $i++)
{
// Affichage de la ligne
echo "<option value='". $i."' ".$selected.">".$i." </option >";
// Remise à zéro de $selected
$selected='';
}
echo "</select>";?>

quand je fais ceci pour recupérer le contenu de la liste deroulante selectionné ou si je fais echo la variable $annees=$_POST['annees'] je n'ai rien.
quand cette liste deroulante n'est pas dynamique je le fais aisément mais là je ne comprends pas pour quoi ça ne donne pas.
Merci

Hors ligne

#2 15-11-2012 12:12:37

ManicoW
Cowrespondant
Lieu : Tours
Inscription : 08-05-2009
Messages : 192
Site Web

Re : [Résolu] recupérer la valeur de la liste deroulante dynamique

Bonjour,

On va essayer de faire quelques suppositions, même si cela n'est pas facile avec juste ce bout de code.

1/ Le formulaire est t'il bien en POST ? si il est en GET ou que ce n'est pas spécifié (ce qui le met en GET), cela n'alimente pas le tableau $_POST

2/ Le bouton de soumissions du formulaire est il bien dans le bon formulaire ? Si il y a plusieurs formulaires dans une page, chaque bouton de soumission ne se rapporte qu'au formulaire dans lequel il est , et ne sont donc transmis que les input de ce formulaire.

3/ Je pense qu'il y a un souci au niveau de l'utilisation du $selected, on ne sait pas comment il est défini, et surtout il est remis a zéro dès la première occurence de la boucle, donc il ne peut être efficace, eventuellement, que sur 1920.

Cela donne quelques pistes de recherches, même si le point 3 n'a normalement rien a voir avec l'absence de cette valeur.

@+
ManicoW


la v2, c'est tabou, on en viendra tous a bout

Hors ligne

#3 15-11-2012 12:24:44

valmelissa
Membre
Inscription : 07-11-2012
Messages : 12

Re : [Résolu] recupérer la valeur de la liste deroulante dynamique

Merci de m'aider,
1 - le formulaire est en post
2- le bouton de soumission est dans le formulaire
3- le $selected est effectivement mis à vide. au depart aussi il est à vide.
je te poste tout mon code pour que tu comprennes mieux ma logique

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "[url]http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd[/url]">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Recherche d'étudiants</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
   
    </head>
  <body>
    <h2>Recherche d'étudiants</h2>
    <form method="post" action="" >
      <p>
            <label>Nom d'étudiant </label>
        <input type="text" name="nom" value=""/>
        <div id="nom"></div>
        <input type="submit" name="recherche"  value="Rechercher"/>
      </p>
   

<?php

include("fonctions.connect.php");
 echo "<select name='annees' >";
$selected='';
for($i=1920; $i<=2009; $i++)
{
// Affichage de la ligne
echo "<option value='". $i."' ".$selected.">".$i." </option >";
// Remise à zéro de $selected
$selected='';
}
echo "</select>";
$an=isset($_POST['annees']);
echo "$an";
?>
</form>
<?php
// Si une recherche a été effectuée (bouton "Rechercher" cliqué) :
if (isset($_POST['recherche'])) {

     $connect_db = connect();
  // Recherche des étudiants dans la base de données
  // début de construction de la requête : par défaut, on sélectionne tous les étudiants
  $requete = "SELECT nom, prenom FROM etudiant ";
  // éventuelle restriction de la recherche selon le nom de l'étudiant saisi
    // taille de la selection
  if (!empty($_POST['nom'])) {
    $nom = mysql_real_escape_string($_POST['nom']);
    $requete .= "WHERE nom = '$nom' ";
  }
  // fin de construction de la requête : classement des résultats
  // par ordre alphabétique des noms, puis des prénoms
  $requete .= "ORDER BY nom, prenom ;";
  // exécution de la requête sur la base de données
  $etudiants = mysql_query($requete)
  or exit("<p>La requête au serveur MySQL a échoué : ".mysql_error()."</p>\n");

  // Affichage des étudiants trouvés
  echo '<h2>Résultat</h2>';
  $etudiant = mysql_fetch_array($etudiants);
  // cas où la recherche n'a donné aucun résultat
  if (!$etudiant)
    echo "<p>Aucun étudiant ne correspond à votre recherche.</p>";
  // autre cas : il y a au moins un étudiant à afficher
  else
    // écriture d'un paragraphe par étudiant trouvé
    do/*
        echo "<p>".htmlspecialchars(strtoupper($etudiant['nom']))." "
         .htmlspecialchars($etudiant['prenom'])." </p>\n";*/

 {$lib_nom=htmlspecialchars(strtoupper($etudiant['nom']))." ".$etudiant['prenom'];
?>    
    <a href="fiche_etudiant.php?fiche=<?php echo "$lib_nom";?>"><?php echo $lib_nom; ?></a><br>    
     
<?php
}
while ($etudiant = mysql_fetch_array($etudiants));
   
  close();
}
?>
    </body>
</html>
 

voilà merci

Dernière modification par valmelissa (15-11-2012 12:28:36)

Hors ligne

#4 15-11-2012 12:36:50

valmelissa
Membre
Inscription : 07-11-2012
Messages : 12

Re : [Résolu] recupérer la valeur de la liste deroulante dynamique

si au moins dans mon echo il m'affichait 1920 qui est ici la valeur par defaut mais non il m'affiche le nombre 1. je sais pas pourquoi.

Hors ligne

#5 15-11-2012 13:32:10

ManicoW
Cowrespondant
Lieu : Tours
Inscription : 08-05-2009
Messages : 192
Site Web

Re : [Résolu] recupérer la valeur de la liste deroulante dynamique

Re,

C'est tout a fait logique, quand on a tout le code. En effet, l'affectation de $an se fait tel que ci dessous :


$an=isset($_POST['annees']);
 

$an prend donc la valeur retournée par la fonction isset.

D'après le manuel de php, je cite "Retourne TRUE si var existe et a une valeur autre que NULL, FALSE sinon."

L'interprétation de TRUE par php étant 1, il est logique que $an soit égal a 1 en utilisant ce code.

Un bon code pour ce traitement serait plutot quelque chose comme


if(isset($_POST['annees'])) {
    $an = $_POST['annees'];
} else {
    $an = '';
}
 

Ce qui peut aussi s'écrire, en mode raccourci, et le code ressemble d'ailleurs a une mauvais compréhension de cette syntaxe :


$an = isset($_POST['annees']) ? $_POST['annees'] : '';
 

C'est appelé l'opérateur ternaire, documenté ici : http://php.net/manual/fr/language.opera … arison.php (a la section opérateur ternaire).

@+
Manicow


la v2, c'est tabou, on en viendra tous a bout

Hors ligne

#6 15-11-2012 13:44:22

valmelissa
Membre
Inscription : 07-11-2012
Messages : 12

Re : [Résolu] recupérer la valeur de la liste deroulante dynamique

Merci beaucoup j'ai compris. Du coup j'ai corrigé mon erreur et ça donne. merci.

Hors ligne

Pied de page des forums