PHP &

1 Cevap php

Ben sadece bu yüzden oldukça basit soruyu lütfen affet, PHP / MySQL ile başlıyorum:

Bir uygulama örneği olarak, ben tarifleri bir küçük dBase'ı oluşturmak istiyorum. Her reçete X farklı maddeler vardır. Tablo bence yeterince basittir - her satır, ilk (birincil anahtar) sonra bir tarifi ve her sütunu temsil eden bir DOĞRU / YANLIŞ değeri (ihtiyaçlar / 't ihtiyaç duymazken) ile bir maddedir.

Ama nasıl 5 farklı maddeler (havuç, domuz eti, pirinç, tereyağı, patates) kontrol ederseniz sorgu Ben sadece bu 5 malzemelerle yapabileceğiniz her tarifi dönecektir şekilde tablo arayabilirsiniz bir onay kutusu tabanlı bir form zanaat mı?

So a recipe that uses those 5 and something else WOULD NOT be returned. But a recipe that uses only 4 of those 5 WOULD be returned.

Benim sınırlı bilgi, sorgu dizesi ile ben öngören ... IFS ile dolu ve çok hantal görünüyor ve sadece bir kaç maddeler için var, ne bir yüz üzerinde olsaydı? Değilim Eyvah.

PHP / MySQL okuryazarlık doğru benim yolda bana yardımcı doğru sağlayabilir herhangi bir fikir için teşekkür ederiz!

1 Cevap

Eğer tablo farklı tasarım gerekir:

  • Tarifler - ID, Ad
  • Malzemeler - ID, isim
  • RecipesIngredients - recipeID, ingredientID, miktarı

    Recipes
    ID name
    1 scalloped potato
    2 cheesy carrots
    3 saucy potato
    
    
    Ingredients
    ID name
    1 potato
    2 sauce
    3 cheese
    4 carrots
    
    
    RecipesIngredients
    recipesID ingredientID    amount
    1          1               5 lbs
    1          2               2 cups
    1          3               1 cup
    2          3               1/2 cup
    2          4               2 whole
    3          2               a smidge
    3          1               1 whole red
    

Peynir ve patates tüm tarifler almak için:

SELECT * from recipes r 
INNER JOIN RecipesIngredients ri on r.id=ri.recipeID
INNER JOIN Ingredients i on i.id = ri.ingredientID
WHERE i.name in ('cheese','potato')