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 :

[PHP-JS] Sélection de données dans liste déroulante


Sujet :

Langage PHP

Vue hybride

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut [PHP-JS] Sélection de données dans liste déroulante
    Bonjour à tous,

    Désole pour le titre très peu explicite.

    Je développe pour ma boite une base de donnée sur les prix de revient. Je suis actuellement sur la page d'ajout d'un produit.(php/mysql)

    Donc dans la page j'ai créé en premier un formulaire pour rentrée le nom (ex: Maxi Choco ^^, le code (Ex:2109), date, etc.) du produit.

    La seconde étape pour ce produit (ex croissant chocolat) est de sélectionner ses matières premières ( ex: oeuf, lait, farine etc..).

    J'ai créé une liste déroulante qui va chercher dans une base de donnée (mysql) la liste des matières premières. Mais pour un produit, il me faut plusieurs matières premières avec leur quantité chacune.

    Comme je suis débutant je ne sais si cela est réalisable:

    Au niveau de la sectionner des matières premières,
    1/on en sélectionne la MP (matière première) ainsi que ça quantité (j'ai un formulaire pour la quantité.)
    2/ On clic sur le bouton "ajouter".
    3/ en cliquant dessus, ça affiche ce que je vient de sélectionner juste en dessous (sur la page actuelle)(et aussi les garder les informations en variable pour les rajouter dans ma base mysql).
    4/ Pouvoir rajouter plusieurs matière premières.
    ( Celui-ci de bouton ajouter ne servirait juste pour rajouter les MP)

    (voici en image: http://www.imagup.info/images/05/1188902756_2.JPG)
    Est ce possible?
    Des sites avec des exemples?
    M'aiguillez si possible ?
    J'espère être clair dans la description de mon soucis.

    guigui69

  2. #2
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

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

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    Hello,

    Je vois ce que tu veux faire...
    Mais cela ne va pas etre simple a expliquer...

    En gros, ta boite de sélection matiere première, va servir a alimenter une autre boite de sélection qui elle sera une boite de sélection multiple

    Pour créer une boite de sélection multiple, voici comment faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <select name="composition[]" multiple> 
      <option value='1'>valeur_1</option> 
      <option value='2'>valeur_2</option> 
      <option value='3'>valeur_3</option> 
      <option value='4'>valeur_4</option> 
    </select>
    Quand tu récupereras la valeur de composition, tu obtiendras un tableau de valeur.

    Maintenant voici ce que tu va devoir faire....

    Lorsque tu sélectionneras une matiere premiere dans ta boite de sélection, l'appui sur le bouton de validation va déclencher un Javascript qui ira crée une nouvelle ligne dans la boite composition....

    Quand la boite composition est pleine, et quand tu va appuyer sur le bouton Validation du formulaire général, cela va déclencher un javascript qui va sélectionner tous les éléments de ta liste composition puis valider le formulaire.

    Je te donne quelques exemples afin que tu ne sois pas perdu et que tu puisses avancer :

    Le bouton pour ajouter des matieres premières dans la boite composition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="button" onclick="Ajouter(this.form.MP,this.form.composition)" value="Ajouter &raquo;">
    Maintenant le javascript Ajouter()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function Ajouter(l1,l2) {
    		if (l1.options.selectedIndex>=0) {
    			o=new Option(l1.options[l1.options.selectedIndex].text,l1.options[l1.options.selectedIndex].value);
    			l2.options[l2.options.length]=o;
    		}else{
    			alert("Aucune matiere premiere sélectionnée");
    		}
    	}
    Tu auras également aenvie de supprimer de la boite composition en cas d'erreur, donc tu crée un bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="button" onclick="Effacer(this.form.composition,this.form.MP)" value="&laquo; Effacer">
    Et le code javascript qui va bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function Effacer(l1,l2) {
    		if (l1.options.selectedIndex>=0) {
    			o=new Option(l1.options[l1.options.selectedIndex].text,l1.options[l1.options.selectedIndex].value);
    			l1.options[l1.options.selectedIndex]=null;
    		}else{
    			alert("Aucune matiere sélectionnée");
    		}
    	}
    Bien maintenant il te reste a faire en sorte que tout les éléments de la boite composition soit sélectioné avant envoi (sinon cela n'envoi rien)
    Donc dans ta balise FORM, tu rajoutes ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    onSubmit="javascript:return CheckAlbumForm(this,'Souhaitez vous valider ceci','Vous devez avoir au moins deux composants');"
    Et maintenant la fonction javascript qui va bien :
    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
     
    function CheckAlbumForm(frm,alert1,alert2)
        {
            var select_len = frm.composition.length;
            var album = new Object();
     
            if (select_len > 1) {
                if (confirm(alert1)) {
                    for (i=0; i<select_len; i++) {
                            frm.composition.options[i].selected = true;
                    }
                    return true;
                }
                else
                    return false;
            }
            else {
                alert(alert2);
                return false;
            }
        }
    Bon là c'est vraiment du pré-maché....
    Un peu de patience, un peu de talent, et tu ne devrais pas en avoir pour plus d'une heure avant que cela ne fonctionne...

    Et surtout n'oublie pas de venir nous dire si cela a fonctionner...

    @+
    cadou

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    Merci je vais regarder ça.

    Lorsqu'il va créé le tableau il va m'inclure les quantité aussi, ou pas ?
    Les codes que tu ma indique son a rajouter dans ma page php ?
    Ma page est en php faut-il lui dire quelque chose pour que le java script soi interpréter?

    Voici mon code que j'ai dèja réalisé:

    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
     
    <html>
    <br>
    Bienvenue sur la page d'ajout d'un  nouveau produit
    <br>
    <form method="POST" action="ajouter.php">
    <input type="text" name="code produit" size="33" value="code_pdt" maxlength="35">
    <input type="text" name="nom prduit" size="33" value="nom_pdt" maxlength="35">
    <br>
    <select NAME="type">
    	<option value='F'> Frais </option>
    	<option value='S'> Surgele </option>
    </select>
     
    <select NAME="gamme">
    	<option value='B'> Boulangerie</option>
    	<option value='P'> Patisserie</option>
    	<option value='V'> Viennoisserie</option>
    	<option value='T'> Traiteur</option>
    </select>
     
    <select NAME="sgamme">
    	<option value='11'> Pains Blancs Traditionnel</option>
    	<option value='12'> Pains speciaux rotatif</option>
    	<option value='13'> Pains spéciaux sole blancs</option>
    	<option value='14'> Pains speciaux sole speciaux</option>
    	<option value='15'> Pains speciaux sole levain</option>
    	<option value='16'> Pains moulés</option>
    	<option value='17'> Feuilletees Petite piéce</option>
    	<option value='18'>	Feuilletées levées Petites Pièces</option>
    	<option value='19'> Brioches Petites Pièces</option>
    	<option value='20'>	Brioches Grosses Pièces</option>
    	<option value='21'>	Pâtes à choux</option>
    	<option value='22'>	Entremets</option>
    	<option value='23'>	Tartes et tartelettes</option>
    	<option value='24'>	Millefeuilles</option>
    	<option value='25'>	Traiteurs</option>
    	<option value='26'>	Flans</option>
    	<option value='27'>	Patisserie sêche</option>
    	<option value='28'>	Patisserie briochée</option>
    	<option value='29'>	Pains  500g</option>
    	<option value='30'>	Feuilletées Grosses Pièces</option>
    	<option value='51'>	Pain cru surgelé blanc</option>
    	<option value='52'>	Pain cru surgelé spéciaux</option>
    	<option value='53'>	Pain précuit surgelé blanc</option>
    	<option value='54'>	Pain précuit surgelé spéciaux</option>
    	<option value='55'>	Pain prépoussé</option>
    	<option value='56'>	Feuilletées crues Petites Pièces</option>
    	<option value='57'>	Feuilletées levées Petites Pièces</option>
    	<option value='58'>	Brioches crues grosses pièces</option>
    	<option value='59'>	Brioches prépoussées</option>
    	<option value='60'>	Brioches cuites surgelées</option>
    	<option value='61'>	Brioches cuites longue conservation</option>
    	<option value='62'>	Semis Finis fonds de tarte</option>
    	<option value='63'>	Semis Finis génoises</option>
    	<option value='64'>	Semis Finis plaques feuilletées</option>
    	<option value='65'>	Produits Finis entremets</option>
    	<option value='66'>	Produits Finis pâte à choux</option>
    	<option value='67'>	Produits Finis tartelettes et tartes</option>
    	<option value='68'>	Traiteurs</option>
    	<option value='69'>	Brioches crues petites pièces</option>
    </select>
    <?
    echo '<br>';
    $server="localhost";
    $user="*****";
    $pass="******";
    $db="pdr";
    mysql_connect($server,$user,$pass) or die('erreur de connexion');
    mysql_select_db($db) or die ('impossible de se connecter a la base'); 
    $sql="SELECT code_m, nom_m FROM matiere;";
     
    $query= mysql_query($sql) or die('erreur');
     
     
    $nb= mysql_num_rows($query);
     
    if ($nb == null){
     
    echo "Pas de produit disponible.";
     
    } else {
    // sinon
     
    echo "<html><body>";
    echo "<FORM name='formulaire' method='post' action='./ajouter.php'>";
     
    echo "<SELECT NAME='matierevoulus'>";
    while ( $list = mysql_fetch_array( $query ) ) {
    echo '<option value="'.$list["code_m"].'">'.$list["nom_m"].'</option>';
    }
    echo '<input type="text" name="qantite" size="4" value="qte_m" maxlength="35">';
    }
    echo "<html><body>";
    echo "</SELECT>";
    echo "<INPUT type='submit' value='ajouter1'>";
     
     
    echo "</FORM>";
     
    echo ''.$matierevoulus.''.$quantite.'';
    echo "<<<< ".$_POST["matierevoulus"]." >>>> ";
    echo $_POST["qte_m"];
    ?>
    Donc par rapport a l'image le début c'est pour le produit, à partir de ''<?'' c'est ici que j'interroge ma base, et .... ma demande

    Merci encore

    guigui69

    PS: Je n'ai jamais fait de javascript.

Discussions similaires

  1. [XL-2007] Ajout nouvelle donnée dans liste déroulante Userform/combobox
    Par grhum7 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/03/2014, 16h10
  2. [MySQL] Récupération des données dans liste déroulante dynamique
    Par shenmicke dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 02/09/2009, 16h02
  3. [MySQL] Selectionner bonne donnée dans liste déroulante
    Par rastacouaire dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/02/2009, 12h21
  4. Affichage de données dans liste déroulante
    Par marcGR dans le forum IHM
    Réponses: 3
    Dernier message: 13/06/2008, 17h56
  5. Sélection de valeur dans liste déroulante
    Par tonito53 dans le forum Struts 1
    Réponses: 3
    Dernier message: 27/12/2006, 13h47

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