Php Risposta JSON Array

Ho questo codice php. Come potete vedere ho query di un database mysql attraverso una funzione showallevents. Torno $risultato $event variabile. Con il ciclo while mi assegnare i valori che mi da evento ad una risposta array e ogni volta che il ciclo accade che le righe sono memorizzati nell’array. Sicuramente io sto avendo da qualche parte, perché nonostante io sono sempre un corretto numero di risposte di tutti i valori che ho in json sono “null”. Inoltre mi dice qualcosa su JSONarray non può essere convertito in jsonobject

 if (isset($_POST['tag']) && $_POST['tag'] != '') 
 {
//get tag
$tag = $_POST['tag'];

//include db handler
require_once 'include/DB_Functions.php';
$db = new DB_Functions();

//response Array
$response = array("tag" => $tag, "success" => 0, "error" => 0);

//check for tag type
if ($tag == 'showallevents') 
{
    //Request type is show all events
    //show all events
    $event = $db->showallevents();
    if ($event != false)
    {
    $data = array();
    while($row = mysql_fetch_assoc($event)) 
        {
        $response["success"] = 1;
        $response["uid"] = $event["uid"];
        $response["event"]["date"] = $event["date"];
        $response["event"]["hours"] = $event["hours"];
        $response["event"]["store_name"] = $event["store_name"];
        $response["event"]["event_information"] = $event["event_information"];
        $response["event"]["event_type"] = $event["event_type"];
        $response["event"]["Phone"] = $event["Phone"];
        $response["event"]["address"] = $event["address"];
        $response["event"]["created_at"] = $event["created_at"];
        $response["event"]["updated_at"] = $event["updated_at"];
        $data[]=$response;

        }
        echo json_encode($data);            
    }
    else 
    {
        //event not found
        //echo json with error = 1
        $response["error"] = 1;
        $response["error_msg"] = "Events not found";
        echo json_encode($response);
    }
}
  else 
 { 
echo "Access Denied"; 
 }
}
?>

l’DB_Functions.php

     <?php

    class DB_Functions 
   {

private $db;

//put your code here
//constructor
function __construct() 
{
    require_once 'DB_Connect.php';
    //connecting to database
    $this->db = new DB_Connect();
    $this->db->connect();
}

//destructor
function __destruct()
{

}


/**
 * Select all events that are after yesterday.
 */
public function showallevents()
{
   $result = mysql_query("SELECT * FROM events WHERE date >= CURDATE()");
   return($result);
   }

   }

  ?>

ok il codice che mi ha aiutato a mettere tutti i dati in un array, è stato questo

            $data = array();
            while($row = mysql_fetch_assoc($event)) 
        {
        $response["success"] = 1;
        $response["event"]= $row;
        $data[]=$response;
        }
        echo json_encode($data);

OriginaleL’autore Nick Kl | 2012-06-08

3 Replies
  1. 0

    Hai unito due indipendenti di pezzi di codice e liquidata con un pasticcio, il cui risultato è chiaro.

    È possibile creare un array associativo in due modi:

    $array = (key=>value, key2=>value2);

    Si può usare anche:

    $array[key]=value;
    $array[key2]=value2;

    Nota che sia la “chiave” e “valore” sono semplicemente le variabili, è possibile utilizzare stringhe, o passare una variabile da un altro luogo.

    Quando fa cose simili, io uso il seguente approccio:

        $response["success"] = 1;
        $response["uid"] = $event["uid"];
        $response["event"]["date"] = $event["date"];
        $response["event"]["hours"] = $event["hours"];
        $response["event"]["store_name"] = $event["store_name"];
        $response["event"]["event_information"] = $event["event_information"];
        $response["event"]["event_type"] = $event["event_type"];
        $response["event"]["Phone"] = $event["Phone"];
        $response["event"]["address"] = $event["address"];
        $response["event"]["created_at"] = $event["created_at"];
        $response["event"]["updated_at"] = $event["updated_at"];
        $data[]=$response;
    Bene dopo l’utilizzo di questo metodo sono riuscito ad arrivare a logcat 3 risposte, che dovrebbe essere il numero di righe che mi dovrebbe arrivare secondo mysql query che eseguo.. Il problema è che non restituiscono valori null. Si dice che jsonarray non può essere convertito in jsonobject.
    A indovinare, controllare il risultato del showallevents() funzione. Probabilmente non è la restituzione di quello che pensi tu.
    Non è questo il caso dato che le righe che mi aspetto di ottenere indietro sono corrette. Sto postando l’Db_functions.php dopo il codice principale con il showallevents per rendere le cose più facili.
    Poi io non sono del tutto sicuro di quello che sta succedendo. Che cosa, esattamente, sta dicendo che jsonarray non può essere convertito in jsonobject?
    sto postando 1 foto con il json di risposta ottengo con risultati nulli e 1 foto con il messaggio di errore. thx per il vostro tempo e il modo qualunque sia il risultato.

    OriginaleL’autore RonLugge

  2. 0

    Qual è il tuo $response variabile?
    In PHP per creare gli array associativi, si utilizza => e non =

    per esempio:

    $array = ('key1' => 'value1', 'key2' => 'value2');

    OriginaleL’autore Brian Glaz

  3. 0

    se si desidera restituire tutte le matrici, è possibile utilizzare mysql_fetch_assoc in vece di mysql_fetch_row?

        if ($tag == 'showallevents') 
    {
        //Request type is show all events
        //show all events
        $event = $db->showallevents();
        if ($event != false)
        {
        $data = array();
        while($row = mysql_fetch_assoc($event)) 
            {
            $data[] = $row;
            echo json_encode($data);            
        }
        else 
        {
            //event not found
            //echo json with error = 1
            $response["error"] = 1;
            $response["error_msg"] = "Events not found";
            echo json_encode($response);
        }
    }
    
         else
        {
    echo "Access Denied";
       }
       }
      ?>
    quando ho usato mysql_fetch_array comando è tornato solo 1 riga $risultato. così ho avuto qualche risposta, ma era solo 1 riga di dati.
    utilizzare mysql_fetch_assoc
    sì che è quello che ho usato io e i valori null come risposta
    Grazie per aver sottolineato il mio errore, ho aggiornato la mia risposta.

    OriginaleL’autore colonelclick

Lascia un commento