php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Scripts > BRAINSTORMING PHP/SQL/HTML/JS/CSS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


BRAINSTORMING PHP/SQL/HTML/JS/CSS Ihr habt eine Idee, aber keinen genauen Ansatz? Diskutiert mit anderen Usern des Forums über eure Gedankengänge um evtl. hilfreiche Ideen zu bekommen!
Normale Fragen bitte weiterhin in die entsprechenden Foren!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 08-06-2007, 19:03
PHPler
 Registrierter Benutzer
Links : Onlinestatus : PHPler ist offline
Registriert seit: Oct 2003
Beiträge: 250
PHPler ist zur Zeit noch ein unbeschriebenes Blatt
Standard Rezeptsuchmaschine

Hallo!

Ich möchte mir eine kleine Datenbank mit Rezepten anlegen. Dafür möchte ich eine Suchfunktion bauen, in der ich die Zutaten die ich zuhause habe auswählen kann, und mir die Suchfunktion dann die gerichte raussucht, die ich ausschliesslich aus diesen Zutaten machen kann.

Also müsste ich dafür eine mySQL Tabelle erstellen, in der ich die Gerichte speicher, und denen die Zutaten zuordne, die dafür benötigt werden. Das ist soweit kein Problem.

Aber wie muß ich die Suchabfrage (mySQL Query) gestalten, so dass auch wirklich nur die Gerichte ausgewählt werden, die den ausgewählten Zutaten entsprechen!? Ich müsste dann ja sagen: Wähle die Gerichte aus, die sich aus Zutat A B, A C, B C oder A B und C machen lassen, aber keine wo zutat D E und F vorkommt. Aber wie setz ich das am effektivsten in ein mySQL Query um!? Und wie müssten die SQL Tabellen dafür am besten aussehen!?

Hat jemand ein paar Vorschläge für mich!?

Danke!
Mit Zitat antworten
  #2 (permalink)  
Alt 09-06-2007, 00:25
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Naja. Stichwort Normalisierung.

Das würde bedeuten: Eine Tabelle für Rezepte, eine für Zutaten. Sicherlich wäre ratsam, die Tabelle Zutaten fest anzulegen, also das nicht jeder Hans und Frans seine falschgeschriebene Kieselerde selber eintippt, sondern sie auswählen muss.

Also hätten wir:
Eine Rezepttabelle
Eine Zutatentabelle
Eine Lookuptabelle (wo rezept id und zutat-id sich einander zurordnen - also wo drinsteht rezept soundso zutat soundso menge 300 einheit gramm).

Abfragen tust du das dann mit Stichwort Joins.

Fang einfach an, und melde dich dann mit konkreten Fragen wieder.
Und mach mal was Leckeres für Hackbraten.

__________________
ich glaube
Mit Zitat antworten
  #3 (permalink)  
Alt 09-06-2007, 00:56
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

vielleicht sowas
Code:
SELECT * FROM rezepten rez WHERE
(SELECT zutat FROM zutaten zut WHERE zut.rez_id = rez.id ORDER BY zutat)
 = ("Appel", "Banane")
ist natürlich nicht billig so ein correlated subquery ~.~
Mit Zitat antworten
  #4 (permalink)  
Alt 09-06-2007, 20:20
PHPler
 Registrierter Benutzer
Links : Onlinestatus : PHPler ist offline
Registriert seit: Oct 2003
Beiträge: 250
PHPler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Joins und sowas ist mir schon klar. Das Problem ist es halt eben die Suchabfrage zu stricken.

Ich kann ja nun sagen: Wähle mir die Gerichte aus der Datenbank, in denen ein Apfel, eine Kiwi und eine Banane vorkommen. Das ist aber nicht was ich haben will.

Ich möchte sagen: Wähle mir die Gerichte, die aus einem Apfel und einer Kiwi, einem Apfel und einer Banane, einer Kiwi und einer Banane, oder aus allen dreien bestehen, aber bitte nichts wo noch andere Zutaten sind die eben nicht vorkommen dürfen.

Das einzige was mir dazu einfallen würde wäre es sämtliche Zutaten aus der Datenbank zu holen und sagen wir mal in ein Array zu stecken, dieses dann mit den angekreuzten Zutaten zu vergleichen, die angekreuzten Zutaten dann aus dem Array entfernen, und eine Negativabfrage zu starten, in dem ich sage, wähle mir alle Gerichte, in denen keine Birne, keine Kirsche, kein Erdbeere, keine ... vorkommt.

Damit hätte ich dann wirklich nur die Gerichte, die sich aus den angekreuzten Zutaten machen lassen, und zwar aus allen Zutaten, oder nur einigen.

Allerdings finde ich das ganze recht umständlich, und es bedarf auch noch zwei mySQL Abfragen. Es wird da doch aber sicherlich eine möglichkeit geben das ganze in ein Query zu verpacken, oder?
Mit Zitat antworten
  #5 (permalink)  
Alt 09-06-2007, 20:56
PHPler
 Registrierter Benutzer
Links : Onlinestatus : PHPler ist offline
Registriert seit: Oct 2003
Beiträge: 250
PHPler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Oder drücken wir es mal so aus:

Eine Abfrage wie:

SELECT * FROM rezepte WHERE zutat = 'Apfel' OR zutat = 'Banane' OR zutat = 'Kiwi'

Würde mir zwar alle Gerichte rausfischen in denen ein Apfel oder eine Banane oder eine Kiwi vorkommt, würde aber auch sämtliche anderen Zutaten tolerieren, die nicht angekreuzt sind. Und genau darum geht es, dass andere Zutaten ausgeschlossen und NICHT toleriert werden dürfen, so dass ich nur die Gerichte bekomme die aus einem Apfel und einer Banene, einem Apfel oder einer KIWI, einer Banane oder einer Kiwi, oder eben aus allen dreien, aber aus nichts anderem halt...
Mit Zitat antworten
  #6 (permalink)  
Alt 09-06-2007, 21:11
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von PHPler
Und genau darum geht es, dass andere Zutaten ausgeschlossen und NICHT toleriert werden dürfen, so dass ich nur die Gerichte bekomme die aus einem Apfel und einer Banene, einem Apfel oder einer KIWI, einer Banane oder einer Kiwi, oder eben aus allen dreien, aber aus nichts anderem halt...
Na wenn du eine Tabelle mit den zwei Spalten Rezept-Id und Zutaten-Id hast, dann brauchst du dafür ja nur die IDs der drei gesuchten Zutaten mit WHERE abfragen, die Sätze nach der Rezept-Id gruppieren und mit COUNT die Anzahl zählen - und schauen, ob diese kleiner gleich drei ist.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #7 (permalink)  
Alt 09-06-2007, 21:42
PHPler
 Registrierter Benutzer
Links : Onlinestatus : PHPler ist offline
Registriert seit: Oct 2003
Beiträge: 250
PHPler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@wahsaga: Könntest Du mal ne Beispielabfrage dafür posten!? Irgendwie kriege ich das grad nicht zusammen...
Mit Zitat antworten
  #8 (permalink)  
Alt 09-06-2007, 21:48
PHPler
 Registrierter Benutzer
Links : Onlinestatus : PHPler ist offline
Registriert seit: Oct 2003
Beiträge: 250
PHPler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

OMG manchmal sieht man den Walt vor lauter Bäumen nicht. Wenn ich schon ein Formular habe, in dem man die Zutaten markieren kann, dann kann ich gleich überprüfen, welche Zutaten NICHT markiert wurden, und daraus eine Abfrage machen, die diese Zutaten ausschließt. Damit habe ich dann alle Gerichte, die den markierten Zutaten entsprechen in einer mySQL Abfrage. Womit sich das Thema erledigt hätte...
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:28 Uhr.