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

  1. #1
    Candidat au Club
    Homme Profil pro
    Eternel étudiant
    Inscrit en
    octobre 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Eternel étudiant

    Informations forums :
    Inscription : octobre 2019
    Messages : 18
    Points : 4
    Points
    4
    Par défaut Récupération de value de select pour traitement Ajax
    Bonjour,

    Je suis plutôt ignorant en JS et AJAX mais j'ai pris soin de consulter cours, livres et autres forum avant de poster mon désespoir ici même

    Pour le contexte : je cherche à récupérer les values de 4 selects d'un même formulaire, alimentés par des bases de données.
    Ces selects servent à filtrer des résultats actualisés en Ajax. Je récupère bien l'intégralité des éléments recherchés à l'ouverture de la page sur une fonction Ajax (getAllProfessionalPieces).

    Sauf que lors du choix d'au moins un des critères de recherche(select), dont certains pourraient être laissés vierges et de la validation par le boutton, je ne parviens à récupérer qu'un seule valeur (la 1ère : placeChoice).
    Donc là, c'est le blocage ... et je perds patience.

    Code pour les Select :
    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
     
    <div class="pieces_form">
        <form id="filter_form" name="filter_form">
     
            <!-- PLACE FILTER -->
            <div id="filter_place">
                <h3>Lieu de représentation :</h3>
                <select id="place_choice" name="place_choice" class="place_list" method="post" >
                        <option value="" selected="selected">Choisissez</option>
                    <?php
                    foreach ($placeDatas as $placeData) : ?>
                        <option value="<?php echo $placeData['id'] ?>"><?php echo $placeData['universe'] ?></option>
                    <?php
                    endforeach;
                    ?>
                    <?php
                        if (!empty($_POST['place_choice']) && (isset($_POST['place_choice'])))
                        {
                            echo '<option value="<?php $placeData["id"] ?>" selected="selected"><?php $placeData["universe"] ?></option>';
                            header("Location:index.php?page=professionnelsSpectacles");
                        }
                    ?>
                </select>
            </div>
     
            <!-- GAUGE OF PERSONS FILTER -->
            <div id="filters_gauge">
                <h3>Nombre de spectateurs :</h3>
                <select id ="gauge_choice" name="gauge_choice" class="gauge_list" method="post" >
                        <option value="" selected="selected">Choisissez</option>
                    <?php
                    foreach ($gaugeDatas as $gaugeData) : ?>
                        <option value="<?php $gaugeData['max_gauge'] ?>"><?php echo $gaugeData['max_gauge'] ?></option>
                    <?php
                    endforeach;
                    ?>
                        <?php
                        if (!empty($_POST['gauge_choice']) && (isset($_POST['gauge_choice'])))
                        {
                            echo '<option value="<?php $gaugeData["max_gauge"] ?>" selected="selected"><?php $gaugeData["max_gauge"] ?></option>';
                            header("Location:index.php?page=professionnelsSpectacles");
                        }
                    ?>
                </select>
            </div>
     
            <!-- DURATION OF PIECE FILTER -->
            <div id="filters_duration">
                <h3>Durée de la pièce :</h3>
                <select id="duration_choice" name="duration_choice" class="duration_list" method="post" >
                    <option value="" selected="selected">Choisissez</option> 
                    <?php
                    foreach ($durationDatas as $durationData) : ?>
                        <option value="<?php $durationData['duration'] ?>"><?php echo $durationData['duration'] ?></option>
                    <?php
                    endforeach;
                    ?>
                    <?php
                        if (!empty($_POST['duration_choice']) && (isset($_POST['duration_choice'])))
                        {
                            echo '<option value="<?php $durationData["duration"] ?>" selected="selected"><?php $durationData["duration"] ?></option>';
                            header("Location:index.php?page=professionnelsSpectacles");
                        }
                    ?>
                </select>
            </div>
     
            <!-- KIND OF PUBLIC OR AUDIENCE FILTER -->
            <div id="filters_audience">
                <h3>Public :</h3>
                <select id="audience_choice" name="audience_choice" class="audience_list" method="post" >
     
     
                    <option value="" selected="selected">Choisissez</option> 
                    <?php 
                    foreach ($audienceDatas as $audienceData) : ?>
                        <option value="<?php $audienceData['audience'].' '.'selectes=selected' ?>"><?php echo $audienceData['audience'] ?></option>
                    <?php
                    endforeach;
                    ?>
                    <?php
                        if (!empty($_POST['audience_choice']) && (isset($_POST['audience_choice'])))
                        {
                            echo '<option value="<?php $audienceData["audience"] ?>" selected="selected"><?php $audienceData["audience"] ?></option>';
                            header("Location:index.php?page=professionnelsSpectacles");
                        }
                    ?>
                </select>
            </div>
     
            <div id="submitajax">
                <button type="button" onClick="getSpecificProfessionalPieces({place_choice:[place_choice], gauge_choice:['gauge_choice'], duration_choice:[duration_choice], audience_choice:[audience_choice]})">Rechercher</button>
            </div>
        </form>
    </div>

    Code JS/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
    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
     
    function getChoices() {
     
        var placeChoice;
        if (document.getElementById("place_choice").value =!"")
        {
            placeChoice = document.getElementById("place_choice").value;
        } else {
            placeChoice = null;
        }
        console.log(placeChoice);
     
        var gaugeChoice;
        if (document.getElementById("gauge_choice").value =!"")
        {
            gaugeChoice  = document.getElementById("gauge_choice").value;
        } else {
            gaugeChoice = null;
        }
        console.log(gaugeChoice);
     
        var durationChoice;
        if (document.getElementById("duration_choice").value =!"")
        {
            durationChoice = document.getElementById("duration_choice").value;
        } else {
            durationChoice = null;
        }
        console.log(durationChoice);
     
        var audienceChoice;
        if (document.getElementById("audience_choice").value =!"")
        {
            audienceChoice = document.getElementById("audience_choice").value;
        } else {
            audienceChoice = null;
        }
        console.log(audienceChoice);
     
     
        if ((placeChoice = !"") || (gaugeChoice = !"") || (durationChoice = !"") || (audienceChoice = !""))
        {
            var choices = 
                "placeChoice=" + encodeURIComponent(placeChoice) +
                "&gaugeChoice=" + encodeURIComponent(gaugeChoice) +
                "&durationChoice=" + encodeURIComponent(durationChoice) +
                "&audienceChoice=" + encodeURIComponent(audienceChoice);
        } else {
            alert ("Merci de choisir des éléments de sélection dans les listes proposées");
            getAllProfessionalPieces;
        }
    }
     
     
    function getSpecificProfessionalPieces() {
        var xhr = new XMLHttpRequest();
        getChoices();
        xhr.onreadystatechange = function () {
            callBack(xhr);
        }
        xhr.open("POST", "../professionelsSpectaclesFiltree.phtml", true);
        xhr.setRequestHeader("Content-type", "applicationx-www-form-urlencoded");
        xhr.send(choices);
        xhr.responseType = "text";
    }
     
     
    function callBack(xhr) {
        if (xhr.readyState == 4 && xhr.status == 200) {
            results.innerHTML = xhr.responseText;
        } else if (xhr.readyState == 4 && xhr.status == 404) {
            alert("Une erreur s'est produite. Merci d'actualiser la page.");
        }
    }


    Aussi, si vous aviez un conseil, un commentaire, ou une source d'inspiration que je n'aurait pas encore consultée, je suis preneur !

    Merci d'avance,

    Bonne journée,

  2. #2
    Membre chevronné Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2012
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2012
    Messages : 1 130
    Points : 1 813
    Points
    1 813
    Par défaut
    Salut,

    Commençons par les erreurs html d'abord :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select id="place_choice" ... method="post" >
    On ne met pas un attribut method dans un <select>, mais plutôt dans un <form>
    Côté ergonomie :

    1-Les variables var placeChoice,gaugeChoice,durationChoice,audienceChoice,choices sont déclarées dans le contexte de la fonction getChoices() mais elles sont aussi utilisées dans getSpecificProfessionalPieces(). il faut les mettre comme des variables globales.

    2-Le bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <button type="button" onClick="getSpecificProfessionalPieces({place_choice:[place_choice], gauge_choice:['gauge_choice'], duration_choice:[duration_choice], audience_choice:[audience_choice]})">Rechercher</button>
            </div>
        </form>
    </div>
    normalement doit être type="submit", après il faut empêcher la soumission du formulaire.

    3-Au lieu d'ajouter un attribut onclick au bouton, essaies de gérer l'événement submit sur le <form> :

    Soit avec l'attribut onsubmit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form id="filter_form" name="filter_form" onsubmit="getSpecificProfessionalPieces();return false;">
    Ou bien avec addEventListener :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    document.getElementById('filter_form').addEventListener('submit', function(e) {
      e.preventDefault(); //empêcher la soumission du formulaire
      getSpecificProfessionalPieces();
    });
    C'est ce que j'ai pu remarquer pour l'instant.

  3. #3
    Candidat au Club
    Homme Profil pro
    Eternel étudiant
    Inscrit en
    octobre 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Eternel étudiant

    Informations forums :
    Inscription : octobre 2019
    Messages : 18
    Points : 4
    Points
    4
    Par défaut
    Salut,

    Merci pour tes retours. C'est vrai que je n'arrive plus à prendre du recul par rapport à ce que je fais et j'avoue avoir essayé tellement de choses qu'il reste des reliquats de mes réflexions dans ce que tu as pu lire.

    Concernant le html : c'est corrigé. Le 'post' dans le select venait du fait que j'ai tenté de lancer ma fonction initialement sur un onchange positionné dans chacun des select avant de revenir sur une validation par un bouton.

    Concernant mes variables xxxChoice. Merci encore, c'est tellement logique finalement !

    Concernant le bouton : je ne vois pas comment empêcher la soumission du formulaire Oo ! En revanche, je comprends qu'il ne faille pas rafraîchir l'intégralité de la page :-)

    Sinon, je n'ai pas intégrer JQuery :-)


    après correction : HTML :
    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
     
    <div class="pieces_form">
    <form id="filter_form" name="filter_form" method="post">
     
        <!-- PLACE FILTER -->
        <div id="filter_place">
            <h3>Lieu de représentation :</h3>
            <select id="place_choice" name="place_choice" class="place_list">
            <!--onchange="getSpecificProfessionalPieces(this.value)" -->
                    <option value="" selected="selected">Choisissez</option>
                <?php
                foreach ($placeDatas as $placeData) : ?>
                    <option value="<?php echo $placeData['id'] ?>"><?php echo $placeData['universe'] ?></option>
                <?php
                endforeach;
                ?>
                <?php
                    if (!empty($_POST['place_choice']) && (isset($_POST['place_choice'])))
                    {
                        echo '<option value="<?php $placeData["id"] ?>" selected="selected"><?php $placeData["universe"] ?></option>';
                        header("Location:index.php?page=professionnelsSpectacles");
                    }
                ?>
            </select>
        </div>
     
        <!-- GAUGE OF PERSONS FILTER -->
        <div id="filters_gauge">
            <h3>Nombre de spectateurs :</h3>
            <select id ="gauge_choice" name="gauge_choice" class="gauge_list">
            <!--onchange="getSpecificProfessionalPieces(this.value)" -->
                    <option value="" selected="selected">Choisissez</option>
                <?php
                foreach ($gaugeDatas as $gaugeData) : ?>
                    <option value="<?php $gaugeData['max_gauge'] ?>"><?php echo $gaugeData['max_gauge'] ?></option>
                <?php
                endforeach;
                ?>
                    <?php
                    if (!empty($_POST['gauge_choice']) && (isset($_POST['gauge_choice'])))
                    {
                        echo '<option value="<?php $gaugeData["max_gauge"] ?>" selected="selected"><?php $gaugeData["max_gauge"] ?></option>';
                        header("Location:index.php?page=professionnelsSpectacles");
                    }
                ?>
            </select>
        </div>
     
        <!-- DURATION OF PIECE FILTER -->
        <div id="filters_duration">
            <h3>Durée de la pièce :</h3>
            <select id="duration_choice" name="duration_choice" class="duration_list">
            <!--onchange="getSpecificProfessionalPieces(this.value)" -->
                <option value="" selected="selected">Choisissez</option> 
                <?php
                foreach ($durationDatas as $durationData) : ?>
                    <option value="<?php $durationData['duration'] ?>"><?php echo $durationData['duration'] ?></option>
                <?php
                endforeach;
                ?>
                <?php
                    if (!empty($_POST['duration_choice']) && (isset($_POST['duration_choice'])))
                    {
                        echo '<option value="<?php $durationData["duration"] ?>" selected="selected"><?php $durationData["duration"] ?></option>';
                        header("Location:index.php?page=professionnelsSpectacles");
                    }
                ?>
            </select>
        </div>
     
        <!-- KIND OF PUBLIC OR AUDIENCE FILTER -->
        <div id="filters_audience">
            <h3>Public :</h3>
            <select id="audience_choice" name="audience_choice" class="audience_list">
     
                <!--onchange="getSpecificProfessionalPieces(this.value)" -->
                <option value="" selected="selected">Choisissez</option> 
                <?php 
                foreach ($audienceDatas as $audienceData) : ?>
                    <option value="<?php $audienceData['audience'].' '.'selectes=selected' ?>"><?php echo $audienceData['audience'] ?></option>
                <?php
                endforeach;
                ?>
                <?php
                    if (!empty($_POST['audience_choice']) && (isset($_POST['audience_choice'])))
                    {
                        echo '<option value="<?php $audienceData["audience"] ?>" selected="selected"><?php $audienceData["audience"] ?></option>';
                        header("Location:index.php?page=professionnelsSpectacles");
                    }
                ?>
            </select>
        </div>
     
        <div id="submitajax">
            <button type="button" onClick="getSpecificProfessionalPieces({place_choice:[place_choice], gauge_choice:['gauge_choice'], duration_choice:[duration_choice], audience_choice:[audience_choice]})">Rechercher</button>
        </div>
    </form>
    </div>
    Après Correction : 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
     
     
    var placeChoice;
    var gaugeChoice;
    var durationChoice;
    var audienceChoice;
    var choices;
     
    function getChoices() {
     
        var placeChoice;
        if (document.getElementById("place_choice").value =!"")
        {
            placeChoice = document.getElementById("place_choice").value;
        } else {
            placeChoice = null;
        }
        console.log(placeChoice);
     
        var gaugeChoice;
        if (document.getElementById("gauge_choice").value =!"")
        {
            gaugeChoice  = document.getElementById("gauge_choice").value;
        } else {
            gaugeChoice = null;
        }
        console.log(gaugeChoice);
     
        var durationChoice;
        if (document.getElementById("duration_choice").value =!"")
        {
            durationChoice = document.getElementById("duration_choice").value;
        } else {
            durationChoice = null;
        }
        console.log(durationChoice);
     
        var audienceChoice;
        if (document.getElementById("audience_choice").value =!"")
        {
            audienceChoice = document.getElementById("audience_choice").value;
        } else {
            audienceChoice = null;
        }
        console.log(audienceChoice);
     
        var choices = 
            "placeChoice=" + encodeURIComponent(placeChoice) +
            "&gaugeChoice=" + encodeURIComponent(gaugeChoice) +
            "&durationChoice=" + encodeURIComponent(durationChoice) +
            "&audienceChoice=" + encodeURIComponent(audienceChoice);
    }
     
     
    function getSpecificProfessionalPieces() {
        var xhr = new XMLHttpRequest();
        getChoices();
        xhr.onreadystatechange = function () {
            callBack(xhr);
        }
        xhr.open("POST", "../contes-a-rebours/src/views/professionelsSpectaclesFiltree.phtml", true);
        xhr.setRequestHeader("Content-type", "applicationx-www-form-urlencoded");
        xhr.send(choices);
        xhr.responseType = "text";
    }
     
     
    function callBack(xhr) {
        if (xhr.readyState == 4 && xhr.status == 200) {
            results.innerHTML = xhr.responseText;
        } else if (xhr.readyState == 4 && xhr.status == 404) {
            alert("Une erreur s'est produite. Merci d'actualiser la page.");
        }
    }
    Après ces éléments de correction, j'ai maintenant une erreur avec $_POST et l'ouverture de mon fichier de destination xhr.send(choices), choices étant la variable regroupant tous les choix des 4 selects.

    Est-ce dû au fait qu'il y ai ce rafraîchissement de page sur l'action du bouton ? Ou à la concaténation des 4 variables ?

    Merci encore !!

  4. #4
    Membre chevronné Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2012
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2012
    Messages : 1 130
    Points : 1 813
    Points
    1 813
    Par défaut
    Tu n'as pas correctement corrigé les déclarations des variables, supprimes les var=... de la fonction getChoices(), elles sont déjà déclarées en dessus.

    Citation Envoyé par Gryzly Voir le message
    Concernant le bouton : je ne vois pas comment empêcher la soumission du formulaire
    Regarde mon post en haut, je t'ai ajouté 2 approches concernant la soumission, et n'oublis surtout pas de modifier le type du bouton en submit type="submit" ou même le supprimer au complet, et supprimer l'attribut onClick.

  5. #5
    Candidat au Club
    Homme Profil pro
    Eternel étudiant
    Inscrit en
    octobre 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Eternel étudiant

    Informations forums :
    Inscription : octobre 2019
    Messages : 18
    Points : 4
    Points
    4
    Par défaut
    Vu ! Merci !!!!

    Effectivement, les variables déclarées 2 fois ce n'est pas terrible !

    J'ai bien regardé ce que tu as ajouté concernant la soumission du formulaire, je pars sur le js avec addEventListener (j'en comprends plus facilement pour l'avoir déjà utilisé) et cela me semble plus propre de le traiter dans le JS.

    J'ai aussi bien pris note de tes remarques et ai changé le type du bouton en submit. Mais tu parles de le supprimer complètement : pourquoi ? Quel serait le déclencheur ? Un onchange sur les select ?

    Après correction, il semble que ce qui pose problème maintenant c'est ma déclaration de 'choices' dans le send. Cela viendrait de ma concaténation ? c'est ce type d'affichage dans la console :
    placeChoice=&gaugeChoice=&durationChoice=&audienceChoice=

    Et forcément un 404 sur le fichier du xhr.open

  6. #6
    Membre chevronné Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2012
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2012
    Messages : 1 130
    Points : 1 813
    Points
    1 813
    Par défaut
    Citation Envoyé par Gryzly Voir le message
    Mais tu parles de le supprimer complètement : pourquoi ?
    Supprimes seulement le onClick, pas le bouton au complet, parce que c'est l'EventListener que tu as mis en js qui va s'occuper de la soumission.

    Je viens de voir une erreur de syntaxe que je n'ai pas vu au départ, c'est l'opérateur de comparaison != et pas =!, tu ne vois pas des erreurs dans le console du navigateur ?

  7. #7
    Candidat au Club
    Homme Profil pro
    Eternel étudiant
    Inscrit en
    octobre 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Eternel étudiant

    Informations forums :
    Inscription : octobre 2019
    Messages : 18
    Points : 4
    Points
    4
    Par défaut
    Effectivement !! je ne vois plus rien.

  8. #8
    Candidat au Club
    Homme Profil pro
    Eternel étudiant
    Inscrit en
    octobre 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Eternel étudiant

    Informations forums :
    Inscription : octobre 2019
    Messages : 18
    Points : 4
    Points
    4
    Par défaut
    Super !! Merci encore !!

    Du coup, pourquoi je ne parviens pas à récupérer les valeurs des selects 2, 3 et 4 alors que le 1er passe très bien. Les valeurs 2, 3 et 4 sont systématiquement 'null'.

    Sur le 1er j'ai un id. Alors que sur les autres je dois récupérer une chaîne de caractères.

    Et coup, ces valeurs, je les traite avec mon php en Get ou en Post ? En Get car elles sont dans l'URL, c'est bien ça (si j'ai bien compris le traitement avec Ajax ?

  9. #9
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    15 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 15 815
    Points : 32 346
    Points
    32 346
    Par défaut
    Bonjour,


    c'est toi-même qui définit dans le script JS comment tu vas récupérer les données dans le fichier PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        xhr.open("POST", "....php", true);
    Donc, ici, avec $_POST.
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  10. #10
    Membre chevronné Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2012
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2012
    Messages : 1 130
    Points : 1 813
    Points
    1 813
    Par défaut
    Je pense savoir pourquoi les 3 variables sont null, eh ben parce que il manque un echo dans les attributs value :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    value="<?php echo $gaugeData['max_gauge']; ?>"
    value="<?php echo $durationData['duration'] ?>"
    value="<?php echo $audienceData['audience'].' '.'selectes=selected' ?>" //ici une faute de frappe selected et pas selectes, et il faut faire sortir l'attribut selected de l'intérieur du value et même le supprimer, parce qu'il ne sert à rien.

  11. #11
    Candidat au Club
    Homme Profil pro
    Eternel étudiant
    Inscrit en
    octobre 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Eternel étudiant

    Informations forums :
    Inscription : octobre 2019
    Messages : 18
    Points : 4
    Points
    4
    Par défaut


    Facepalm ! Comment perdre du temps et de l’énergie en JS - Saison 1 !!

    Merci Messieurs !!
    Merci Toufik83 ! Vraiment un grand MERCI !!

    Je vais poursuivre ...

    A suivre ...

  12. #12
    Membre chevronné Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2012
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2012
    Messages : 1 130
    Points : 1 813
    Points
    1 813
    Par défaut
    De rien, on est la pour s'entre-aider.
    Saison 2

  13. #13
    Candidat au Club
    Homme Profil pro
    Eternel étudiant
    Inscrit en
    octobre 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Eternel étudiant

    Informations forums :
    Inscription : octobre 2019
    Messages : 18
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Me voilà au 1er épisode de la saison 2 !

    Je récupère bien un array de $_POST([]) avec des mes champs de mes selects que cela soit dans le fichier php qui traitera mes résultats de ma requête sql. Je l'ai bien jusque dans mon model.

    Mais au passage de mes paramètres pour la requête j'obtiens l'erreur suivante :

    PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: no parameters were bound in pieceModel.php on line 311
    Cette ligne correspond à la ligne : $specificProfessionalPieces->execute([]); du code ci-dessous :
    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
     
     
    static function getSpecificProfessionalActivePieces() {
     
        global $bdd;
     
        if (!empty($_POST['placeChoice'] && (isset($_POST['placeChoice']) || (!empty($_POST['gaugeChoice'] && (iseet($_POST['gaugeChoice']) || (!empty($_POST['duration_choice'] && (iseet($_POST['duration_choice']) || (!empty($_POST['audience_choice'] && (iseet($_POST['audience_choice'])))))))))))))
     
        $specificProfessionalPieces = $bdd->prepare(
                'SELECT p.id, p.flyer, p.piece_name, p.max_gauge, p.duration, p.audience, pu.universe_id
                FROM piece p
                INNER JOIN universe u
                INNER JOIN piece_universe pu
                 ON pu.piece_id = p.id
                 AND u.id = pu.universe_id
                INNER JOIN troop t
                INNER JOIN piece_troop pt
                 ON t.id = pt.troop_id
                 AND p.id = pt.piece_id             
                WHERE pt.troop_id LIKE 1
                 AND p.situation LIKE "Actif"
                 AND p.max_gauge = :gaugeChoice
                 AND p.duration = :durationChoice
                 AND p.audience = :audienceChoice
                 AND pu.universe_id = :placeChoice');
            $specificProfessionalPieces = $bdd->prepare($sql);
            $specificProfessionalPieces->bindValue(':placeChoice', intVal($_POST['placeChoice']));
            $specificProfessionalPieces->bindValue(':gaugeChoice', strVal($_POST['gaugeChoice']));
            $specificProfessionalPieces->bindValue(':durationChoice', strVal($_POST['durationChoice']));
            $specificProfessionalPieces->bindValue(':audienceChoice', strVal($_POST['audienceChoice']));
     
            $specificProfessionalPieces->execute([]);
            return $specificProfessionalPieces->fetchAll();
        }
    Merci pour votre aide, car je n'y comprends plus rien !

  14. #14
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    15 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 15 815
    Points : 32 346
    Points
    32 346
    Par défaut
    Bonjour,

    1-
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
            $specificProfessionalPieces->execute();

    2-
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            $specificProfessionalPieces->bindValue(':placeChoice', $_POST['placeChoice'], PDO::PARAM_INT);
            $specificProfessionalPieces->bindValue(':gaugeChoice', $_POST['gaugeChoice'], PDO::PARAM_STR);
            $specificProfessionalPieces->bindValue(':durationChoice', $_POST['durationChoice'], PDO::PARAM_STR);
            $specificProfessionalPieces->bindValue(':audienceChoice', $_POST['audienceChoice'], PDO::PARAM_STR);
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  15. #15
    Candidat au Club
    Homme Profil pro
    Eternel étudiant
    Inscrit en
    octobre 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Eternel étudiant

    Informations forums :
    Inscription : octobre 2019
    Messages : 18
    Points : 4
    Points
    4
    Par défaut
    Super, Merci : effectivement je n'ai plus l'erreur. Mais après quelques essais, mon affichage reste vide.


    Je pense que mon problème est désormais que les éléments que je renvois dans les valeurs par défaut de mes selects ("") n'est pas bon ou alors, je le traite mal.
    Vaut-il mieux que je renvois 'null' plutôt que "" ? Ou quelle est la meilleure méthode pour traiter 3 select vides ?

    Merci !

  16. #16
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    15 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 15 815
    Points : 32 346
    Points
    32 346
    Par défaut

    Regarde surtout la fabrication de la clause WHERE : $clause_WHERE.
    Et tu n'as pas forcément besoin de $_SESSION['recherche'].

    Il te suffit d'adapter à tes 3 <select> :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // -------------
    if( !empty($_POST['critere1']) )
    {
    	switch( $_POST['critere1'] ){
    		case -99:	// Tous
    			// $sql_where : (rien)
    			break;
    		default:
    			$sql_where[] = " (colonne1 = :critere1) ";
    			$sql_param[':critere1'] = $_POST['critere1'];
    	}
    }
    // -------------
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  17. #17
    Candidat au Club
    Homme Profil pro
    Eternel étudiant
    Inscrit en
    octobre 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Eternel étudiant

    Informations forums :
    Inscription : octobre 2019
    Messages : 18
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Merci pour le message d'hier et félicitations pour cet article : au delà d'y avoir trouvé des infos pour ma situation, j'ai compris certains mécanismes que j'ignorais !

    Je me suis donc penché sur le rédaction des éléments et des paramètres pour pouvoir les concaténer (j'avais essayé cette solution avant mais sans succès car les premières étapes n'étaient pas bonnes). J'ai pu corriger les erreurs courantes. En revanche, j'ai encore des difficultés à concaténer le bind de paramètres. Et du coup je suis bloqé avec l'erreur suivante :
    "Call to a member function bindValue() on string in C:\wamp\www\...\pieceModel.php on line 309" (309, ce qui correspond au 1er bind)


    je pense que cela vient du fait que j'ai essayé la concaténation avec des variables juste après la définition de $clauseXxx pour les valeurs de mes select. Finalement, j'ai tenté ma chance en les sortant des If/Switch/Case mais sans plus de résultat.

    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
     
    php - Model
     
    static function getSpecificProfessionalActivePieces() {
     
        global $bdd;
     
        var_dump($_POST);
        $specificProfessionalPieces ="";
     
        $clausePlace = "";
        $clauseGauge = "";
        $clauseDuration = "";
        $clauseAudience = "";
     
        //$placeParam = "";
        //$gaugeParam = "";
        //$durationParam = "";
        //$audienceParam = "";
     
        $sqlSelect = "SELECT p.id, p.flyer, p.piece_name FROM piece p INNER JOIN universe u INNER JOIN piece_universe pu ON pu.piece_id = p.id  AND u.id = pu.universe_id INNER JOIN troop t INNER JOIN piece_troop pt ON t.id = pt.troop_id AND p.id = pt.piece_id WHERE pt.troop_id LIKE 1  AND p.situation LIKE `Actif`";
     
        if (!empty($_POST))
        {
            switch ($_POST['placeChoice']) {
                case "":
                    $clausePlace = "";
                    $specificProfessionalPieces = "";
                    break;
                default :
                    $clausePlace = "pu.universe_id = :placeChoice";
                    $specificProfessionalPieces -> bindValue(':placeChoice', $_POST['placeChoice'], PDO::PARAM_STR);
                    break;
            }
            switch ($_POST['gaugeChoice']) {
                case "":
                    $clauseGauge = "";
                    $specificProfessionalPieces = "";
                    break;
                default :
                    $clauseGauge = "max_gauge = :gaugeChoice";
                    $specificProfessionalPieces -> bindValue(':gaugeChoice', $_POST['gaugeChoice'], PDO::PARAM_STR);
                    break;
            }
            switch ($_POST['durationChoice']) {
                case "":
                    $clauseDuration ="";
                    $specificProfessionalPieces = "";
                    break;
                default :
                    $clauseDuration = "duration = :durationChoice";
                    $specificProfessionalPieces -> bindValue(':durationChoice', $_POST['durationChoice'], PDO::PARAM_STR);
            }
            switch ($_POST['audienceChoice']) {
                case "":
                    $clauseAudience ="";
                    $specificProfessionalPieces = "";
                    break;
                default :
                    $clauseAudience = "audienceChoice = :audienceChoice";
                    $specificProfessionalPieces -> bindValue(':audienceChoice', $_POST['audienceChoice'], PDO::PARAM_STR);
            }
        }
     
        $clauseWhere = "AND " . $clausePlace . " AND " . $clauseGauge . " AND " . $clauseDuration . " AND " . $clauseAudience;
     
        $req = $sqlSelect . $clauseWhere . ";";
     
        $specificProfessionalPieces = $bdd->prepare($req);
     
        //$specificProfessionalPieces->bindValue($placeParam, PDO::PARAM_INT);
        //$specificProfessionalPieces->bindValue($gaugeParam, PDO::PARAM_STR);
        //$specificProfessionalPieces->bindValue($durationParam, PDO::PARAM_STR);
        //$specificProfessionalPieces->bindValue($audienceParam, PDO::PARAM_STR);
     
        $specificProfessionalPieces->execute();
        return $specificProfessionalPieces->fetchAll();
    }
    J'ai laissé les parties commentées au cas où ...

    Merci encore.

  18. #18
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    15 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 15 815
    Points : 32 346
    Points
    32 346
    Par défaut
    Bonjour,

    non, tu n'as pas compris le principe.

    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
    // -------------
    // Construction de la clause WHERE
    // Initialisation
    $sql_where = [];	// array qui contiendra les bouts de code SQL, à partir des critères de recherche
    $sql_param = [];	// array des paramètres à transmettre à execute(...)
    $clause_WHERE = ''; // clause " WHERE... AND...", qui sera construite "à la volée"$sql_where = [];
    // -------------
    $sql_where[] = " (pt.troop_id LIKE 1) ";
    $sql_where[] = " (p.situation LIKE `Actif`) ";
    // -------------
    if( !empty($_POST['placeChoice']) )
    {
    	$sql_where[] = " (pu.universe_id = :placeChoice) ";
    	$sql_param[':placeChoice'] = $_POST['placeChoice'];
    }
    // -------------
    if( !empty($_POST['gaugeChoice']) )
    {
    	$sql_where[] = " (p.max_gauge = :gaugeChoice) ";
    	$sql_param[':gaugeChoice'] = $_POST['gaugeChoice'];
    }
    // -------------
    if( !empty($_POST['durationChoice']) )
    {
    	$sql_where[] = " (p.duration = :durationChoice) ";
    	$sql_param[':durationChoice'] = $_POST['durationChoice'];
    }
    // -------------
    if( !empty($_POST['audienceChoice']) )
    {
    	$sql_where[] = " (p.audience = :audienceChoice) ";
    	$sql_param[':audienceChoice'] = $_POST['audienceChoice'];
    }
    // -------------
    // On construit la chaine :  "WHERE .... AND .... AND .... "
    $clause_WHERE = ( !empty($sql_where) )? " WHERE " . implode(" AND ", $sql_where) : "";
    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
    // -------------
    // Requete SQL
    $req = "SELECT p.id, p.flyer, p.piece_name 
    		FROM piece p INNER JOIN universe u 
    		INNER JOIN piece_universe pu 
    			ON pu.piece_id = p.id  AND u.id = pu.universe_id 
    		INNER JOIN troop t INNER JOIN piece_troop pt 
    			ON t.id = pt.troop_id AND p.id = pt.piece_id ".
    		$clause_WHERE.
    		";";
    // -------------
    $specificProfessionalPieces = $bdd->prepare($req);
    foreach( $sql_param as $param_name => $param_value )
    {
    	$specificProfessionalPieces->bindValue($param_name, $param_value);
    }
    $specificProfessionalPieces->execute();
    return $specificProfessionalPieces->fetchAll();
    // -------------

    Fais un echo $clause_WHERE pour voir ce qu'il contient.
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  19. #19
    Candidat au Club
    Homme Profil pro
    Eternel étudiant
    Inscrit en
    octobre 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Eternel étudiant

    Informations forums :
    Inscription : octobre 2019
    Messages : 18
    Points : 4
    Points
    4
    Par défaut
    Bonjour (ou Re-bonjour d'ailleurs),

    Merci. En fait j'ai bien compris le principe de la concaténation et de l'enrichissement par étape de la variable $clause_WHERE.
    C'est en fait la méthode de construction avec laquelle j'ai des problèmes.

    Par exemple, je ne comprends pas la construction de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $clause_WHERE = (!empty($sql_where) )? " WHERE " . implode(" AND ", $sql_where) : "";
    Le ? après les parenthèses est un vrai mystère pour moi.

    Pour la construction des paramètres, je pensais pouvoir m'abstenir de passer par un foreach, mais j'avais tord !

    Le echo de $clause_WHERE renvoi bien une chaîne de ce type en fonction des critères choisis : WHERE (pt.troop_id LIKE 1) AND (p.situation LIKE `Actif`) AND (pu.universe_id = :placeChoice).

    Un grand Merci !!

    Je vais prendre le temps de la relecture et de la digestion de tout cela ce soir .... avant de passer à la suite.

  20. #20
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    15 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 15 815
    Points : 32 346
    Points
    32 346
    Par défaut
    1-
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $clause_WHERE = (!empty($sql_where) )? " WHERE " . implode(" AND ", $sql_where) : "";

    Il s'agit de l'opérateur ternaire.
    • (condition) ? (action si vrai) : (action si faux)

    Ici, c'est équivalent à :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(!empty($sql_where) )
    {
       $clause_WHERE = " WHERE " . implode(" AND ", $sql_where);
    } else {
       $clause_WHERE = "";
    }

    2-
    Pour la construction des paramètres, je pensais pouvoir m'abstenir de passer par un foreach...
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // -------------
    $specificProfessionalPieces = $bdd->prepare($req);
    foreach( $sql_param as $param_name => $param_value )
    {
    	$specificProfessionalPieces->bindValue($param_name, $param_value);
    }
    $specificProfessionalPieces->execute();
    return $specificProfessionalPieces->fetchAll();
    // -------------

    Oui, on peut, en passant l'array des paramètres directement dans le execute() :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // -------------
    $specificProfessionalPieces = $bdd->prepare($req);
    $specificProfessionalPieces->execute( $sql_param );
    return $specificProfessionalPieces->fetchAll();
    // -------------
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/12/2013, 21h39
  2. [AJAX] Récupération valeur pour traitement
    Par Beniti dans le forum AJAX
    Réponses: 0
    Dernier message: 05/09/2011, 13h09
  3. Test d'adequation : Récupération p-value pour macro
    Par SAStableau dans le forum Macro
    Réponses: 12
    Dernier message: 30/04/2008, 16h40
  4. Réponses: 3
    Dernier message: 13/02/2007, 17h10
  5. [Ajax ] Recuperation de la valeur d'un select pour traitemen
    Par NeHuS dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 14/02/2006, 16h50

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