2010-12-06 5 views
0
$result=array(); 
$table_first = 'recipe'; 
$query = "SELECT * FROM $table_first"; 
$resouter = mysql_query($query, $conn); 



while ($recipe = mysql_fetch_assoc($resouter, MYSQL_ASSOC)){ 
    $result['recipe']=$recipe; 

$query2="SELECT ingredients.ingredient_id,ingredients.ingredient_name,ingredients.ammount FROM ingredients where rec_id = ".$recipe['rec_id']; 
$result2 = mysql_query($query2, $conn); 

while($ingredient = mysql_fetch_assoc($result2)){ 


     $result['ingredient'] = $ingredient; 

} 

echo json_encode($result); 
}

ce code Montrez toutes les recettes, mais seulement les derniers ingrédients à savoirproblème de la boucle while et le réseau

{"recipe":{"rec_id":"14","name":"Spaghetti with Crab and Arugula","overview":"http:\/\/www","category":"","time":"2010-11-11 14:35:11","image":"localhost\/pics\/SpaghettiWithCrabAndArugula.jpg"},
"ingredient":{"ingredient_id":"55","ingredient_name":"test","ammount":"2 kg"}}{"recipe":{"rec_id":"15","name":"stew recipe ","overview":"http:\/\/www","category":"","time":"2010-11-11 14:42:09","image":"localhost\/pics\/stew2.jpg"},
"ingredient":{"ingredient_id":"25","ingredient_name":"3 parsnips cut into cubes","ammount":"11"}}

Je veux sortir tous les enregistrements d'ingrédients pertinents pour id recette 14 et ce juste imprimer les dernier ingrédient.

Répondre

2
$result['ingredient'] = $ingredient; 

remplace la variable $result['ingredient'] avec la dernière valeur $ingredient chaque fois, culminant avec la dernière valeur renvoyée, vous devez utiliser:

$result['ingredient'][] = $ingredient; 

Pour incrememnt/créer une nouvelle valeur dans le tableau $result['ingredient'] pour chaque $ingredient. Vous pouvez ensuite afficher ce tableau en fonction de vos besoins. L'utilisation print_r($result['ingredient']) vous montrera son contenu ... pour voir par vous-même essayer:

while($ingredient = mysql_fetch_assoc($result2)){ 
     $result['ingredient'][] = $ingredient; 


} 

print_r($result['ingredient']); 
+0

merci pour votre réponse, mais il montre tous les ingrédients dans ma table et ce que je veux imprimer l'ingrédient pertinent à la recette ID 1 regarder mes ingrédients requête j'ai utilisé la clause WHERE pour restreindre les ingrédients contre l'ID recette spécifique. – hunter

+0

Oui- la dernière partie était une DÉMO de ce que contient la variable. La réponse répond à la question initiale: «cela me donne juste le dernier enregistrement, c'est-à-dire». Notez également qu'il affiche le résultat de votre requête, pas tous les enregistrements de la table. – SW4

+0

Si vous souhaitez utiliser la clause WHERE pour restreindre les enregistrements renvoyés, et que la variable contient tous les enregistrements ... il semble que vous deviez redéfinir votre SQL. – SW4

0

Si je comprends bien ce que vous voulez faire, il est un moyen d'optimiser le code beaucoup, en allant chercher des recettes et des ingrédients une seule requête à l'aide JOIN:

$recipes = array(); 
$recipe_ingredients = array(); 

$query = "SELECT * FROM recipe LEFT JOIN ingredients ON ingredients.rec_id=recipe.rec_id ORDER BY recipe.rec_id DESC"; 

$resouter = mysql_query($query, $conn); 

$buffer_rec_id = 0; 
$buffer_rec_name = ""; 
$buffer_rec_cat = ""; 

while($recipe = mysql_fetch_array($resouter)) 
{ 

    if($buffer_rec_id != $result['recipe.rec_id']) 
    { 
     $recipes[] = array($buffer_rec_id, $buffer_rec_name, $buffer_rec_cat, $recipe_ingredients); 

     $recipe_ingredients = array(); 

     $buffer_rec_id = $result['recipe.rec_id']; 
     $buffer_rec_name = $result['recipe.rec_name']; 
     $buffer_rec_cat = $result['recipe.rec_category']; 
    } 
    else 
    { 
     $recipe_ingredients[] = array($result['ingredient_id'], $result['ingredient_name'], $result['ammount']); 

    } 

} 

$print_r($recipes); 

Ce code devrait vous donner un tableau multidimensionnel que vous pouvez utiliser plus tard pour obtenir les données que vous voulez.

Je vous laisse adapter le code pour avoir exactement les informations dont vous avez besoin.

+0

merci monsieur pour votre attention profonde mais ce code n'a aucune sortie affichée – hunter

+0

je suis plus proche de la solution mais un peu confuse plaese regarde ma question de mise à jour maintenant – hunter

Questions connexes