2010-12-06 6 views
0

extrahieren i Daten aus MySQL-Tabellen in json abgerufen php dh mit, wie Daten json-Format

$table_first = 'recipe'; 
$query = "SELECT * FROM $table_first"; 
$resouter = mysql_query($query, $conn); 


$set=array(); 
while ($link = mysql_fetch_array($resouter, MYSQL_ASSOC)){ 
foreach ($link as $fieldname => $fieldvalue){ 
    $set[]= $fieldvalue;} 
$query2="SELECT ingredients.ingredient_id,ingredients.ingredient_name,ingredients.ammount FROM ingredients where rec_id = ".$link['rec_id']; 
$result2 = mysql_query($query2, $conn); 

while ($rs = mysql_fetch_array($result2, MYSQL_ASSOC)){ 
    foreach($rs as $fieldname =>$fieldvalue){ 
     $set[]=$fieldvalue; 
    } 

} 

} 
echo json_encode($set);

Das Ergebnis des Codes ist

["14","Spaghetti with Crab and Arugula","http:\/\/www","","2010-11-11 14:35:11","localhost\/pics\/SpaghettiWithCrabAndArugula.jpg",
"7","13 ounces spaghetti","10 kg",
"8","1 pound crabmeat","10"]

Hinweis: Die Zutaten nach dem Image-Tag-ID beginnt . 7 ist die Zutaten-ID, gefolgt von zwei Feldern "Zutaten txt und Menge", dann ist 8 eine weitere Zutaten-ID, die für die Rezept-ID relevant ist. wie es keine ({) offene oder (}) Klammer in meinem Ergebnis gibt.

was ich tun möchte, ist es in einem korrekten JSON-Format auszugeben. d.h

[ 
{ 
    "rec_id": "14", 
    "name":"Spaghetti with Crab and Arugula", 
    "overview":"http:\/\/www", 
    "category":"category", 
       "time":"2010-11-11 14:35:11", 
       "image":"localhost\/pics\/SpaghettiWithCrabAndArugula.jpg" 
    "ingredients": 
    { 
    "ingredient": 
    [      {"ingredient_id":"7","ingredient_name":"13ounces spaghetti","amount":"10kg" }, 
{ "ingredient_id": "8", "ingredient_name": "1 pound crabmeat","amount":"10kg" }, 

    ] 
    }]

und gleich für Rezept-ID 15 und so weiter .......

so wie dies .... bekommen !! irgendwelche Vorschläge

Antwort

2

Sie geben tadellos gültigen json aus.

Also schauen Sie, wie Sie bauen $set ... sehen Sie das Problem noch nicht?

Sie drücken skalare Werte nur auf ein Array, also sollte es nicht überraschen, dass wenn Sie json-encodieren, Sie eine lange Reihe von Skalaren ohne Struktur erhalten. Dein Code zerstört aktiv die Struktur, die du willst!

Ich könnte Ihren Code für Sie reparieren, aber ich werde nicht. Sie müssen sich Ihre Abfragen und Schleifen ansehen und herausfinden, was vor sich geht.

Sie im Grunde so etwas wie dies tun wollen:

$result = array(); 
$recipes = mysql_query('....'); 
while($recipe = mysql_fetch_assoc($recipes)){ 
    $result[$recipe['id']] = $recipe; 

    $ingredients = mysql_query('...'); 
    while($ingredient = mysql_fetch_assoc($ingredients)){ 
     $result[$recipe['id']] = $ingredient; 
    } 
} 

var_dump($result); //or echo json_encode($result); 

die Unterschiede sehen?

+0

hay timedev Ihr Code nur das letzte Rezept ausgeben zB {"": {"rec_id": "23", "name": "das ist Testrezept für Kategorie", "Übersicht": "Kategorieübersicht", "Kategorie ":" 4 "," time ":" 2002-12-10 13:30:39 "," image ":" http: \/\/www.localhost \/cafe \/pics \/logout (1). gif "}} – hunter

+0

es ist nicht die Zutaten ' – hunter

+0

, was ich aus alle Rezepte und ihre relevanten Zutaten setzen möchte. – hunter