Question

Désolé pour le mauvais titre, mais je ne sais pas comment nommer cela. Mon problème est que chaque fois que je passe une valeur à partir d'une boîte de sélection je déclenche cet événement jquery afin de vérifier les cases à cocher. Bassically I echo $ res []; à selecctedgr.php. Ai-je besoin d'utiliser JSON? et comment puis-je faire?

Page principale:

$("#group_name").change(function(){
    var groupname = $("#group_name").val();
    var selectedGroup = 'gr_name='+ groupname;
    $.post("selectedgr.php", {data: selectedGroup}, function(data){
        $.each(data, function(){
            $("#" + this).attr("checked","checked");
        });
    },"json");


});

PHP (selectedgr.php):

<?php
    include_once '../include/lib.php';
    $gr_name=mysql_real_escape_string($_POST['gr_name']);

    $sqlgr = "SELECT * FROM PRIVILLAGE WHERE MAINGR_ID=".$gr_name;
    $resultgr = sql($sqlgr);
    while($rowgr = mysql_fetch_array($resultgr)){
        $res[] = $rowgr['ACT_ID'];
    }

    echo $res[];
?>
Était-ce utile?

La solution

Modifier la dernière ligne de votre échantillon PHP (echo $res[];) à:

echo json_encode($res);

json_encode() manuel vous en dira plus.

De même que @Unicron dit que vous devez valider la variable gr_name de $ avant de passer à l'instruction SQL.

Vous pouvez utiliser:

if(isset($_POST['gr_name'])) {
    $gr_name = mysql_real_escape_string($_POST['gr_name']);
}

Voir: http://php.net/manual/ fr / function.mysql-évasion-réel string.php pour plus d'informations dans le manuel PHP.

Autres conseils

Vous pouvez utiliser la fonction json_encode pour convertir des données arbitraires en JSON. En supposant que vous voulez retourner un tableau de chaînes, voici comment vous utiliserez json_encode:

<?php
    include_once '../include/lib.php';
    $res = array(); // initialize variables
    $sqlgr = sprintf("
        SELECT ACT_ID
        FROM PRIVILLAGE
        WHERE MAINGR_ID=%d
        ",
        $_POST['gr_name']
    ); // only select those columns that you need
       // and do not trust user input
    $resultgr = sql($sqlgr);
    while($rowgr = mysql_fetch_array($resultgr)){
        $res[] = $rowgr['ACT_ID'];
    }
    echo json_encode($res); // use json_encode to convert the PHP array into a JSON object
                            // this will output something like ['foo', 'bar', 'blah', 'baz'] as a string
?>

Du côté client, vous pouvez utiliser jQuery.post , comme ceci:

<script type="text/javascript">
$("#group_name").change(function () {
    $.post("selectedgr.php", {
        gr_name: $(this).val()
    }, function (data) {
        // console.log(data);
        // jQuery will convert the string "['foo', 'bar', 'blah', 'baz']" into a JavaScript object
        // (an array in this case) and pass as the first parameter
        for(var i = 0; i < data.length; i++) {
            $("#" + data[i]).attr("checked", "checked");
        }
    }, "json");
});
</script>

Si vous voulez utiliser JSON puis il suffit d'utiliser echo json_encode($res); Mais je ne comprends pas vraiment ce que vous gagnerez si votre code fonctionne maintenant, puisque vous aurez encore à faire un peu de traitement dans le Javascript pour gérer le résultat.

J'ai trouvé mon problème majeur comme ci-dessous

au lieu de (avant):

 $.post("selectedgr.php", {data: selectedGroup}, function(data){

faire (après):

$.post("selectedgr.php", selectedGroup, function(data){

Pardonnez mon mauvais. Ahh ya les gars, en ce qui concerne la fuite sur MySQL en fait #group_name n'est pas un champ d'entrée, mais une boîte de sélection. Appréciez pour chaque commentaire, suggestion et guide.

Eric.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top