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

PHP & Base de données Discussion :

Récupérer la valeur d'un select au clic d'une option dans la value d'un submit


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 830
    Par défaut Récupérer la valeur d'un select au clic d'une option dans la value d'un submit
    Bonsoir,

    J'aimerais récupérer la valeur de la balise select au clique de l'option choisi pour pouvoir l'injecter dans la value d'un <input type submit>.

    Malgré tous mes recherches et efforts je finis par croire que c’est peut-être pas possible ?

    Voici mon code :
    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
    <?php 
        $db_server = 'localhost'; // Adresse du serveur MySQL
        $db_user_login = 'root';  // Nom de l'utilisateur
        $db_user_pass = '';       // Mot de passe de l'utilisateur
        $db_name = 'infos';       // Nom de la base de données
        // Ouvre une connexion au serveur MySQL
        $conn_base = mysqli_connect($db_server,$db_user_login, $db_user_pass, $db_name);
    	$req_base= "SHOW DATABASES WHERE not (`Database` LIKE '%schema%' or `Database` LIKE 'mysql%' or `Database` LIKE 'sys%' or `Database` LIKE 'crea%')";
    	$result_base=$conn_base->query($req_base);
    	@$text=$_POST['envoi']; 
    	if(isset($_POST['envoi'])){
    		$nombase=$text=$_POST['table']; 
    		$_SESSION["db_name"]=$nombase;
    	}
    	echo "<label>Selectionnez la base</label>";
    	echo '<form name="form" id="form" action="#" method="post">'; 
    		echo '<SELECT name=table multiple="multiple" id="d_base" onchange="document.getElementById("id_champ").value=this.options[selectedIndex].value">';		while ($ligne=mysqli_fetch_array($result_base)){
    				echo "<option value='".$ligne[0]."'>".$ligne[0]."</option>";
    			} 
    			$default =@$nombase; 
    			if(@$nombase == $default){
    				echo "<option selected=\"selected\">". $nombase ."</option>";
    			}
    			else{
    				echo "<option>". $nombase ."</option>";
    			}
    		echo "</SELECT>";	
    		echo '<input name="envoi" type="submit" id="id_champ" value="">';
    	echo '</form>';
        $db_name = @$nombase;  
    ?>	
    <script>
    	var select = document.getElementById('d_base');
    	select.size = select.length;
    </script>
    Mais la valeur de l'option choisi dans la balise select ne s’affiche pas dans la value de <input type submit>.

    Avez-vous une idée ou une réponse à ce que je souhaite faire, merci d’avance.

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Je ne comprends pas trop pourquoi tu veux faire tout cela.

    Si tu veux que PHP traite ton select multivalué il suffit d'ajouter des "[]" au nom du select.

    Tu obtiendras un tableau qui contiendra les éléments sélectionnés.



    PS : c'est généralement une mauvaise idée d'utiliser des @, utilise plutôt isset() ou ??

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 830
    Par défaut
    Bonjour Seb,

    Le but final est de permettre à l’utilisateur de sauvegarder une ou plusieurs bases.

    Je me suis dis que récupérer la valeur de l'option choisi de la balise select et l'injecter dans la value d'un élément <input type submit> afin d’éviter un echo de la valeur que l'utilisateur a sélectionnée, mais ce n’est certainement pas une bonne solution.

    En revanche cela fonctionne avec Input type « text ».
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <select multiple="multiple" id="nom_champ" onchange="document.getElementById('id_champ_texte').value=this.options[selectedIndex].value;" '>
    		<option value="Option #1">Option #1</option>
    		<option value="Option #2">Option #2</option>
    		<option value="Option #3">Option #3</option>		
    	</select>
    	<input type="text" name="nom_champ_texte" id="id_champ_texte" value="" '>
     
    	<script>
                    var select = document.getElementById('nom_champ');
                    select.size = select.length;
            </script>
    Je vais voir avec la balise select multivalué et éviter d'utiliser des @ mais plutôt isset() ou ??

    Merci pour votre réponse.

  4. #4
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    bonjour,

    ergonomiquement et visuellement, des cases à cocher seraient plus appropriées.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <p>
      <label><input type="checkbox" name="databases[]" value="Database #1"/>Database #1</label><br />
      <label><input type="checkbox" name="databases[]" value="Database #2"/>Database #2</label><br />
      <label><input type="checkbox" name="databases[]" value="Database #3"/>Database #3</label><br />
      <label><input type="checkbox" name="databases[]" value="Database #4"/>Database #4</label><br />
      <label><input type="checkbox" name="databases[]" value="Database #5"/>Database #5</label><br />
    </p>
    <p>
      <input type="submit" name="envoi" value="Envoyer">
    </p>

    Et si vraiment tu veux afficher les choix avant envoi :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <p>
      Vos choix : <span id="databases-recap"></span>
    </p>
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    document.querySelectorAll('input[name*=databases]').forEach(function(database){
      database.addEventListener('change', function(){
        var choix = [];
        var ii = 0;
        document.querySelectorAll('input[name*=databases]:checked').forEach(function(data){ // cases cochees
            choix[ii] = data.value;
            ii++;
        })
        document.querySelector('#databases-recap').textContent = choix.join(', '); // affiche les choix
      })
    });

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 830
    Par défaut
    Bonjour jreaux62,

    Merci pour votre réponse.

    En effet votre code plus approprié et adapté à mon code fonctionne bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while ($ligne=mysqli_fetch_array($result_base)){
    	echo '<label><input type="checkbox" name="databases[]" value="'.$ligne[0].'"/>'.$ligne[0].'</label><br/>';		
    }
    Je vais pouvoir poursuivre mon petit projet pour sauvegarder une ou plusieurs bases choisies par l’utilisateur.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 830
    Par défaut
    Bonjour à tous,

    Je reviens sur cette discussion pour vous demander comment récupérer dans une variable la valeur du ou des checkbox cochés ?

    Soyez indulgent compte tenu de mon niveau et vous remercie par avance pour vos réponse.

    @+

Discussions similaires

  1. Récupérer la valeur d'un select au click d'une option
    Par skyrex dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/03/2014, 10h02
  2. Comment récupérer la valeur de c select
    Par Tarba dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 30/06/2006, 15h52
  3. [JSP] Récupérer les valeurs d'un SELECT multiple
    Par ran_hery dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 15/05/2006, 15h56
  4. Récupérer les valeurs d'un <select> multiple
    Par vg33 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/10/2005, 11h38
  5. récupérer la valeur d'un select dans un autre
    Par alexander dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/03/2005, 19h43

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