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 :

[AJAX] Actualisation de select


Sujet :

JavaScript

  1. #21
    Membre habitué Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Points : 191
    Points
    191
    Par défaut
    Bon, j'ai corigé ma deuxième fonction, ce qui donne au total:

    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
    document.getElementById('prix').innerHTML = leselect;
     
    var len = nb.options.length; 
    for (i = len; i >= 0; i--) {
    nb.options[i] = null;
    }
     
    var default_option = new Option("Choisir le nombre d'employé(e)s", "-1");
    nb.appendChild(default_option);
     
    if(sel.options.selectedIndex == 0){
    var len2 = pr.options.length; 
    for (i = len2; i >= 0; i--) {
    pr.options[i] = null;
    }
    var default_option2 = new Option("Choisir une surface", "-1");
    pr.appendChild(default_option2);
    }
    Mais j'ai toujours le problème sous IE
    Quelques conseils:

    Utilisez <?php plutôt que <?
    Utilisez des ' et la concaténation plutôt que "
    Pensez à revenir à la ligne après chaque ; pour plus de clarté.
    // Commentez votre code un maximum

  2. #22
    Membre du Club
    Inscrit en
    Août 2003
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 49
    Points : 55
    Points
    55
    Par défaut
    C'est normal qu'ils soient vide. Tu a fait les chose dans le mauvais ordre.
    Tu le remplis et tu le vide après...

    essaye ça:
    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
     
    function getXhr(){
        var xhr = null; 
        if(window.XMLHttpRequest) // Firefox et autres
            xhr = new XMLHttpRequest(); 
        else if(window.ActiveXObject){ // Internet Explorer 
            try {
    	xhr = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
    	xhr = new ActiveXObject("Microsoft.XMLHTTP");
    	}
        }
        else { // XMLHttpRequest non supporté par le navigateur 
             alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
             xhr = false; 
        } 
        return xhr;
    }
     
    /**
    * Ajax qui définit les surfaces et les prix
    */
    function prix_surface(){
        // Remise à zéro du select "prix"
        var len = pr.options.length; 
        for (i = len; i >= 0; i--) {
            pr.options[i] = null;
        }
        // On rajoute l'option par défaut
        var default_option = new Option("Choisir une surface", "-1");
        pr.appendChild(default_option);
        // Remise à zéro du select "nb_personne"
        var len = nb.options.length; 
        for (i = len; i >= 0; i--) {
            nb.options[i] = null;
        }
        // On rajoute l'option par défaut
        var default_option = new Option("Choisir le nombre d'employés", "-1");
        nb.appendChild(default_option);
     
        // On recupere notre module Ajax
        var xhr = getXhr();
        // On défini ce qu'on va faire quand on aura la réponse
        xhr.onreadystatechange = function(){
            // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
            if(xhr.readyState == 4 && xhr.status == 200){
                leselect = xhr.responseText;
                // On se sert de innerHTML pour rajouter les options a la liste
                document.getElementById('prix').innerHTML = leselect;
            }
        }
     
        // Ici on va voir comment faire du post
        xhr.open("POST","include/game/ajax_prix.php",true);
        // ne pas oublier ça pour le post
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        // ne pas oublier de poster les arguments
        // ici, l'id de l'auteur
        sel = document.getElementById('secteur');
        idsecteur = sel.options[sel.selectedIndex].value;
        xhr.send("idSecteur="+idsecteur);
    }
     
    /**
    * Ajax qui définit le personnel possible
    */
    function personnel(){
        // Remise à zéro du select "nb_personne"
        var len = nb.options.length; 
        for (i = len; i >= 0; i--) {
            nb.options[i] = null;
        }
        // On rajoute l'option par défaut
        var default_option = new Option("Choisir le nombre d'employés", "-1");
        nb.appendChild(default_option);
     
        var xhr = getXhr();
        // On défini ce qu'on va faire quand on aura la réponse
        xhr.onreadystatechange = function(){
            // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
            if(xhr.readyState == 4 && xhr.status == 200){
                leselect = xhr.responseText;
                // On se sert de innerHTML pour rajouter les options a la liste
                document.getElementById('nb_personnes').innerHTML = leselect;
            }
        }
        // Ici on va voir comment faire du post
        xhr.open("POST","include/game/ajax_personnel.php",true);
        // ne pas oublier ça pour le post
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        // ne pas oublier de poster les arguments
        // ici, l'id de l'auteur
        sel = document.getElementById('prix');
        idprix = sel.options[sel.selectedIndex].value;
        xhr.send("idPrix="+idprix);
    }

  3. #23
    Membre habitué Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Points : 191
    Points
    191
    Par défaut
    Sous cet ordre, j'ai du rajouter la def de mes variables au début et ça n'a rien changé sous IE, car je le rappel, sous Firefox ça marche, et FF et beaucoup plus respectueux des normes que IE, mais je mepose la question suivante, est-ce que ça peut venir de mon code re déclaration d'objet pour ajax:

    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
    function getXhr(){
    var xhr=null;	
    	if(window.XMLHttpRequest) // Firefox et autres
    	xhr = new XMLHttpRequest();
    	else if(window.ActiveXObject){ // Internet Explorer
    		try {
    		xhr = new ActiveXObject("Msxml2.XMLHTTP");
    		} catch (e) {
    		try {
    			xhr = new ActiveXObject("Microsoft.XMLHTTP");
    		} catch (e1) {
    			xhr = null;
    		}
    		}
    	}
    	else { // XMLHttpRequest non supporté par le navigateur
    		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    	}
    	return xhr;
    	}
    Quelques conseils:

    Utilisez <?php plutôt que <?
    Utilisez des ' et la concaténation plutôt que "
    Pensez à revenir à la ligne après chaque ; pour plus de clarté.
    // Commentez votre code un maximum

  4. #24
    Membre du Club
    Inscrit en
    Août 2003
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 49
    Points : 55
    Points
    55
    Par défaut
    Avant que tu fasse le remise à zéro (juste la mise à jour) ça marchait sous IE?

  5. #25
    Membre habitué Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Points : 191
    Points
    191
    Par défaut
    En fait j'avais pas essayé, car d'habitude, quand ça marche sous FF, ya pas de problème sous IE.
    Quelques conseils:

    Utilisez <?php plutôt que <?
    Utilisez des ' et la concaténation plutôt que "
    Pensez à revenir à la ligne après chaque ; pour plus de clarté.
    // Commentez votre code un maximum

  6. #26
    Membre du Club
    Inscrit en
    Août 2003
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 49
    Points : 55
    Points
    55
    Par défaut
    Reprend ton code de base et essaye stp

  7. #27
    Membre du Club
    Inscrit en
    Août 2003
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 49
    Points : 55
    Points
    55
    Par défaut
    le code que tu as mis pour getxhr n'est pas exactement le meme que ce qu'il y avait au début.

    var xhr=null; /**est dans ta fonction

    tu as oublié:

    var xhr = getXhr();

    J'ai refait le code que je t'ai mis plus haut. tu peux essayer?

  8. #28
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par Snowboarder69
    Dis-moi, Mr N. , il n'est pas possible de faire comme ça pour remmettre le select à Zéro?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('prix').innerHTML = "<option value='-1'>Choisir une surface</option>";
    Si c'est possible. Mais j'évite autant que possible l'utilisation de innerHTML pour préferer les méthodes DOM... Histoire de feeling

  9. #29
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    arf... J'ai un doute maintenant J'ai fait des tests qui ne sont pas concluants Faut que je retrouve mes codes sources...

    Sinon je t'invite à jeter un oeil à la faq javascript...

  10. #30
    Membre du Club
    Inscrit en
    Août 2003
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 49
    Points : 55
    Points
    55
    Par défaut
    Je trouvais ça un peu plus simple... Merci pour ta réponse Mr N.

  11. #31
    Membre habitué Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Points : 191
    Points
    191
    Par défaut
    Bon j'ai essayé avec ton code,

    j'ai du déplacer ces ligne en haut du code pour que cela fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	nb = document.getElementById('nb_personnes');
    	pr = document.getElementById('prix');
    Mais par contre aucun changement sous IE, la taille (hauteur est bonne: donc plusieur option) mais il restent deséspérément vide.

    De plus avec ce code, j'ai perdu la fonctionnalité de remise à zéro du second select UNIQUEMENT quand le premier est sur l'option zéro.

    Je vous demande donc encore conseil.

    Merci de votre aide en tout cas.
    Quelques conseils:

    Utilisez <?php plutôt que <?
    Utilisez des ' et la concaténation plutôt que "
    Pensez à revenir à la ligne après chaque ; pour plus de clarté.
    // Commentez votre code un maximum

  12. #32
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Bon. La situation est un peu délicate pour moi car j'ai proposé du code qui ne marche pas. Je me dois donc de le corriger. Malheureusement je n'ai pas trop le temps en ce moment de me pencher plus que ça dessus...

    Alors j'ai fait rapido un petit test (testé sur IE et Fx) qui devrait répondre à ton besoin.
    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
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    <?php 
     
     
    //{{{ Pseudo catégories pour faire les tests
    $surfaces = array(
        '25'  => '25 m2',
        '50'  => '50 m2'
    );
     
    $prix = array(
        '25' => array(
            '100' => '100 euros',
            '200' => '200 euros'
        ),
        '50' => array(
            '500' => '500 euros',
            '600' => '600 euros'
        )
    );
     
    $personnes = array(
        '25' => array(
            '100' => array(
                '2' => '2 pers',
                '4' => '4 pers'
            ),
            '200' => array(
                '6' => '6 pers',
                '7' => '7 pers'
            )
        ),
        '50' => array(
            '500' => array(
                '2' => '2 pers',
                '3' => '3 pers'
            ),
            '600' => array(
                '3' => '3 pers',
                '5' => '5 pers'
            )
        )
    );
    //}}}
     
    //Pour éviter le copier coller
    function echo_options($tab) {
        foreach($tab as $key => $value) {
            echo '<option value="'. $key .'">'. $value .'</option>';
        }
    }
     
    //On récupère l'action, si y en a pas ben on renvoie une page normale
    $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'default';
    switch($action) {
        case 'prix':
            //L'utilisateur veut un selectbox de prix en fonction de la surface 
            //qu'il vient de selectionner
            echo '<select name="prix" id="prix"><option>--</option>';
            if (isset($_REQUEST['surface']) && isset($prix[$_REQUEST['surface']])) {
                echo_options($prix[$_REQUEST['surface']]);
            }
            echo '</select>';
            break;
        case 'personnes':
            //L'utilisateur veut un selectbox de prix en fonction de la surface 
            // et du prix qu'il vient de selectionner
            echo '<select name="personnes" id="personnes"><option>--</option>';
            if (isset($_REQUEST['surface']) 
                && isset($_REQUEST['prix']) 
                && isset($personnes[$_REQUEST['surface']]) 
                && isset($personnes[$_REQUEST['surface']][$_REQUEST['prix']])) 
            {
                echo_options($personnes[$_REQUEST['surface']][$_REQUEST['prix']]);
            }
            echo '</select>';
            break;
        default:
            ?>
    <html>
        <head>
            <script type="text/javascript" src="http://script.aculo.us/prototype.js"></script>
            <script type="text/javascript">
            //Pour éviter le copier coller
            function register_prix() {
                Event.observe($('prix'), 'change', function() {
                        //Une petite requete pour récupérer un nouveau selectbox de personnes
                        new Ajax.Updater('les_personnes', '?action=personnes', {
                                parameters: Form.serialize('mon_form')
                        });
                });
            }
            Event.observe(window, 'load', function() {
                    Event.observe($('surface'), 'change', function() {
                            //On va perdre le selectbox de prix, donc on enleve les 
                            //evenements pour éviter les eventuels memory leaks
                            Event.stopObserving($('prix'), 'change');
     
                            //Une petite requete pour récupérer un nouveau selectbox de prix
                            new Ajax.Updater('les_prix', '?action=prix', {
                                    parameters: Form.serialize('mon_form'),
                                    onComplete: function() {
                                        //Il faut écouter le onchange du nouveau selectbox
                                        register_prix();
                                    }
                            });
     
                            //Sait-on jamais, peut-etre que personnes est influencé
                            //par surface...
                            new Ajax.Updater('les_personnes', '?action=personnes', {
                                    parameters: Form.serialize('mon_form')
                            });
                    });
                    register_prix();
            });
            </script>
        </head>
        <body>
            <form action="" method="POST" id="mon_form">
                <div>
                    <select name="surface" id="surface"><option>--</option><?php echo echo_options($surfaces); ?></select>
                    <span id="les_prix"><select name="prix" id="prix"><option>--</option></select></span>
                    <span id="les_personnes"><select name="personnes" id="personnes"><option>--</option></select></span>
                </div>
            </form>
        </body>
    </html>
            <?php
            break;
    }
    ?>
    Ca parait un peu dense, certes. Mais le javascript utilisé est assez court (à condition d'utiliser la librairie prototype.js)

    Coté php, j'ai simulé plusieurs fichiers (prix.php, personnel.php) par un parametre action, il suffit de déporter le code des différents 'case' dans leur propres fichiers pour adapter à ton goût (modifier alors le deuxième parametre de Ajax.Updater coté javascript).

    Coté client, une fois que le document est chargé (window.onload)
    On enregistre les évenements onchange des selectbox pour pouvoir faire les requetes ajax.
    Facile non ?

    Est-ce que ça répond à tes besoins ?

  13. #33
    Membre habitué Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Points : 191
    Points
    191
    Par défaut
    Alors là .... merci, c'est le seul mot qui me vient.

    Néamoins, j'ai quelques petites questions (encore et toujours !)

    - La librairie utilisée est sous quelles licence ?
    - Et puis-je l'enregistrer directement sur mon serveur ?
    - Dois-je marquer sur mon site que ce script a été développé par toi (je risque de le modifier pour ajouter d'autres select) ?

    Voilà je crois que c'est tout.

    Je vais m'y plonger dedans maintenant pour essayer de comprendre tout.

    En attendant, je ne met pas le post en résolu, j'aurais peut-être d'autres questions.

    Encore merci
    Quelques conseils:

    Utilisez <?php plutôt que <?
    Utilisez des ' et la concaténation plutôt que "
    Pensez à revenir à la ligne après chaque ; pour plus de clarté.
    // Commentez votre code un maximum

  14. #34
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Pour la librairie :
    http://prototype.conio.net/
    * Prototype is freely distributable under the terms of an MIT-style license.
    Il est bien sur extremement, vivement et fortement conseillé d'installer la lib sur ton serveur.

    Tu ne dois rien marquer à propos de moi. Au pire tu m'envoies un chèque Nan je plaisante ne m'envoie pas de chèque !
    Merci toutefois pour l'intention, c'est assez rare pour être félicité 8) ...

    Quand aux questions je suis assez étonné que tu ne les poses pas avant de remercier...

  15. #35
    Membre habitué Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Points : 191
    Points
    191
    Par défaut
    Vous vous disiez ouf un peu de repis ... et bin non, je reviens, à la charge.

    Pour ce qui est de ton script, j'ai tout compris, ça me va,

    Seulement, ici on a surface --> Prix --> Personne

    Or dans mon script de départ j'avais:

    secteur --> Surface/Prix --> personne

    J'entend par surface/prix, que la value du select était la surface et que j'affiché le prix dans l'option en la calculant à partir de la surface est d'un taux propre à chaque secteur (cd mon premier code).

    De ce fait, j'ai beau tourner dans tout les sens ton script, je n'arrive pas à gerer ça avec les array du début.

    J'ai essayé de creer des fonction pour réaliser des array dynamique mais ça me les affiche au lieu de faire des variable, enfin c'est le dawa.

    Celà relève à présent un peu plus de php que d'ajax, mais bon.

    Un peu d'aide serait (encore) la bienvenue.

    Pahcixam qui, il doit bien le dire, patauge un gros peu.
    Quelques conseils:

    Utilisez <?php plutôt que <?
    Utilisez des ' et la concaténation plutôt que "
    Pensez à revenir à la ligne après chaque ; pour plus de clarté.
    // Commentez votre code un maximum

  16. #36
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Facile.
    Il suffit dans ton éditeur de texte favoris de faire remplacer "surface" par "secteur", "prix" par "surface_prix"
    Et ça devrait rouler...

    J'aurais du les appeler toto titi tutu ça aurait été plus simple

  17. #37
    Membre habitué Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Points : 191
    Points
    191
    Par défaut
    Ca d'accord, je ne suis pas né de la dernière pluie quand même.

    Ce que je voulais c'est passer deux paramètre dynamique dans le même select.

    Mais je crois que j'ai trouvé en fait.
    Quelques conseils:

    Utilisez <?php plutôt que <?
    Utilisez des ' et la concaténation plutôt que "
    Pensez à revenir à la ligne après chaque ; pour plus de clarté.
    // Commentez votre code un maximum

  18. #38
    Membre habitué Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Points : 191
    Points
    191
    Par défaut
    Bon finalement j'y arrive pas. Le problème c'est que ta technique est basée sur les array en cascades, et je n'arrive pas à les généré dynamiquement.

    J'ai rajouté cette fonction pour creer le select surface/prix, mais tout le reste ne vaut rien.

    Que dois-je faire ?

    Merci d'avance:

    La fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function echo_surface_prix($tab,$coef) {
        foreach($tab as $key => $value) {
    		$prix = ceil($coef * $value);
            echo '<option value="'.$value.':'.$prix.'">'.$value.' m&sup2;&nbsp;&nbsp;&nbsp;&nbsp;-->
    		&nbsp;&nbsp;&nbsp;&nbsp;Prix: '.$prix.' pk </option>';
        }
    }
    Quelques conseils:

    Utilisez <?php plutôt que <?
    Utilisez des ' et la concaténation plutôt que "
    Pensez à revenir à la ligne après chaque ; pour plus de clarté.
    // Commentez votre code un maximum

  19. #39
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    D'où tu sors tes secteurs ?
    D'où tu sors surface/prix ? quel est le rapport entre un secteur et des surface/prix ?
    D'où tu sors tes personnes ? quel est le rapport entre un surface/prix et des personnes ?

  20. #40
    Membre habitué Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Points : 191
    Points
    191
    Par défaut
    C'est vrai, j'aurai du commencé par ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $secteur = array(
    	'2' => 'bois',
    	'4' => 'acier',
    	'6' => 'charbon',
    	'3.5' => 'informatique',
    	'7.1' => 'financier'
    );
     
    $surface = array('10','20','30','40','50','100','200');
    Donc en fait le premier select contient le secteur, a qui j'attribut dans le array() un coefficient de prix.

    Surface contient toutes les surfaces disponibles pour tout les secteurs.

    Dans le deuxième select j'affiche entre les <option>La surface dispo ainsi que son prix calculé de cette manière: coef secteur*surface.
    Et dans le value je met les deux même valeur séparé par ":", je récupère les valeur avec un bête explode().

    Et dans le 3ème select j'affiche le nombre de personnes "engageable" possibles jusqu'à un maximum de 0,8 fois la surface.

    Donc toutes mes valeurs sont liées, d'où l'ajax, et c'est aussi pour ça que je sais pas comment faire avec les array que tu a mis dans l'exemple de code, je vois pas comment les remplacer par mes truc pour que ça marche, d'où la tentative de fonction citée plus haut.

    Est-ce clair à présent ?

    Merci
    Quelques conseils:

    Utilisez <?php plutôt que <?
    Utilisez des ' et la concaténation plutôt que "
    Pensez à revenir à la ligne après chaque ; pour plus de clarté.
    // Commentez votre code un maximum

Discussions similaires

  1. [AJAX] Actualiser plusieurs selects communs ajax
    Par throrin19 dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 13/01/2009, 14h42
  2. php et ajax : actualisation select si retour sur page
    Par pascale86 dans le forum Langage
    Réponses: 4
    Dernier message: 08/02/2008, 20h11
  3. [PHP-JS] PHP + AJAX : Actualisation
    Par poussinphp dans le forum Langage
    Réponses: 4
    Dernier message: 28/07/2006, 10h22
  4. [AJAX] Actualisation d'une page par AJAX
    Par jack_1981 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/06/2006, 13h07
  5. [AJAX] actualiser un élément d'une liste
    Par caro_tpl dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/06/2006, 19h30

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