IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

select et foreach


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 35
    Points : 21
    Points
    21
    Par défaut select et foreach
    bonsoir
    ya pas mal de sujet la-dessus mais j'avoue ne pas avoir réussi et m'en dépatouiller ...
    mon code récupère une liste dans une BDD pour un select
    mais je n'arrive pas à récupérer le selectionné
    d'avance merci LJ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <?php
    $db = Factory::getDbo();
    $query = $db->getQuery(true);
    $query->select($db->quoteName(array('id', 'mot', 'tg_pl')))
    	->from($db->quoteName('#__tasawaq'));
     
    $db->setQuery($query);
    $results = $db->loadAssocList();
     
    ?>
     
    <form method="POST" action="">
    	<select class="test1" style="width: 220px;" name="mot">
    		<option selected="selected" value=""> - chercher un mot - </option>
    			<?php foreach ($results as $row) {   ?>
    			  <option value="<?php echo $row['mot']; ?>"> <?php echo $row['mot'];?></option>   
    		   	<?php } ?>
    	</select>  
    	<input type="submit" name ="choix"/> 
    </form>
     
    <?php
    if (isset($_POST['mot']))
    {
      echo ($_POST['mot']) ;
    }
    ?>

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut
    Bonjour,

    L'idée est très simple, c'est de comparer la valeur de $_POST["mot"] avec $row["mot"], s'il sont égaux tu ajoutes l'attribut selected à l'option courante :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <option value="<?php echo $row['mot']; ?>" <?php echo isset($_POST["mot"])&&$_POST["mot"]==$row["mot"]?" selected":"";?>> <?php echo $row['mot'];?></option>

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    merci
    la liste déroulante s'affiche correctement
    mais je n'arrive pas à afficher quand même la variable ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <form method="POST" action="">
    	<select class="test1" style="width: 220px;" name="mot">
    		<option selected="selected" value=""><h1> - chercher un mot - </h1></option>
    			<?php foreach ($results as $row) {   ?>			   
    		<option value="<?php echo $row["mot"]; ?>" <?php echo isset($_POST["mot"])&&$_POST["mot"]==$row["mot"]?" selected":"";?>>
    			   <?php echo $row["mot"];?>
    		</option> 
    		   	<?php } ?>
    	</select>  
    	<input type="submit" value="Traduire" name ="choix"/> 
    </form>
    LJ
     
     
    <?php
    if (isset($_POST["mot"]))
    	{
    	  echo ( $_POST["mot"]) ;
    	}
    ?>

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut
    Si la liste déroulante affiche les valeurs correctement, cela dit que la valeur de $_POST["mot"] existe bien.

    Après tu peux ajouter ces 3 lignes tout au début du code pour activer la visualisation des erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    Essaies d'ajouter une chaine de caractère avant $_POST["mot"] dans l'echo et sans parenthèses comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo "Le mot est :".$_POST["mot"];
    la valeur s'affiche ou pas ? pas d'erreur ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    merci mais pareil
    il semble y avoir une ligne en erreur
    Notice: Only variables should be assigned by reference in /home/ingallni/www/modules/mod_tasawaq/tmpl/default.php on line 18
    à cette ligne il y a $document =& JFactory::getDocument();
    je précise que je suis dans un module Joomla visible sur cette page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    <?php defined('_JEXEC') or die;
     
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
     
     
    JHtml::_('formbehavior.chosen', 'select');
    JHtml::_('formbehavior2.select2', '.test1');
    /**
     * File       default.php
     * Created    5/22/13 6:43 AM
     * Author     Matt Thomas | matt@betweenbrain.com | http://betweenbrain.com
     * Support    https://github.com/betweenbrain/
     * Copyright  Copyright (C) 2013 betweenbrain llc. All Rights Reserved.
     * License    GNU General Public License version 2, or later.
     */
    $document =& JFactory::getDocument(); 
    $document->addCustomTag( '<link rel="stylesheet" type="text/css" href="'. JURI::base() . 'modules/mod_tasawaq/tmpl/tasawaq.css" title="default" />' );  
     
       $uri = JURI::getInstance();
       $url = $uri->toString();           
     
    use Joomla\CMS\Factory;
     
    $db = Factory::getDbo();
    $query = $db->getQuery(true);
    $query->select($db->quoteName(array('id', 'mot', 'tg_pl')))
    	->from($db->quoteName('#__tasawaq'));
     
    $db->setQuery($query);
    $results = $db->loadAssocList();
     
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
     
    ?>
    <script>
        function JouerSon() {
                var sound = document.getElementById("beep");
                sound.play();
            }
    </script>
     
    <form method="POST" action="">
    	<select class="test1" style="width: 220px;" name="mot">
    		<option selected="selected" value=""><h1> - chercher un mot - </h1></option>
    			<?php foreach ($results as $row) {   ?>			   
    		<option value="<?php echo $row["mot"]; ?>" <?php echo isset($_POST["mot"])&&$_POST["mot"]==$row["mot"]?" selected":"";?>>
    			   <?php echo $row["mot"];?>
    		</option> 
    		   	<?php } ?>
    	</select>  
    	<input type="submit" value="Traduire" name ="choix"/> 
    </form>
     
     
     
    <?php
    if (isset($_POST["mot"]))
    	{ 
    echo "Le mot est :".$_POST["mot"];
    	}
    ?>

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut
    Ha ! je n'utilises pas joomla mais apparemment c'est le signe de référence "&" qui pose problème.

    t'as essayé de le supprimer ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    je viens d'essayer mais pas mieux
    en tout cas la notice a disparue

    quand je fais le Input il ne se passe rien même pas de rechargement de page !?
    LJ

  8. #8
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut
    Apparemment la récupération des variables $_POST et $_GET dans joomla devrait passer par JFactory::getApplication()->input; et ensuite tu le récupères avec $variable = $jinput->get('mot', 'default_value', 'filter');.

    Regarde ce lien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PDO] Afficher le résultat d'un select sans foreach
    Par arthuro45 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 16/11/2010, 17h35
  2. [MySQL] Foreach imbriqué aprés un select mysql
    Par inter-rupteur dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 02/05/2010, 18h30
  3. [PHP 5.3] SELECT(avec jointure) dans un foreach de checkbox
    Par NuDub dans le forum Langage
    Réponses: 7
    Dernier message: 18/01/2010, 14h42
  4. [JSTL] Faire un forEach sur un objet pour construire un select
    Par weed dans le forum Taglibs
    Réponses: 7
    Dernier message: 19/10/2008, 17h09
  5. select dans un foreach
    Par xclam dans le forum Zend_Db
    Réponses: 3
    Dernier message: 04/06/2008, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo