Ajouter des objets supplémentaires à JSON encodée Tableau

voix
8

Je suis actuellement en utilisant un tableau codé JSON pour afficher les utilisateurs dans ma base de données pour une fonction d'auto-suggérer.

Il ressemble à ceci:

$sth = mysql_query(SELECT id, name FROM users);

$json = array();

    while($row = mysql_fetch_assoc($sth)) {
        $json['name'] = $row['name'];
        $json['id'] = $row['id'];
        $data[] = $json;
    }

print json_encode($data);

Ce retour:

[{id:81,name:John Doe},{id:82,name:Jane Doe}]

Ma question est un peu 2 fois:

Tout d' abord , comment pourrais - je ajouter manuellement un objet supplémentaire à cette sortie? Par exemple, disons que je voulais ajouter: {id:444,name:A New Name}

Ainsi, ce serait ressembler à:

[{id:81,name:John Doe},{id:82,name:Jane Doe},{id:444,name:A New Name}]

Deuxièmement , disons que je voulais aussi ajouter d' autres objets au tableau d'une table séparée ainsi, par exemple:

$sth = mysql_query(SELECT id, title FROM another_table);

$json = array();

    while($row = mysql_fetch_assoc($sth)) {
        $json['name'] = $row['title'];
        $json['id'] = $row['id'];
        $data[] = $json;
    }

print json_encode($data);

De cette façon, je pouvais avoir les deux tables peuplées dans le tableau JSON, ainsi, montrant options supplémentaires dans mon autosuggestion.

Espérons que cela fait sens, comme je l'ai essayé difficile d'exprimer ce que je suis en train d'accomplir.

Merci!

Créé 17/08/2010 à 16:42
source utilisateur
Dans d'autres langues...                            


4 réponses

voix
13

Il suffit de continuer à pousser au $datatableau.

$json = array();

    while($row = mysql_fetch_assoc($sth)) {
        $json['name'] = $row['name'];
        $json['id'] = $row['id'];
        $data[] = $json;
    }

$custom = array('name'=>'foo', 'id' => 'bar');
$data[] = $custom;

Puis à la fin, faites votre json_encode. En supposant que vous ne parle pas de fusion dans la JS lui - même avec plusieurs appels ajax.

Et si vous avez des scripts séparés, les combiner dans une seule page php.

Créé 17/08/2010 à 16:46
source utilisateur

voix
4

Essayez de cette façon: -

$temp = json_encode($json);  //$json={"var1":"value1","var2":"value2"}   
$temp=substr($temp,0,-1);
$temp.=',"variable":"'.$value.'"}';
Créé 14/01/2015 à 04:29
source utilisateur

voix
1

Vous pouvez modifier le JSON (texte), mais il est beaucoup plus facile de modifier le tableau avant de l'encoder. Ou suis-je manque quelque chose?

Créé 17/08/2010 à 16:46
source utilisateur

voix
0

Je ne suis pas un expert dans ces domaines, mais je vais essayer de voir si je peux aider. Essayez l'un de ces:

Option 1 (Je ne sais pas comment les syndicats travaillent dans une base MySQL):

$sth = mysql_query("SELECT id, name FROM users union SELECT id, name FROM (SELECT id, title as name from another_table) as T2"); 


    $json = array(); 

        while($row = mysql_fetch_assoc($sth)) { 
            $json['name'] = $row['name']; 
            $json['id'] = $row['id']; 
        }

    $json['name'] = 'A new name';
    $json['id'] = '444';
    $data[] = $json; 

    print json_encode($data);

Je ne l'ai jamais fait PHP, donc je fais des hypothèses. J'ai aussi jamais utilisé MySql, donc il n'y a plus d'hypothèses.

Option 2:

$sth = mysql_query("SELECT id, name FROM users"); 


    $json = array(); 

        while($row = mysql_fetch_assoc($sth)) { 
            $json['name'] = $row['name']; 
            $json['id'] = $row['id']; 
        }

$sth = mysql_query("SELECT id, title from another_table"); 


        while($row = mysql_fetch_assoc($sth)) { 
            $json['name'] = $row['title']; 
            $json['id'] = $row['id']; 
        }

    $json['name'] = 'A new name';
    $json['id'] = '444';
    $data[] = $json; 

    print json_encode($data);

J'espère que cela t'aides.

Créé 17/08/2010 à 16:53
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more