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

JavaScript Discussion :

Liste à choix multiple - Undefined index


Sujet :

JavaScript

  1. #1
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut Liste à choix multiple - Undefined index
    Bonjour (ou re pour certains ),

    j'ai encore un problème, sur des listes déroulantes à choix multiples.

    J'affiche plusieurs listes déroulantes à choix multiple contenant chacune la liste des sociétés enregistrées dans ma base de données.

    Exemple d'une liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    echo '<select multiple="multiple" name="'.$idcat.'.2[]" size="3">';
    $reqsoc = mysql_query("SELECT nom_societe,id_societe
    				FROM societe WHERE id_societe;");
    while($soc = mysql_fetch_array($reqsoc))
    {
    	$idsoci = $soc['id_societe'];
    	$nomsoci = $soc['nom_societe'];
    	echo '<option value="'.$idsoci.'">'.$nomsoci.'</option>'; 
    }
    echo '</select>';
    Ceci génère le code HTML suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <select size="3" name="46.2[]" multiple="multiple">
    <option value="13">Ste1</option>
    <option value="14">Ste2</option>
    <option value="37">Ste3</option>
    </select>
    Jusque là, apparemment tout va bien.

    Ensuite quand je soumets mon formulaire pour insérer dans ma base les sociétés sélectionnées dans mes listes, je déclenche en théorie ce 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
     
    if(isset($_POST[$min.'.2']))
    {
    	if (!empty($_POST[$min.'.2']))
    	{
    		for($i=0;$i<(sizeof($_POST[$min.'.2']));$i++)
    		{
    			if(isset($_POST[$min.'.2'][$i]))
    			{
    				// Récupération de l'id societe
    				$idsoc = explode('-',$_POST[$min.'.2'][$i]);
    				$reqins = mysql_query("INSERT INTO lien_projet_societe(id_societe,id_projet,id_categorie_societe)
    	VALUES('".$idsoc[0]."','".$pjt."','".$min."');");	
    			}
    		}
    	}
            // Test pour voir le contenu si c'est vide ou non
            echo 'post : '.$_POST[$min.'.2'].'<br />';
    }
    Et là :
    Notice: Undefined index: 46.2 in C:\Program Files\EasyPHP5.3.0\www\extranet\modif_projet.php on line 434
    Ma ligne 434 est celle où je fais mon echo 'post : '.$_POST[$min.'.2'].'<br />';.

    Comme j'ai cette erreur, je n'entre pas dans mon if(isset ...).
    Sauf que j'utilise cette méthode ailleurs dans mes pages, de la même manière et ça fonctionne sans aucun problème.

    Donc est-ce que vous voyez quelque chose de manquant ou en trop ou ... ?

    EDIT : est-ce parce que je dois passer les sociétés choisies à "selected" ? Si oui, comment puis-je faire le test ? (j'ai testé d'ajouter un attribut en javascript mais sans succès)

  2. #2
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Bonjour,

    je me permets de faire remonter mon post car je n'avance pas et j'ai vraiment besoin de ça :/

    J'ai essayé d'ajouter l'attribut selected à mes option sélectionnées :
    (déclenchement sur le onclick d'un option)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function selectio(id)
    {alert(id);
    	var sel = document.getElementById(id);
    	sel.setAttribute('selected', 'selected');
    }
    Mais rien à faire. Est-ce que vous voyez une solution ?

    En gros mon problème : je souhaite enregistrer tous les option sélectionnés dans toutes les listes !

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    je pense que là, il faut effectivement du javascript...
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Hum ... sauf que je ne suis pas certaine que le problème vienne de là et nécessite donc le JavaScript, enfin je sais pas trop =/

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function selectio(id)
    {alert(id);
    	var sel = document.getElementById(id);
    	sel.selected='selected';
    // ou  sel.selected=true;
    }
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    En fait, pour que ton script php reçoive les valeurs de toutes tes listes, il faut qu'elles aient été sélectionnées d'abord. Et à part en js , je vois pas comment tu pourrais tout sélectionner automatiquement...
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Rien à faire, j'ai toujours mon 'undefined index' pour chacun de mes select ...

    EDIT : Celira > je suis bien d'accord, je disais plus ça par rapport au fait que mon problème avait peut-être un lien avec PHP

  8. #8
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    AHHHHH,

    Je t'ai retrouvé

    Je sais pas pourquoi tu es partie sur JS ?

    Bon alors voilà (bien que je ne fais pas du tout comme celà : et ce n'est pas forcement la meilleure solution), j'ai deux questions:

    1) Pourquoi de la concaténation
    name="'.$idcat.'.2[]" et pas name="'.$idcat.'2[]"

    2) ton echo, j'ai tjs du mal avec cette syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo "post : ".$_POST[$min.'.2']."<br />";.




    EDIT: AH oui j'ai compris la question
    Désolé, je vire le message dans 2 mn

    ça affiche rien
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  9. #9
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Parce que le '.' est voulu juste avant le 2

    Je suis partie sur JS parce qu'il me semblait qu'il fallait que mes option passent en selected pour que j'ai quelque chose à enregistrer dans ma base. Que faire un $_POST['monselect'] n'était pas suffisant si je ne passais pas les option en selected.

    EDIt : est-ce parce qu'il manque des ' ' autour de mon $min ?

  10. #10
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Oui,

    J'aurais essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    eval('$varE = $_POST["'.$min.'.2''"];');
    Je dis ça car j'avais une même astuce pour c cas là en java ....
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  11. #11
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Une autre idee:

    $_POST[] est en fait un array.

    Donc par un foreach($_POST as $cle=> $value)

    tu peux avoir tous tes noms de champs (y compris le bouton submit) dans les $cle, et tu traites en travaillant sur le debut du nom car je suppose que c'est seulement le fin du nom qui est variable.
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  12. #12
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Merci pour tes réponses Fench, mais j'ai trouvé d'où venait le problème.

    Enfin trouvé, c'est un bien grand mot disons que j'ai contourné le problème.

    Et si quelqu'un a une explication je suis preneuse !

    J'avais :
    qui ne fonctionnait pas.

    J'ai fait un print_r($_POST) et me suis rendue compte que j'avais bien les bons éléments sélectionnés mais ça s'affichait avec des '_'.

    J'ai donc écrit :
    Et là, ça fonctionne ! oO

    Alors pourquoi ? bonne question !

  13. #13
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Je crois que c à causes des caractères interdits pour les variables non!

    Regardes avec les '.' ou les ' ', qd je post, c automatiquement remplacé par des '_' A savoir dans tous les cas
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  14. #14
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    En tout cas c'est bon à savoir ! Je vais tâcher de pas oublier ça ^^

  15. #15
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Je me permets de remonter mon post car j'ai un nouveau problème concernant mes listes à choix multiples.

    Il est possible de supprimer des valeurs (donc des option) de ces listes simplement en cliquant sur une valeur.
    Le problème est que pour envoyer ma liste, mes valeurs doivent être en "selected".

    Si je supprime une valeur, les autres ne restent pas en selected comme on a cliqué sur une des valeurs. Donc quand je veux passer ma liste, elle est détectée comme vide =/

    Le moyen est-il de repasser tous les éléments de la liste en selected une fois qu'on a supprimé une valeur, dans la fonction de suppression ?
    Si oui, comment puis-je faire pour sélectionner tous les <option> d'une liste (et pas tous les <option> de toute ma page avec elementbyclassname ou quelque chose comme ça)

    Ma fonction de suppression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function del_liste(choix)
    {
    	var listeChoix = document.getElementById("personnes_projet");
    	var del = document.getElementById(choix);
    	listeChoix.removeChild(del);
    }
    Merci =)

    EDIT : un problème n'arrivant jamais seul (merci Murphy), j'ai un bug sur une suppression que je n'avais pas avant =/
    Voila mon autre fonction qui me renvoie une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function del_soc(cat,soc)
    {
    	alert(cat+'-'+soc);
    	var listeSoc = document.getElementById("soc_add"+cat);
    	var delsoc = document.getElementById(cat+'-'+soc);
    	listeSoc.removeChild(delsoc);
    }
    Et l'erreur en question :
    uncaught exception: [Exception... "Component returned failure code: 0x80004003 (NS_ERROR_INVALID_POINTER) [nsIDOMHTMLSelectElement.removeChild]" nsresult: "0x80004003 (NS_ERROR_INVALID_POINTER)" location: "JS frame :: http://127.0.0.1/extranet/modif_projet.php :: del_soc :: line 155" data: no]
    Euh, vous sauriez me traduire ?

    EDIT : problème résolu, il manquait un mot dans ma fonction javascript et j'ai bidouillé pour supprimer les bonnes sociétés et garder les autres.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/03/2006, 12h39
  2. Zone de liste à choix multiple
    Par zoom61 dans le forum Access
    Réponses: 2
    Dernier message: 31/01/2006, 13h06
  3. Utilisation des liste à choix multiples
    Par mic79 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/07/2005, 11h40
  4. recuperer valeur liste choix multiple
    Par gabychon dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/06/2005, 11h47
  5. [Débutant][JSP] récupération liste choix multiple
    Par Jovial dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/05/2004, 13h59

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