• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

verschachtelte schleife nur einmal abspielen

michaelos

Neues Mitglied
hi erstmal,
also wie der titel schon sagt möchte ich eine verschachtelte schleife nur einmal abspielen. also erstmal der code damit ihr versteht was ich meine:
(ja ich weiss das ich keine kommentare gemacht habe und das die variablen vielleicht umbenennen sollte aber es ist alles noch in aufbau und ich mache das danach^^)
PHP:
$a = "SELECT * FROM a";
  $auswahl = mysql_query($a);
  while($row = mysql_fetch_object($auswahl)){
    $b = "SELECT * FROM b WHERE name LIKE '$row->name'";
    $c = "SELECT * FROM c";
    $wahl = mysql_query($b);
    $waehlen = mysql_query($c);
    $row2 = mysql_fetch_object($wahl);
    while($row3 = mysql_fetch_object($waehlen)){
      if ($row->name != $row2->name){
        echo "<b>$row3->name:</b> $row3->anzahl $row3->was";
      }
    }
    $d = $row->anzahl + $row2->anzahl;
    echo "<b>$row->name:</b> ".$d." $row->was<br>";
  }
  echo "<br><a href='index.php'>Zurück?</a>";
also ich will die 2. while-schleife nur einmal abspielen. bitte lasst (wenn möglich) fragen wie "wozu ist das?" denn es ist etwas schwer zu erklären :D
also wenn etwas unklar ist dann fragt ruhig nach ;)
ich danke euch schonmal im vorraus und hoffe ihr habt mich verstanden und könnt mir helfen :D
mfg michaelos
 
Ich würde dir eher raten das direkt über mysql zu klären. Hab es auch am Anfang so gemacht, aber es geht viel leichter direkt über mysql. Da dein Beispiel so verwirrend was die Tabellen- und Variablennamen angeht, kann ich dir leider auch kein Beispiel schreiben. Aber das was du da garde machst ist ehrlich gesagt der reine Wahnsinn ^^

Nenn bitte deine Variablen um und sag einfach mal was du alles aus der Tabelle auslesen willst. Dann geb ich dir ein Beispiel ;)
 
erstmal danke für deine schnelle antwort :)
also ich habe einen "auftrag" bekommen von nem freund: ich soll ihm ein script schreiben das seiner mutter (oda so) eine einkaufsliste ausgibt :D
man gibt an was gekocht/gebraten/gebacken oder ähnliches werden soll und das script soll alles ausgeben^^
blöder weise gibt mir das script öfter die selben zutaten aus weil die 2.while schleife immer wieder ausgeführt wird
also hier nocheinmal mit anderen variablen:

PHP:
$borsch = "SELECT * FROM borsch";
  $auswahl = mysql_query($borsch);
  while($row = mysql_fetch_object($auswahl)){
    $frikadellen = "SELECT * FROM frikadellen WHERE name LIKE '$row->name'";
    $frikadellen2 = "SELECT * FROM frikadellen";
    $wahl = mysql_query($frikadellen);
    $waehlen = mysql_query($frikadellen2);
    $row2 = mysql_fetch_object($wahl);
    while($row3 = mysql_fetch_object($waehlen)){
      if ($row->name != $row2->name){
        echo "<b>$row3->name:</b> $row3->anzahl $row3->was";
      }
    }
    $zutaten = $row->anzahl + $row2->anzahl;
    echo "<b>$row->name:</b> ".$zutaten." $row->was<br>";
  }
  echo "<br><a href='index.php'>Zurück?</a>";

also ich habe 2 tabellen in der datenbank namens borsch und frikadellen (borsch ist eine suppe ;)). ich will erreichen das das script alle anzahlen der zutaten zusammenrechnet wo der name der selbe ist.
alles klappt auch aber der wiederholt halt die 2. while-schleife immer und immer wieder (was auch verständlich ist)
ich hoffe du kannst mir jetzt vielleicht helfen :D
mfg michaelos
 
Öhm. Irgend wie ist dein Datenbanklayout vermurkst.

Du brauchst eine Tabelle:
Essen
eine tabelle Zutaten
Und einn Tabelle ZutatenEssen


Essen:
Code:
id,name
Zutaten:
Code:
id, name
ZutatenEssen:
Code:
id, anzahl, zutatenId, essenId
der Query würde wohl so lauten
Code:
SELECT  `essen`.`name` ,  `zutaten`.`name` ,  `zutatenessen`.`anzahl` 
FROM  `essen` ,  `zutaten` ,  `zutatenessen` 
WHERE  `zutaten`.`id`  =  `zutatenessen`.`zutatenid` 
AND  `zutatenessen`.`essenid`  =   `essen`.`id` 
AND  `essen`.`name`  =  'Frikadelle';
Weiss nicht genau ob das hin haut :D einfach mal Testen :D


Edit:
getestet und funktioniert.
Musst dann nach der Einen Abfarge nur folgendes machen.
Da der Name bei allen gleich ist brauchst du ihn nur einmal zu schreiben. Wenn eine Möglichkeit suchst nach allen zu suchen, dann lass die letzte Bedingung weg.
Hoffe der Datenbankaufbau hilft dir
 
Zuletzt bearbeitet:
hi, ertmal danke das du dir die mühe gemacht hast :D
also nur das ich das richtig verstanden hab:
in tabelle essen kommt das essen halt (in meinem fall z.b. frikadellen und borsch)
dann kommen in tabelle zutaten alle zutaten für alles essen rein?
und dann in tabelle zutatenessen kommt die anzahl an zutaten und die ids rein?
ich müsste dann immer wieder die zutatenid und essenid eintragen oda?
hoffe hab das so richtig verstanden :D
mfg michaelos
 
Ein beispiel der Einträge :D
Wir nehmen mal ein Mettbrötchen :D

Essen:
Code:
id: 1
name: Mettbrötchen

Zutaten:
Code:
id: 1
name: Brötchen

id: 2
name: Mett

id: 3
name: Zwiebel

ZutatenEssen: (Hab jetzt noch mengenangabe hinzugefügt :D)
Code:
id: 1
anzahl: 1
mengenangabe: null
essenId: 1  <-- mettbrötchen
zutatenId: 1 <-- brötchen

id: 2
anzahl: 100
mengenangabe: Gramm
essenId: 1  <-- mettbrötchen
zutatenId: 2 <-- Mett

id: 3
anzahl: 2
mengenangabe: Teelöffel
essenId: 1  <-- mettbrötchen
zutatenId: 3 <-- zwiebel
 
hi
also ich habs ausprobiert und es klappt eigentlich alles
aber wie kann ich jetzt z.b. die anzahl der zutaten von frikadellen mit denen von salat oda so zusammen rechnen?
es soll ja mal viele sachen geben aus denen man auswählen kann^^
mann kann dann z.b. wählen frikadellen und salat oder mettbrötchen und salat und die zusammen gerechneten zuatetn sollen ausgegeben werden :D
hoffe ihr versteht was ich meine^^
mfg michaelos
 
Dann gibts eine schöne FUnktion von Mysql die nennt sich SUM ;)
Machste sowas wie Select SUM(`zutatenessen`.`anzahl`) as anzahlgesamt
Und ganz am Ende müsste es ein Group by `zutaten`.`name` tun.
Habs diesmal nicht ausprobiert :D
 
hi
thx für deine mühen aber ich bin nicht soo gut in php^^
ich kenne die funktion sum garnich.... :)
ähmm könnteste mir vielleicht ein beispiel schreiben pls? :D
nochma thx^^
mfg michaelos
 
hi^^
naja gut soweit alles klar schätze ich aber was trage ich z.b. in die tabelle zahl ein?
und wenn das script alles zusammenrechnet wie mache ich das dann so das die zutaten nicht 2 mal ausgegeben werden?
wie du wahrscheinlich merkst kenne ich mich mit php nich gut aus und mit mysql noch weniger :D
hoffe du kannst mir helfen^^
mfg michaelos
 
Zurück
Oben