2011-08-24 4 views
1

J'ai une page qui fait une requête SQL via PHP et génère un petit tableau. Je veux que jquery sur la même page puisse utiliser le tableau, ou plus précisément, les variables du tableau.Déplacement de la matrice php dans jquery pour la manipulation

code

suit:

$result = mysql_query("SELECT characters_ID, name FROM characters where whichfamily = '$famID' && deathdate = '' && isfemale = '0' && $currentturn > borndate + 128",$db); 
$rowcheck = mysql_num_rows($result); 
//echo $rowcheck; 
$suitablemembers = array(); 
$i = '0'; 
while ($row = mysql_fetch_assoc($result)){ 
    foreach ($row as $col => $val){ 
     if ($col == 'characters_ID') { 
     $suitablemembers['idnum'][$i] = $val; 
     } 
     if ($col == 'name') { 
      $suitablemembers['name'][$i] = $val; 
     } 

     //$_SESSION['currentplayerCP'] = $val; 
     //$_SESSION['currentplayerMaxCP'] = $val; 
    } 
    $i++; 

    } 
    print_r($suitablemembers); 

Le print_r donne une sortie comme ceci:

Array ([IDNUM] => Array ([0] => 3 [1] => 10) [ name] => Array ([0] => Orland [1] => Raguet))

plus le code suivant:

$('#displaysomedata').click(function() { 
      //alert("Button clicked."); 
      // somehow do a while or loop to display data from that array 


     }); // end displaysomedata click function 

J'ai joué avec l'encapsulation JSON, mais je ne suis pas sûr que ce soit une solution réalisable pour cela.

Comment puis-je déplacer les données à partir d'un tableau de php dans les variables jquery (dans une boucle?)

Répondre

4

JSON est exactement la solution dont vous avez besoin pour cela. Votre script PHP code le tableau en JSON, et vous pouvez le répercuter sur la page.

Cela suppose que vous n'avez pas besoin de récupérer dynamiquement les données de PHP, mais que vous ne les produisez simplement qu'une fois au chargement de la page. Si vous avez besoin de le récupérer dynamiquement, vous devrez utiliser $.ajax() dans jQuery.

$('#displaysomedata').click(function() { 
     //alert("Button clicked."); 
     // Use PHP to output the JSON-encoded array into a javascript variable 

     var jsonobj = <?php echo json_encode($suitablemembers); ?>; 

     // Now you can do whatever you need to with `jsonobj` 
}); 

Note: Pour que cela fonctionne correctement, le Javascript ci-dessus doit être en ligne sur la même page générée par le PHP. S'il est inclus via <script src=>, PHP ne peut pas le modifier.

+0

Juste une fois la charge de page, comme vous le dites. J'ai essayé d'inclure le code affiché ci-dessus, mais cela ne fonctionne pas, j'ai ajouté alerte (jsonobj) juste en dessous, et ne rien obtenir. Dois-je le décoder à nouveau? – jeremy

+0

Visualisez la source de votre page et assurez-vous que quelque chose a été généré par PHP.Notez que votre Javascript DOIT être en ligne sur la même page que PHP - cela ne fonctionnera pas s'il est inclus dans un script src. Si la chaîne JSON est réellement présente dans la source, 'console.dir (jsonobj);' dans les outils de développement Firebug ou Chrome/Safari, ou dans la console des outils de développement IE8/9 (F12) –

+0

Désolé pour la question débutant. quand vous dites que le js doit être en ligne sur la même page, et pas dans les tags script src ... je suis un peu perdu. Comment rendre ce JS si ce n'est pas dans les balises src? jeremy

1

encodez vos données résultent en JSON, et le récupérer avec ajax ou getJSON dans votre script jquery.

EDIT:

Je suppose que vous avez besoin d'un exemple comment faire ...

// At the last of your php script, uncomment this 
// print_r($suitablemembers); 
// and give a json instead 
header('Content-Type: application/json'); 
echo json_encode($suitablemembers); 

Ensuite, à partir html ou d'un fichier js (ou js en ligne), vous pouvez effectuer ajax ou en utilisant get raccourci json

$('#displaysomedata').click(function() { 
    //alert("Button clicked."); 
    // Use PHP to output the JSON-encoded array into a javascript variable 

    $.getJSON('path/to/above/script.php', function(data) { 
     var items = []; 

     $.each(data, function(key, val) { 
     items.push(key + ':' + val); 
     }); 
     alert(items.join('')); 

    }); 
}); 
1

Jetez un oeil à la fonction PHP json_encode(), le premier exemple sur cette page est comment encoder un tableau en JSON. Vous pouvez utiliser getJSON pour le charger depuis le côté JQuery, comme indiqué par toopay.

1

//main.js

var system_array=[]; 
function get_array(){ 
    $.getJSON("/json/get_array.php", function(json) { 
      system_array=json; 
    }); 
} 

//get_array.php

<?php 
    $result_array=array(1,2,3,4,5); 
    header('Content-Type: application/json; charset=utf-8'); 
    echo json_encode($result_array); 
    exit(); 
?> 
Questions connexes