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. #41
    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 Pahcixam
    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().
    Berk. Berk. Berk.
    Ca ne sert à rien puisque tu as normalement la valeur du premier select qui est transmise à chaque envoie du formulaire.

    C'est bien ce que tu as écris, c'est exactement ce que tu dois coder... Il suffit de traduire =>

    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.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $surface = array('10','20','30','40','50','100','200');
    function echo_surface_for_secteur($secteur) {
       global $surface;
       echo '<select name="surface" id="surface">';
       echo '<option>--</option>';
       if ($secteur) {
          foreach($surface as $s) {
             echo '<option value="'. $s .'">'. $s .' => '. ($s * $secteur) .'</option>';
          }
       }
       echo '</select>';
    }
    Et dans le 3ème select j'affiche le nombre de personnes "engageable" possibles jusqu'à un maximum de 0,8 fois la surface.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function echo_personne_for_surface($surface) {
       echo '<select name="surface" id="surface">';
       echo '<option>--</option>';
       if ($surface) {
          foreach(range(1, 0.8 * $surface) as $p) {
             echo '<option>'. $p .'</option>';
          }
       }
       echo '</select>';
    }

    Il suffit ensuite de valider ce que tu recoit de ta requete pour les passer à ces fonctions... Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $surface = isset($_REQUEST['surface']) && is_numeric($_REQUEST['surface']) ? $_REQUEST['surface'] : null;
    echo_personne_for_surface($surface);
    Bref à toi d'adapter ton code en fonctions de tes besoins

  2. #42
    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 bossé sur le truc et je suis arrivé à ç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
    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
    131
    132
    133
    <?php 
     
    //{{{ Pseudo catégories pour faire les tests
    $secteur = array(
    	'2' => 'bois',
    	'4' => 'acier',
    	'6' => 'charbon',
    	'3.5' => 'informatique',
    	'7.1' => 'financier'
    );
     
    $surface = array('10','20','30','40','50','100','200');
     
    //On déclare nos fonctions ici
    function echo_secteur_for_array($secteur) {
    	global $surface;
    	echo '<select name="secteur" id="secteur">
    		<option value="0">Aucun</option>';
        foreach($secteur as $coef => $domaine) {
            echo '<option value="'.$coef.'">'.$domaine.'</option>';
        }
    	echo '</select>';
    }
     
    function echo_surface_for_secteur($secteur,$coef) {
       global $surface;
       echo '<select name="surface_prix" id="surface_prix">';
       echo '<option>--</option>';
       if ($secteur) {
          foreach($surface as $s) {
    		echo '<option value="'. $s .'">'. $s .'m&sup2; => '. ($s * $coef) .' pk </option>';
          }
       }
       echo '</select>';
    }
     
    function echo_personne_for_surface($surface) {  
    	echo '<select name="personnes" id="personnes">'; 
    	echo '<option>--</option>'; 
    	if ($surface) {  
    		foreach(range(1, 0.8 * $surface) as $p) {  
    			echo '<option value="'.$p.'">'. $p .'</option>'; 
    		}  
    	}  
    	echo '</select>'; 
    }
     
     
    //On récupère l'action, si y en a pas ben on renvoie une page normale
    $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'default';
    $surface_prix = isset($_REQUEST['surface_prix']) && is_numeric($_REQUEST['surface_prix']) ? $_REQUEST['surface_prix'] : null;
     
    switch($action) {
    	case 'secteur':
    		//Les secteurs
    		echo_secteur_for_array($secteur);
    		break;
        case 'surface_prix':
            //L'utilisateur veut un selectbox de surface/ prix en fonction du secteur
            //qu'il vient de selectionner
    		echo '<select name="surface_prix" id="surface_prix"><option>--</option>';
            if (isset($prix[$_REQUEST['secteur']])) {
                echo_surface_for_secteur($prix[$_REQUEST['secteur']]);
            }
            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['secteur']) 
                && isset($_REQUEST['surface_prix']) 
                && isset($personnes[$_REQUEST['secteur']]) 
                && isset($personnes[$_REQUEST['secteur']][$_REQUEST['surface_prix']])) 
            {
                echo_options($personnes[$_REQUEST['secteur']][$_REQUEST['surface_prix']]);
            }
            echo '</select>';
            break;
        default:
            ?>
    <html>
        <head>
            <script type="text/javascript" src="script.js"></script>
            <script type="text/javascript">
            //Pour éviter le copier coller
            function register_prix() {
                Event.observe($('surface_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($('secteur'), 'change', function() {
                            //On va perdre le selectbox de prix, donc on enleve les 
                            //evenements pour éviter les eventuels memory leaks
                            Event.stopObserving($('surface_prix'), 'change');
     
                            //Une petite requete pour récupérer un nouveau selectbox de prix
                            new Ajax.Updater('les_prix', '?action=surface_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>
                    <span id="les_secteurs"><?php echo echo_secteur_for_array($secteur); ?></span>
                    <span id="les_prix"><select name="surface_prix" id="surface_prix"><option>--</option></select></span>
                    <span id="les_personnes"><select name="personnes" id="personnes"><option>--</option></select></span>
                </div>
            </form>
        </body>
    </html>
            <?php
            break;
    }
    ?>
    Mais ça ne marche pas, il doit avoir un truc niveau js qui doit pas être correct, ou alors php.
    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

  3. #43
    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
    Je comprends pas trop ta démarche là. Tu dis que tu comprends la proposition que je te donne mais tu es incapable de l'utiliser à bon escient.
    Tu mises sur trop de chevaux à la fois. Au lieu de travailler avec trois select, travaille avec 2.
    Tu as l'habitude de travailler avec des fichiers séparés... Qu'est-ce que tu attends pour le faire ici ? Cette une mauvaise chose que de travailler avec les méthodes d'un autre (à moins que celles ci te révolutionnent)

    Pourquoi as-tu ajouter un case dans le switch($action) ? tu ne fais jamais appel à ton script avec action=secteur....
    Pourquoi as-tu ajouté un parametre $coef à la fonction echo_surface_for_secteur ? Comme ça au pif ?
    Dans echo_secteur_for_array, que vient faire "global $surface;" ?

    Tout ce que je peux te dire c'est que ton problème réside dans la partie php...
    Ah si une chose coté javascript... c'est quoi ce script.js ? il vient d'où ? Il est passé où prototype.js ?

  4. #44
    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'abandonne, j'ai passé trop de temps sur ce problème, sans avoir aucune solution qui marche.

    Mr N., merci de ton aide, mais je dois vraiment pas tout comprendre pour ne rien arriver à faire en tout ce temps.

    Ce qui me dégoute c'est que j'avais fait du bon boulot dans mon premier code, qui était tout à fait fonctionnel sous FF mais pas sous ce fichu IE.

    Alors si quelqu'un à une une idée du problème du script en page 1, merci de faire un petit signe.

    Je crois que sinon, j'abandonnerai ce projet, et je le ferait "à l'ancienne", sans ajax.

    Dommage, c'était vraiment du plus bel effet.
    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

  5. #45
    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
    Essaie ça :
    Code PHP : 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
    <?php 
     
    $secteurs = array(
    	'2' => 'bois',
    	'4' => 'acier',
    	'6' => 'charbon',
    	'3.5' => 'informatique',
    	'7.1' => 'financier'
    );
    $surfaces = array(10, 20, 30, 40, 50, 100, 200);
     
    // {{{ Affichage
    function echo_secteurs() {
    	global $secteurs;
    	echo '<select name="secteurs" id="secteurs">';
    	echo '<option>--</option>'; 
        	foreach($secteurs as $key => $value) {
            	echo '<option value="'. $key .'">'. $value .'</option>';
    	}
    	echo '</select>';
     
    }
     
    function echo_surface_for_secteur($secteur) {
       global $surfaces;
       echo '<select name="surfaces" id="surfaces">';
       echo '<option>--</option>';
       if ($secteur) {
          foreach($surfaces as $s) {
             echo '<option value="'. $s .'">'. $s .' => '. ($s * $secteur) .'</option>';
          }
       }
       echo '</select>';
    }
     
    function echo_personne_for_surface($surface) {  
    	echo '<select name=personnes" id="personnes">'; 
    	echo '<option>--</option>'; 
    	if ($surface) {  
    		foreach(range(1, 0.8 * $surface) as $p) {  
    			echo '<option>'. $p .'</option>'; 
    		}  
    	}  
    	echo '</select>'; 
    }
    // }}}
     
     
     
     
    //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 'surfaces':
            $secteur = isset($_REQUEST['secteurs']) && is_numeric($_REQUEST['secteurs']) && isset($secteurs[$_REQUEST['secteurs']]) ? $_REQUEST['secteurs'] : null;
    	echo_surface_for_secteur($secteur);
            break;
        case 'personnes':
            $surface = isset($_REQUEST['surfaces']) && is_numeric($_REQUEST['surfaces']) && in_array($_REQUEST['surfaces'], $surfaces) ? $_REQUEST['surfaces'] : null;
            echo_personne_for_surface($surface);
            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_surfaces() {
                Event.observe($('surfaces'), '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($('secteurs'), 'change', function() {
                            //On va perdre le selectbox de surfaces, donc on enleve les 
                            //evenements pour éviter les eventuels memory leaks
                            Event.stopObserving($('surfaces'), 'change');
     
                            //Une petite requete pour récupérer un nouveau selectbox de surfaces
                            new Ajax.Updater('les_surfaces', '?action=surfaces', {
                                    parameters: Form.serialize('mon_form'),
                                    onComplete: function() {
                                        //Il faut écouter le onchange du nouveau selectbox
                                        register_surfaces();
                                    }
                            });
     
                            //Sait-on jamais, peut-etre que personnes est influencé
                            //par secteur...
                            new Ajax.Updater('les_personnes', '?action=personnes', {
                                    parameters: Form.serialize('mon_form')
                            });
                    });
                    register_surfaces();
            });
            </script>
        </head>
        <body>
    	<form action="" method="POST" id="mon_form">
    		<div><?php echo echo_secteurs(); ?>
                    <span id="les_surfaces"><select name="surfaces" id="surfaces"><option>--</option></select></span>
                    <span id="les_personnes"><select name="personnes" id="personnes"><option>--</option></select></span>
                </div>
            </form>
        </body>
    </html>
            <?php
            break;
    }
    ?>

  6. #46
    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
    Mr. N .... je sais pas comment faire pour te remercier ! J'ai bucher la dessus avec ton aide pendant trop de temps, et là, franchement merci, tu m'enlèves une serieuse épine du pied.

    J'ai testé, ça marche parfaitement et j'ai tout compris du fonctionnement. En effet tu avais raison, je m'embêtais bien pour rien...

    Je vais même pouvoir personnalisé l'affichage des select grâce aux fonctions.

    Et le fin du fin, c'est que ça marche sous IE !

    Un grand merci à toi, encore une fois.
    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

  7. #47
    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 Et c'est là que Mr. N prend une crise de nerf
    Me revoilà, encore et toujours.

    Le code que tu m'a proposé fonctionne très bien .... tout seul, il n'est pas adapté pour mes pseudo-frame. (affiche n'import quoi), mais peut importe.

    Le but du forum et de faire comprendre par soit même où est l'erreur.

    J'ai donc repris mes fichiers de départ, et j'ai trouvé d'où venait le problème avec IE. Il vient en fait des innerHTML, qui ne sont pas gérés. C'est donc pour ça que j'avais mis des div avec des id pour palier ce problème. Mon erreur venait du fait que j'avais mi le même id pour le div et le select qu'il contenait. Or dans le code js, j'ai plusieur fonction qui utilise soit le div pour l'actualisation, soit le select pour la réccupération des données.

    J'ai donc modifié mes fichier en conséquence pour enfin faire fonctionner mon système.

    Pourtant, et malgré beaucoup d'effort de ma part (si si je vous jure !), il persiste 2 problèmes que je n'arrive pas à solutionner. Tout d'abord, lorsque je choisi un secteur, mon select de personnel est vidé avant que je choisisse une surface qui le rempli à nouveau. Et enfin deuxième problème, je n'arrive pas à remmettre à zéro mon deuxième et 3ème select quand je remet le premier à zéro.

    Voici donc mes nouveau fichiers.

    En espérant un petit coup de pouce ^^ !

    ajax.js

    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
    function getXhr(){
        var xhr = null; 
        if(window.XMLHttpRequest) // Firefox et autres
            xhr = new XMLHttpRequest(); 
        else if(window.ActiveXObject){ // Internet Explorer 
            try {
    	xhr = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {
    	xhr = new ActiveXObject("Msxml2.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"
    	pr = document.getElementById('prix_sel');
    	nb = document.getElementById('nb_personnes_sel');
    	nb2 = document.getElementById('nb_personnes');
        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 len2 = nb.options.length; 
        for (i = len2; i >= 0; i--) {
            nb.options[i] = null;
        }
        // On rajoute l'option par défaut
        var default_option2 = new Option("Choisir le nombre d'employé(e)s", "-1");
        nb.appendChild(default_option2);
     
        // 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","http://127.0.0.1/M&M/include/test/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(){
    	nb = document.getElementById('nb_personnes_sel');
    	nb2 = document.getElementById('nb_personnes');
        // 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é(e)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","http://127.0.0.1/M&M/include/test/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_sel');
        idprix = sel.options[sel.selectedIndex].value;
        xhr.send("idPrix="+idprix);
    }
    index.php

    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
     
    <?php
    		//Secteur d'activité |||||||||||||||||||||||||
    		for($i=0;$i<sizeof($activites);$i++)
    		{
    		echo "<option value='".$activites[$i]."'>".$activites[$i]."</option>";
    		echo "\n";
    		} 
    		echo "</select>\n\n";
     
    		//Surface |||||||||||||||||||||||||
    		echo '<div id="prix" style="display:inline">
    		<select name="prix" id="prix_sel" onchange="personnel()">';
    		echo '<option value="-1">Choisir une surface</option>';
    		echo '</select></div>';
     
    		//Personnel ||||||||||||||||||||||||
    		echo "<div id='nb_personnes' style='display:inline'>
    		<select name='nb_personnes' id='nb_personnes_sel'>";
    		echo "<option value='-1'>Choisir le nombre d'employés</option>";
    		echo "</select>\n\n</div>";
     
    ?>
    ajax_personnel.php

    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
     
    <?php
    include '../../config.php';
            if(isset($_POST["idPrix"])){
            echo '
            <div id="nb_personnes" style="display:inline">
                    <select name="nb_personnes" id="nb_personnes_sel">';
                    for($i=1;$i<=($_POST["idPrix"]*0.8);$i++)
                    {
                            if($i==1){
                            echo '<option value="'.$i.'">'.$i.' employ&eacute;(e)</option>';
                            }
                            else{
                            echo '<option value="'.$i.'">'.$i.' employ&eacute;(e)s</option>';
                            }
                    echo "\n";
                    } 
                    echo "</select>\n\n</div>";
            }
    ?>
    et enfin ajax_prix.php

    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
     
    <?php
    include '../../config.php';
            if(isset($_POST["idSecteur"])){
                    echo '
                    <div id="prix" style="display:inline">
                    <select name="prix" id="prix_sel" onchange="personnel()">';
                    for($i=0;$i<sizeof($surface_dispo);$i++)
                    {
                    $prix = $surface_dispo[$i] * constant('PRIX_'.$_POST['idSecteur']);
                    echo '<option value="'.$surface_dispo[$i].','.$prix.'">'.$surface_dispo[$i].' m&sup2;&nbsp;&nbsp;&nbsp;&nbsp;-->
                    &nbsp;&nbsp;&nbsp;&nbsp;Prix: '.$prix.' pk </option>';
                    echo "\n";
                    }
                    echo '</select></div>';
            }
    ?>
    Les valeurs dans le fichiers config sont toujours:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $activites = array('bois','acier','informatique','financier');  
    $surface_dispo = array('10','20','30','40','50','100','200');
    define('PRIX_bois', '2');
    define('PRIX_acier', '4');
    define('PRIX_informatique', '6');
    define('PRIX_financier', '8');
    define('PRIX_-1', '0');

    Merci d'avance
    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

  8. #48
    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
    Un petit up !
    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

  9. #49
    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
    Personne ne peut m'aider ?
    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

  10. #50
    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
    , je suis vraiment bloqué sur ce problème.

    Je sais pas trop comment faire.

    Vraiment personne ne sait faire ?

    Je suis désolé Mr.N de t'avoir fait cherché un autre solution pour finalement revenir à la première, mais l'autre me possait trop de problèmes d'intégration. Mais celui-là marche très bien, sauf pour les petits problème mentionné plus haut. Et je suis sur que ça ne tient pas à grand chose, mais je n'arrive vraiment pas à trouver d'où viennent ces petits problèmes.

    Merci d'avance
    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