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

Tabellen verknüpfen / Daten automatisch eintragen

Du brauchst nur EINE Abfrage und EINE Schleife, nur die mit dem JOIN. In den Daten ist alles was du brauchst.

P.S.: Es gibt übrigens keine if-schleifen.

Aha... na habe ich immer gelesen gehabt das mit der If-Schleife ... pardon.. if-Abfrage... ich werde mich bessern.

So zum Thema.. super ich bin nun etwas weiter.
Jedoch bekomme ich mit dem folgenden Code immer nur die erste Story der Storys zur Serie.
Und es gibt ja mehr als eine. Mal 4 mal sogar 20 oder mehr.

Wie bekomme ich das hin das alle Storys zur jeweiligen Serie in der Tabellenzeile aufgeführt werden.

P.S: Ich habe zur besseren Übersicht auch mal die Einrückung (die mir immer hilft) überarbeitet.

PHP:
<?php
$ergebnis = mysql_query("SELECT * FROM Storyserien s LEFT JOIN Story st USING(SerienID) ORDER BY Serie_Erstellt_von ASC") OR die("Error: $abfrage <br>".mysql_error());
echo '<table class="fantasie-uebersicht">';

$old_id;
echo $old_id;
while($row = mysql_fetch_object($ergebnis))
{    // Lese Daten

         if ($row->Serie_Veroeffentlicht == "1") // Veroeffentlicht ja/ ohne Wert = (überspringen)
         {

                  if ($old_id != $row->SerienID)
                  { // Ausgabe des Serienheader




                             //             for ($i = 1; $i <= 2; $i++) :  ;   // modulus fr IE


                                               $class = '';     // Definiton class für Zeilenwechsel IE
                                               if ($i == 0) {
                                                   $class = 'fantasie-zeile1';
                                               } else if ($i % 2 === 0) {
                                                   $class = 'fantasie-ungerade';
                                               } else {
                                                   $class = 'fantasie-gerade';
                                               };      //     endfor;


                       echo  '<tr class="'.$class.'">';
                       echo  '<td class="fantasie-uebersicht">';


                       if ($row->Serie_NEU == "")    // FSK18 ja/ ohen Wert = (ohne Bild)
                       {
                       echo '<p class="glowtext-story_new">',
                            $row->Serienname, '</p>';
                       }
                       else
                       {
                       echo '<p class="glowtext-story">',
                            $row->Serienname, '</p>';
                       }


                       if ($row->Serie_FSK18 == "Einige")    // FSK18 ja/ ohen Wert = (ohne Bild)
                       {
                       echo 'Serie zum Teil <img src="'.$LINK.'Images/fsk18_logo.gif" alt="Die Serie ist aktuell ', $row->FSK18, ' als FSK18 eingestufft" border="1" width="58" height="17"><br />';
                       }
                       elseif ($row->Serie_FSK18 == "Alle")    // FSK18 ja/ ohen Wert = (ohne Bild)
                       {
                       echo 'Serie 100% <img src="'.$LINK.'Images/fsk18_logo.gif" alt="Die Serie ist aktuell ', $row->FSK18, ' als FSK18 eingestufft" border="1" width="58" height="17"><br />';
                       }
                       else
                       {
                       echo '</p><br />';
                       }


                       if ($row->Serie_Erstellt_bis != "0000")
                       {
                       echo '<span class="copyright">©',  $row->Serie_Erstellt_von, ' - ' ,$row->Serie_Erstellt_bis, '</span><br /><br />';
                       }
                       else
                       {
                       echo '<span class="copyright">©',  $row->Serie_Erstellt_von, '</span><br /><br />';
                       }

                       echo '<span class="untertitel">', $row->Serie_Beschreibung; '</span>';
                       echo '<h4>Storys dieser Serie:</h4><p class="serienliste">';
                       // Ende Serienheader

                                  echo '=> ' ,$row->Storyname, '&nbsp;&nbsp;'; // Ausgabe der Serienliste
                                  $old_id = $row->SerienID;

                      echo '</p>';


                 };    // ende if (veroeffentlicht)


                 echo '</td></tr>';

                                                 $i++;       //  IE Modulus hochzählen

         }; // Ende IF-Abfrage für Veröffentlicht

};          // while Ende Tabellenzeile inkl Serienheader und Storys zur Serie


echo '</table>';

?>
 
Werbung:
Da ich mit dem oben gezeigten Code nur die erste Story der Serie bekommen habe und dann zur nächsten SerienID gewechselt wurde, habe ich mir gedacht da muss wahrscheinlich doch eine Schleife rein. Ich habe nun die Idee eine einfache while-schleife zu verwenden
Als meine ersten Versuche nichts gebracht haben, fiel mir mein altes Feld SerienEnde ein (Blob Feld) 1 markiert die letzte Story der Serie.
Da ich keine Möglichkeit gefunden habe damit zu arbeiten denke ich mir folgendes.

Ich verschiebe dies Feld in Tabelle Serie (so wie von snuppi empfohlen) dann mache ich daraus ein Zahltyp in den der Wert des Feldes SerieNr eingetragen wird das die letzte Story der Serie hat.

Nun ist aber die Frage kann ich $i mit $row->SerienEnde vergleichen? und solange $i hochzählen bis diese "gleich" ist?

Ein anderer Gedanke war SerienNr mit SerienEnde zu vergleichen.
Doch ich darf SerieNr ja nicht selber hochzählen sonst verfälsche ich die Daten aus der tabelle.

Mir ist also nicht klar wie ich 3 Facktoren in eine Abfrage mit 2 Faktoren bringe.

Ich habe nach meiner Idee folgende felder zur verfügung
SerienEnde (typ Zahl in Serie - Gibt an welcher SerienNr den höchsten Wert enhält
SerieNr (typ Zahl - Gibt an welche laufende Nr in der Serie die Story(name) hat.

Es soll aber der Storyname ausgegeben werden nicht die SerieNr


und so habe ich dies geschrieben.

Code:
                       $i = 1;
                       while ($i <= $row->SerienEnde)
                       {
                                  echo '=> ' ,$row->Storyname, '&nbsp;&nbsp;'; // Ausgabe der Serienliste
                       $i++;
                       }
 
Nein, du verstehst es immer noch nicht ganz. Mit der Join Abfrage bekommst ALLE Storyserien und jeder Datensatz enthält die Daten aus der Tabelle Story. Damit du deinen Abschnitt Story hast musst du den Trick mit der $old_id machen. Das ist lediglich ein marker, der dem Skript zeigt jetzt begintt eine neue Story. Das heißt eine Schleife für beide Funktionen und das musst du mit einer if Abfrage regeln.

EDIT: Also das, das du eine unterschiedliche Ausgabe machen willst.
 
Werbung:
Also in dem PHP-Code habe ich das so umgesetzt wie ich Deinen Code mit $old_id verstanden habe.

Nun bekam ich aber immer nur eine Story pro Serie

Ich suche aber

Serie 1
Story 1
Story 2
Story 3
Story 4

Serie 2

Story 1
Story 2
Story 3
Story 4
Story 5

Serie 3

Story 1
Story 2

geht das mit dem Marker auch?
 
Das hier ist übrigens der 66. Post in diesem Thread, und ich habe nicht das Gefühl, dass wir (oder vielleicht mehr ihr) großartig viel weiter als beim ersten sind (seid).

Ich behaupte mal, in der Zeit, die wir kollektiv damit verbracht haben, hätten wir ein komplettes PHP/MySQL-Buch lesen können.

Das wäre vielleicht mal eine ganz gute Idee, Industriemeister.

Du hast allein in diesem Thread über einen Zeitraum von grob 10 Tagen ca. 42.000 Anschläge gepostet (eigene Texte und Code-Beispiele, keine Fremdzitate). Das sind laut diesem Tool[1] mehr als 36 Normseiten (30 Zeilen à maximal 60 Zeichen).

Das ist so lang (Anzahl Zeichen) wie die deutschen Wikipedia-Artikel zu PHP und MySQL zusammen. Es ist außerdem fünfmal so lang wie meine Herleitung der Objektorientierung kürzlich.[2]

Wenn ich das richtig erinnere, reden wir hier von einer Datenbank mit derzeit etwa 50 Einträgen.

[Rhetorische Pause.]

Dieser Thread ist außerdem lange nicht der erste Thread von dir zu dem Thema. (Kein Vorwurf, eine Tatsache.)

Ich möchte den Einsatz aller Beteiligten wirklich nicht schmälern, aber ich würde dringend empfehlen, eine effizientere Vorgehensweise zu wählen.

Das heißt: Technologien zielgerichtet lernen oder jemanden beauftragen.

Ein Script, das Daten wie in #64 ausgibt, ist bei einem auch nur halbwegs brauchbaren Datenbankschema eine Sache von keiner Stunde, wahrscheinlich nicht einmal von einer halben. Der Preis von einem guten Buch ist ebenfalls nicht extrem im Vergleich zu dem Zeitaufwand hier im Forum.

Wenn es Hobby ist, kauf ein Buch. Aktuelle Standardsachen wie „PHP 5.3 + MySQL 5.1: Der Einstieg in die Programmierung dynamischer Websites“[3] gibt es gebraucht für unter 20 € inklusive Porto bei Amazon. Ich kenne es nicht, aber damit kannst du sicherlich schwer etwas verkehrt machen.

Wenn es um „mehr“ als ein Hobby-Projekt geht oder wenn es fertig werden soll, solltest du abwägen, ob du dich noch weitere Wochen und Monate durch das Forum „quälen“ ;) willst oder ob es nicht vielleicht effizienter wäre, ein paar hundert Euro oder so lockerzumachen für externe Hilfe. (Disclaimer: Ich bin nebenberuflich in dem Feld tätig.) Ich habe hier einfach das Gefühl, die Sache stagniert viel zu sehr.

(Edit: Dieser Beitrag ist rein konstruktiv gemeint.)



[1] || Charcount | Online-Tool für Webdesigner und Übersetzer zum Zählen von Zeichen, Wörtern, Zeilen, Normzeilen und Normseiten ||

[2] http://www.html.de/php/41887-sql-abfragen-vereinfachen-2.html#post302507

[3] PHP 5.3 + MySQL 5.1: Der Einstieg in die Programmierung dynamischer Websites: Amazon.de: Florence Maurice: Bücher
 
Zuletzt bearbeitet:
Werbung:
Entschuldigung

Wenn es Hobby ist, kauf ein Buch. Aktuelle Standardsachen wie „PHP 5.3 + MySQL 5.1: Der Einstieg in die Programmierung dynamischer Websites“[3] gibt es gebraucht für unter 20 € inklusive Porto bei Amazon. Ich kenne es nicht, aber damit kannst du sicherlich schwer etwas verkehrt machen.

Wenn es um „mehr“ als ein Hobby-Projekt geht oder wenn es fertig werden soll, solltest du abwägen, ob du dich noch weitere Wochen und Monate durch das Forum „quälen“ ;) willst oder ob es nicht vielleicht effizienter wäre, ein paar hundert Euro oder so lockerzumachen für externe Hilfe. (Disclaimer: Ich bin nebenberuflich in dem Feld tätig.) Ich habe hier einfach das Gefühl, die Sache stagniert viel zu sehr.

(Edit: Dieser Beitrag ist rein konstruktiv gemeint.)
Es ist ein Hobby und genau das Buch habe ich. Leider ist es bei MySql nicht so ausführlich.

Leider hast Du wohl recht... ich habe den Code so aufgebaut wie ich ihn von Snuppi verstanden habe. Und dennoch wird jetzt mit dem Marker nur die erste Story jeder Serie auf gelistet.
Aber ich hatte vergange Nacht noch eine Idee wie ich das mit der angesprochen If-Abfrage für die Storydatensätze machen könnte. Dann gebe ich wohl auf.

Also vielen Dank für die Hilfe die einige Probleme gerade mit der Serie behoben hat.
 
Ich sehe den Fehler darin, etwas nachzubauen, ohne selber verstanden zu haben, WARUM etwas so ist.
Wird Mysql in deinem Buch nicht erschöpfend behandeltm, rate ich zu einem weiteren Buch oder einfach mal auf Schattenbaum o.ä. vorbeisehen, da gibt es Beispiele genug.

Beim Programmieren ist es immer sinnvoll, sich ein Struktogramm (oder Ähnliches) zu machen, das in einfachster Weise aufzeigt, was man erreichen möchte. Da es nach eigener Aussage ein Hobby ist, muss es auch nicht perfekt sein. Der Sinn eines Hobbies ist es doch, Zeit für etwas aufzuwenden, dass einen interessiert. Da ich Hobby immer als etwas langfristiges gesehen habe, könnte in deinem Fall doch auch ein Kursbesuch eine gute Investition sein, dort hast du einen Vortragenden, den du "quietschen" kannst, bis er nicht mehr kann....

Beim lesen des Themas ist mir persönlich nichts mehr eingefallen, was ich dir noch sagen könnte um dir das Thema etwas näher zu bringen.
 
Danke

Das mit dem Buch ist sicher eine gute Idee die ich nach meiner Aussage auch schon hatte.
Zum Code... das Problem ist gelöst.
Ich habe mir den Code noch mal angesehen.
Ein falsch gesetztes Zeichen --- eine Schleife --- gefunden. Und irgendwann habe ich einfach etwas Glück.
Und als ich mir dann die Logik / den Ablauf angesehen habe... verstand ich auch was dort passiert.

Ich bin immer von einer ganz anderen Abarbeitung ausgegangen. Ich weis allerdings nicht in Worte zufassen was wie ich das fehlerhafte verstanden hatte.
 
Werbung:
Zurück
Oben