Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

Checkbox Ajax + Php



  1. #1
    squal31

    Checkbox Ajax + Php


    ------

    Bonjour,

    Je vous présente mon formulaire : Après avoir sélectionné dans une liste le choix 6eme/5eme/4eme ou 3eme. Les capacités du programme présentent dans une base de donnée s'affiche en ajax (jquery) sous forme de checkbox dans le div en question.
    Tout fonctionne nikel SAUF qu'il m'est impossible de checker les checkbox !?

    Quelqu'un a une idée ?
    Merci d'avance de vos réponses,


    Voici le formulaire :
    Code HTML:
    <script type="text/javascript" src="js2/jquery-1.7.2.min.js"></script>
    <script type="text/javascript">
    				$(document).ready( function() {
    					$("#formulaire").change(function() {
    					   $("#capacite_prog").load("inc/ad_capacite_prog.php?niveau_prog="+$("#niveau_prog").val()) 
    					});
    				});
    			</script>
                
                <h3>Niveau :</h3>
    			<br>
                <select name="niveau" size="1" id="niveau_prog" class="texte">
    				<option value="">Choisir</option>
    				<option value="6">6eme</option>
    				<option value="5">5eme</option>
                    <option value="4">4eme</option>
    				<option value="3">3eme</option>
    		  	</select>
                
                <br><br>
    Et le fichier inc/ad_capacite_prog.php :
    Code PHP:
    // Connection à la base de donnée
    include "connect.php";

    // Requete
    $rq 'select id, capacite from tbl_programme where niveau="'.$_GET["niveau_prog"].'"';
    $resultat mysqli_query($bdd$rq);
    while(
    $donnees mysqli_fetch_assoc($resultat))
        {
            
    // Recupération des données :
            
    $id $donnees['id'];
            
    $capacite $donnees['capacite'];
            
            
    // Affichage en liste
            
    echo '<input type="checkbox" class="texte" name="programme[]" value="'.$id.'" id="'.$id.'"> 
                <label for="'
    .$id.'"> '.$id.' - '.$capacite.'</label><br />';
        }
    // Libération des données récupérées lors de la requête SQLi
    mysqli_free_result($resultat);
    // Fermeture de la connection SQL
    mysqli_close($bdd); 

    -----
    Ce n'est pas parce que les choses sont difficiles que nous n'osons pas, c'est parce ...

  2. #2
    grosmatou75001

    Re : Checkbox Ajax + Php

    Au risque de dire une grosse bêtise et en fait hors sujet, mais ceci
    Code:
    $rq = 'select id, capacite from tbl_programme where niveau="'.$_GET["niveau_prog"].'"';
    sans autres vérifications/modifications sur niveau_prog me paraît excellent pour une petite injection SQL non?

  3. #3
    galerien69

    Re : Checkbox Ajax + Php

    hello,

    à supposer que ton script php est correct, dans ton echo '<input'..tu fermes pas correctement la balise. Comme c'est un simple tag, la fin devrait être "/> et non ">

  4. #4
    squal31

    Re : Checkbox Ajax + Php

    Merci a toi grosmatou75001 pour la remarque niveau sécurité ... une fonction gérera tout ça une fois que ça fonctionnera correctement.

    Merci également à toi galerien69. J'ai fait la modif (erreur basique) mais ça ne fonctionne pas mieux !?

    Du coup j'ai copier mon code Ajax directement dans la page.
    Résultat : sur la page ça fonctionne et en ajax tjs pas alors que c'est le même code !?
    Un truc de fou !!!

    Si vous avez d'autre idée ? Surtout n'hésitez pas !
    Merci d'avance,

    Code ajax :
    Code PHP:
    <?php
    $niveau_prog 
    $_GET["niveau_prog"];
    // Secu a gérer !

    // Connection à la base de donnée
    include "connect.php";

    // Requete
    $rq 'select id, capacite from tbl_programme where niveau="'.$niveau_prog.'"';
    $resultat mysqli_query($bdd$rq);
    while(
    $donnees mysqli_fetch_assoc($resultat))
        {
            
    // Recupération des données :
            
    $id $donnees['id'];
            
    $capacite $donnees['capacite'];
            
            
    // Affichage en liste
            
    ?>
            
            <label>
                <input type="checkbox" class="texte" name="programme[]" value="<?php echo $id?>" />
                <?php echo $capacite?>
            </label>
            <br />
            
            <?php
            
    /*
            echo '<input type="checkbox" class="texte" name="programme[]" value="'.$id.'" id="'.$id.'" />
                  <label for="'.$id.'"> '.$id.' - '.$capacite.'</label><br />';
            */      
                  
        
    }
    // Libération des données récupérées lors de la requête SQLi
    mysqli_free_result($resultat);
    // Fermeture de la connection SQL
    mysqli_close($bdd);
    Mon code directement dans la page :
    Code PHP:
    <?php
    // Connection à la base de donnée 
    include "inc/connect.php";
    $niveau_prog '4';
    // Requete
    $rq 'select id, capacite from tbl_programme where niveau="'.$niveau_prog.'"';
    $resultat mysqli_query($bdd$rq);
    while(
    $donnees mysqli_fetch_assoc($resultat))
        {
            
    // Recupération des données :
            
    $id $donnees['id'];
            
    $capacite $donnees['capacite'];
            
            
    // Affichage en liste
            
    ?>
            
            <label>
                <input type="checkbox" class="texte" name="programme[]" value="<?php echo $id?>" />
                <?php echo $capacite?>
            </label>
            <br />
            
            <?php
            
    /*
            echo '<input type="checkbox" class="texte" name="programme[]" value="'.$id.'" id="'.$id.'" />
                  <label for="'.$id.'"> '.$id.' - '.$capacite.'</label><br />';
            */      
                  
        
    }
    // Libération des données récupérées lors de la requête SQLi
    mysqli_free_result($resultat);
    // Fermeture de la connection SQL
    mysqli_close($bdd);
    Ce n'est pas parce que les choses sont difficiles que nous n'osons pas, c'est parce ...

  5. A voir en vidéo sur Futura
  6. #5
    galerien69

    Re : Checkbox Ajax + Php

    ton include est pas le même: inc/connect dans un cas, connect dans l'autre.

    Par rapport à ajax
    Dans un premier temps, je te suggèrerais, si tu as des problèmes de simplement retourner le html (sans faire ta boucle php)
    Puis de faire ta requete à la bdd avec la valeur niveau_prog hardcodée (tu la laisses à 4).
    Et enfin de passer en argument niveau_prog (paramètre GET) et simplement d'afficher la valeur niveau_prod que tu recois dans ton script php!

    A première vue, je vois pas grand chose qui ferait que tu n'obtiens aucun résultat. (je m'attendrais à voir un warning niveau_prog unset, ou bien connect.php does not exist ou un message quelconque). Tu affiches bien le contenu tel quel à la réception du retour ajax?
    Dernière modification par galerien69 ; 06/10/2013 à 15h08.

  7. #6
    squal31

    Re : Checkbox Ajax + Php

    Merci, de m'aider dans ma petite galère ...

    Alors l'include n'est pas le même effectivement car le fichier appelé par ajax est dans le dossier inc tout comme le fichier connect.

    Ensuite, je vais faire ce que tu as dis, c'est a dire simplifier le code sans requette sql. Mais sache que je n'ai pas "pondu" le code d'un coup, je suis parti d'un affichage simple (genre 4eme, 3eme, ...) pour arriver à ma sélection des checkbox. Exactement comme tu indiques de faire.
    Pas de souci, je vais repartir à zéro ...

    Et effectivement j'ai aucun retour d'erreur, tout s'affiche comme prévu. Sauf que je ne peux pas checker mes checkbox ...

    La question que je me pose, car je ne suis pas une star du ajax, c'est : mon fichier ne serait-il pas appelé non stop ? Du coup il se remet à zéro instantanément, et du coup je ne peux pas checker. Ou un truc du genre ?

    Encore merci pour ton aide ...
    Ce n'est pas parce que les choses sont difficiles que nous n'osons pas, c'est parce ...

  8. #7
    galerien69

    Re : Checkbox Ajax + Php

    une autre possibilité que je vois qui va dans ton sens, c'est que en javascript ton script plante et si jamais tu avais fait ta requete ajax lors de la soumission de ton formulaire (enter, ou clique sur bouton submit), alors ton browser appele l'action page de ton formulaire. Si tu avais mis la même page dans ton formulaire, alors ta page se réactualise sans que tu n'aies jamais fait ne serait-ce que ta requete ajax.

    De la même manière, tu devrais mettre l'action page vers une autre page (pour être sur), mettre un try catch sur l'onsubmit de ton formulaire (pour t'aider à debugger s'il y a effectivement une exception levée), et bien sûr t'assurer des e.preventDefault()/return false;

  9. #8
    squal31

    Re : Checkbox Ajax + Php

    Quelques news ... pas bonnes ...

    J'ai mis les checkbox en mode html dans le fichier appelé par Ajax, c'est tjs la même histoire : impossible de checher ! Rien de neuf ...
    Je penche donc pour un problème lié avec le fichier qui se réactualise sans demande ...

    Et pour le msg #7, je t'avoue avoir pas compris grand chose ... si tu peux décortiquer ou expliquer un peu plus en détail ?

    Encore une fois, merci de ton aide,
    Ce n'est pas parce que les choses sont difficiles que nous n'osons pas, c'est parce ...

  10. #9
    grosmatou75001

    Re : Checkbox Ajax + Php

    Tu peux pas rajouter une simple boite dialogue alert("abc"); dans le script pour voir si il est exécuté qu'une seule fois?

  11. #10
    squal31

    Re : Checkbox Ajax + Php

    Efficacité maximum le grosmatou75001 !
    En effet ! Dès que je checke une checkbox, le fichier se recharge ...

    Une idée pour éviter cela ?

    Encore merci de vos aides ...
    Ce n'est pas parce que les choses sont difficiles que nous n'osons pas, c'est parce ...

  12. #11
    galerien69

    Re : Checkbox Ajax + Php

    oui, je viens de faire gaffe à ton javascript, tu attaches mal ton event.
    Tu dis dès que le formulaire change, tu reactualises capacite_prog qui j'imagine est à l'intérieur de ton formulaire..... (ce qui est somme toute byzarre puisque normalement il faut avoir un event live, ou bien rebinder les event sur le DOM modifié, mais passons)

    Si tu récupères la valeur de niveau_prog et que tu ne te sers que de niveau_prog pour rafraichir ton formulaire, alors tu peux simplement attacher l'event onchange que sur ton select.
    Dernière modification par galerien69 ; 07/10/2013 à 23h19.

  13. #12
    squal31

    Re : Checkbox Ajax + Php

    Je vois que je suis le seul a rien comprendre ... parce qu'il est tard ?
    Le onchange je le met dans la balise select et après ... ?
    Je mets quoi dedans ?
    Qu'est ce que ça vient changer le onChange exatement ?

    Beaucoup de question, dsl je capte pas ...
    Encore merci de vos aides ...

    Code:
    <select name="niveau" size="1" id="niveau_prog" class="texte" onChange="???">
    Ce n'est pas parce que les choses sont difficiles que nous n'osons pas, c'est parce ...

  14. #13
    galerien69

    Re : Checkbox Ajax + Php

    si tu sais pas à quoi sert onchange, je t'invite à attendre l'intervention d'un autre forumeur ou à rechercher sur le net à quoi ca sert.
    si tu sais pas quoi mettre dans ton callback pour l'evenement onchange, alors mets un alert ou un console.log pour voir au moins quand est-ce qu'il est déclenché.

  15. #14
    grosmatou75001

    Re : Checkbox Ajax + Php

    Les on--- dans le code HTML sont des "event handler" ou quelque chose comme ça. Voir p.ex. http://www.w3schools.com/tags/ref_eventattributes.asp

  16. #15
    squal31

    Re : Checkbox Ajax + Php

    Merci a vous 2 de m'avoir mis sur la voie !
    Après lecture et explications, voici la solution. Enfin peut être pas LA solution, mais en tout cas ça fonctionne ...

    Encore merci de vos coups de pouces !

    Code:
    <script type="text/javascript">
        function Liste_deroulante(val)
    	{
    	   alert("La valeur sélectionnée est : " + val);
    	   $("#capacite_prog").load("inc/ad_capacite_prog.php?niveau_prog="+$("#niveau_prog").val()) 
    	}
    </script>
                
                <h3>Niveau :</h3>
    			<br>
                <select name="niveau" size="1" id="niveau_prog" class="texte" onchange="Liste_deroulante(this.value)">
    				<option value="">Choisir</option>
    				<option value="6">6eme</option>
    				<option value="5">5eme</option>
                    <option value="4">4eme</option>
    				<option value="3">3eme</option>
    		  	</select>
    Ce n'est pas parce que les choses sont difficiles que nous n'osons pas, c'est parce ...

Discussions similaires

  1. Tableau ajax
    Par pouce_daddy dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 28/01/2013, 10h11
  2. Ajax+Php+MySql pour AutoComplétion
    Par squal31 dans le forum Programmation et langages, Algorithmique
    Réponses: 37
    Dernier message: 29/03/2012, 11h01
  3. Problème avec confirm() et AJAX
    Par anto2b dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 23/10/2011, 21h58
  4. Rico pour Ajax..
    Par zoup1 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 09/09/2006, 11h19
  5. A-t-on découvert le fief du légendaire Ajax ?
    Par RSSBot dans le forum Commentez les actus, dossiers et définitions
    Réponses: 10
    Dernier message: 12/04/2006, 15h44