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 :

[SQL] Comment prédéfinir la valeur d'un select multiple


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 148
    Par défaut [SQL] Comment prédéfinir la valeur d'un select multiple
    En fait j'ai un petit souci avec la fonction in_array()

    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
     
     
    <select name="Q37" size="10" multiple id="Q37">
              <option value="1"<?php
    if(in_array('1', $dbarray["Q37"])) echo "selected"; ?>>Gestion - Fiscalit&eacute;</option>
              <option value="2"<?php
    if(in_array('2', $dbarray["Q37"])) echo "selected"; ?>>Comptabilit&eacute;</option>
              <option value="3"<?php
    if(in_array('3', $dbarray["Q37"])) echo "selected"; ?>>Marketing</option>
              <option value="4"<?php
    if(in_array('4', $dbarray["Q37"])) echo "selected"; ?>>Commercial</option>
              <option value="5"<?php
    if(in_array('5', $dbarray["Q37"])) echo "selected"; ?>>Commerce &eacute;lectronique</option>
              <option value="6"<?php
    if(in_array('6', $dbarray["Q37"])) echo "selected"; ?>>Commerce international</option>
              <option value="7"<?php
    if(in_array('7', $dbarray["Q37"])) echo "selected"; ?>>Droit du travail</option>
              <option value="8"<?php
    if(in_array('8', $dbarray["Q37"])) echo "selected"; ?>>Gestion du personnel</option>
              <option value="9"<?php
    if(in_array('9', $dbarray["Q37"])) echo "selected"; ?>>Strat&eacute;gie</option>
              <option value="10"<?php
    if(in_array('10', $dbarray["Q37"])) echo "selected"; ?>>Protection - S&eacute;curit&eacute; - Normalisation</option>
              <option value="11"<?php
    if(in_array('11', $dbarray["Q37"])) echo "selected"; ?>>Autres</option>
              <option value="0" <?php
    if(in_array('0', $dbarray["Q37"])) echo "selected"; ?>>Aucun</option>
            </select>
    et voici l'erreur que j'obtient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    warning : in_array() : wrong datatype in argument 2
    $dbarray contient le resulat d'une requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    $q = "select Q31,Q32,Q33,Q34,Q351,Q352,Q361,Q362,Q37,Q38,Q39,Q310,Q311,Q312,Q313,Q314,Q315,Q316,Q317,visited from e_services_qce_user where user = '$username'"; 
    $result = mysql_query($q,$conn); 
    $dbarray = mysql_fetch_array($result);
    Voila si quelqu'un a une idée sur le problème..

  2. #2
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    $dbarray["Q37"] n'est pas un tableau, que contient ton champ Q37 ? Ce serait pas une liste de valeurs séparées par un séparateur, du type "2|13|33" ?
    Bye

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 148
    Par défaut
    ben c'est ce que me retourne le formulaire, cela correspond a la liste multiple..

  4. #4
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Tu devrais vérifier ce que tu as dans ta base, si t'insères directement $_POST['Q37'] ca ne peut pas marcher.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 148
    Par défaut
    Dans ma base de données, j'ai bien des valeurs espacée par un séparateur comment je peux mettre ça dans un tableau..

  6. #6
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Dans ce cas il faut recréer un tableau depuis ta chaîne avec explode().

    ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $arr = explode("|", $dbarray["Q37"]);
    if(in_array('1', $arr)) {}
    Bye

  7. #7
    Membre éclairé
    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2004
    Messages
    480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : développeur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2004
    Messages : 480
    Par défaut
    Voici le code que j'ai :

    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
     
    $query = "SELECT P.ID_PROFIL, P.LIB_PROFIL FROM PROFIL P ORDER BY LIB_PROFIL;";
    $result = mysql_query($query);
    $query2 = "SELECT ID_PROFIL FROM ACCEDE WHERE ID_ELEMENT_MENU= $menuid;";
    $result2 = mysql_query($query);
    $row2 = mysql_fetch_array($result2);
    if ($result==false){
    	// echo ("Erreur requète SQL : ".$query);
    	message_erreur("065",$_SESSION['emailadmin'],"gestion_menu");
    } else {
    	echo "<td>";
    	echo "<SELECT NAME=\"profil[]\" SIZE=\"5\" MULTIPLE>";
    	while ($row = mysql_fetch_array($result)) {
    		echo "<OPTION VALUE='".$row['ID_PROFIL']."'";
    		if (in_array($row['ID_PROFIL'], $row2)) {
    			echo " SELECTED";
    		}
    		echo ">".$row['LIB_PROFIL']."</OPTION>";
    	}
    	echo "</SELECT>";
    	echo "</td>";
    }
    Problème : il n'y a qu'un élément qui est "selected", alors qu'il devrait y en avoir plusieurs.

    Une idée ?

  8. #8
    Membre éclairé
    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2004
    Messages
    480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : développeur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2004
    Messages : 480
    Par défaut
    Il faut d'abord construire le tableau avant de faire in_array :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $query = "SELECT ID_PROFIL FROM ACCEDE WHERE ID_ELEMENT_MENU= $menuid;";
    $result = mysql_query($query);
    if ($result==false){
    	// echo ("Erreur requète SQL : ".$query);
    	message_erreur("065",$_SESSION['emailadmin'],"gestion_menu");
    } else {
    	$k =0;
    	while ($row = mysql_fetch_array($result)) {
    		$idprofil[$k]=$row[0];
    		$k++;
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ......
     
    if (in_array($row['ID_PROFIL'], $idprofil)) {
    			echo " SELECTED";
    ......

Discussions similaires

  1. [FAQ] Les formulaires (partie 1) Comment récupérer les valeurs d'un select multiple ?
    Par Auteur dans le forum Contributions JavaScript / AJAX
    Réponses: 9
    Dernier message: 17/11/2013, 11h26
  2. [Visual Web] comment récupérer la valeur d'un select
    Par DEV-10 dans le forum NetBeans
    Réponses: 4
    Dernier message: 09/11/2006, 20h41
  3. Réponses: 6
    Dernier message: 07/11/2006, 15h55
  4. 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
  5. [Conception] comment recupérer la valeur d'un select
    Par arno1977 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/06/2006, 14h09

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