2017-09-29 10 views
0

Je suis un peu perdu avec mon fichier PHP. Je veux trouver un tableau avec toutes mes données dans la base de données, et l'envoyer avec ajax à mon fichier js (cette partie est OK).Tableau PHP d'Ajax: format de requête SQL

Maintenant, je dois:

$cnx = new PDO('mysql:host=localhost;dbname=simul','root',''); 
$cnx->query('SET NAMES utf8'); 
$cnx->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 

$req = $cnx->prepare('Select * from price'); 
$req-> execute(); 

$data = $req->fetchAll(PDO::FETCH_KEY_PAIR); 
print_r($data); 

Mes JS:

function set_global_var(){ 
    $.ajax({ 
     type: "POST", 
     url: '/global.php', 
     async: false, 
     success: function(rep){console.log(rep);}, 
    }); 
} 

print_r:

Array 
(
[0] => Array 
    (
     [small-bronze] => 5 
    ) 

[1] => Array 
    (
     [small-silver] => 10 
    ) 
) 

Et pour y accéder rapidement, je veux juste quelque chose comme:

[small-bronze] => 5 
[small-silver] => 10 
[small-gold] => 15 

Base de données:

item   price 
small-bronze 5 

Comment puis-je faire cela efficacement? PDO :: FETCH_KEY_PAIR est-il faux? Merci d'avance!

+0

semble étrange. Je parierais sur votre propre post-traitement. Pouvez-vous fournir un extrait de code de la vie réelle qui fonctionne réellement au lieu d'une esquisse artificielle? BTW, combien de champs dans la table? –

+0

merci pour votre réponse. Je suis d'accord, la première fois vu cela. Maintenant édité, assez d'informations? –

+0

Eh bien, tout ce que je pourrais suggérer est de créer un [MCVE que tout le monde pourrait exécuter et confirmer votre cas] (https://phpdelusions.net/pdo/mcve). –

Répondre

0

global.php

$cnx = new PDO('mysql:host=localhost;dbname=simul','root',''); 
$cnx->query('SET NAMES utf8'); 
$cnx->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 

$req = $cnx->prepare('Select * from price'); 
$req-> execute(); 

$data = $req->fetchAll(PDO::FETCH_KEY_PAIR); 
echo json_encode($data); 

MY JS

function set_global_var(){ 
    $.ajax({ 
     type: "POST", 
     url: '/global.php', 
     async: false, // this is not required (in this case) 
     dataType:'json', 
     success: function(rep){ 
      console.log(rep); 

      //You can access each items of JSON array as below. 
      $.each(resp, function(i, val) { 
       console.log(val.small-bronze); 
      } 

     }, 
    }); 
} 

Les liens suivants seraient utiles pour vous d'en apprendre davantage à ce sujet. http://api.jquery.com/jquery.ajax/ http://php.net/manual/en/function.json-encode.php

+0

Parfait, plus propre avec le type de données json + PHP json encoder, merci pour le conseil –

-1

Je remplacé:

$req->fetchAll(PDO::FETCH_KEY_PAIR); 

Avec:

$array = array(); 
while($row = $req->fetch()) { 
    $array[$row['item']] = $row['prix']; 
} 

Maintenant, j'ai:

[small-bronze] => 5 
[small-silver] => 10 
[small-gold] => 15 

faire le travail, un peu déçu que FETCH_KEY_PAIR ne travailler dans mon cas ..

+0

QUOI? [** Ceci est votre propre commentaire **] (https://stackoverflow.com/questions/46490377/php-array-from-ajax-sql-request-format#comment79937606_46490377), "Ouais ... C'est ça .. Il y avait une ancienne version en local .. Je me sens un peu stupide, mais merci, maintenant ça marche! " - Vous avez admis que c'était de votre faute et maintenant vous reprochez à nouveau à PDO –

+0

Non non, c'était une erreur et ma faute. Juste j'ai remplacé FETCH_KEY_PAIR avec un peu de temps, ce qui fait le travail mieux. J'ai travaillé sur mon code ce week-end, et je pensais que poster mon code pourrait aider quelqu'un, donc je le poster. Désolé d'essayer de faire les choses dans le bon sens .. –