tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
271
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    -jml- -jml- ist offline Grünschnabel
    Registriert seit
    Nov 2009
    Beiträge
    1
    ich stehe vor folgendem Problem:
    In meiner DB stehen 4 Tabellen welche zusammen ein "Heft" aufzeigen sollen.
    Nun, jedes Heft (gesamthaft 12 Ausgaben) hat 20seiten.
    In einer Tabelle (Ausgabe) schrieb ich alle Heft Nummern auf, in einer zweiten (Status) einen Status mit "offen/provisorisch/gebucht". Dann eine weitere Tabelle (Seiten) mit den 20 Seiten und zuguter letzt eine Tabelle mit einer Zusammenfassung (Heft). Die letzte Tabelle (Heft) schreibt jeweils die ID der einzelnen Tabellen in die Zeile wo ich diese wieder auslese mit über kreuz abfragen.

    Nun mein Problem ist folgendes. Wen ich das Heft online anschaue sollen alle Seiten, egal ob etwas schon enthalten ist oder nicht, die Seiten aufgezeigt werden.

    Dies funktioniert jedoch nur soweit dass eben die Seiten zwar abfragt jedoch der Status und Co. noch enthalten sind:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    "SELECT
    Page.IDP,
    Page.Beschreibung,
    SBH.Nr,
    SBH.Titel
    FROM
    SBH_Seiten AS Page,
    SBH2010 AS SBH
    WHERE
    SBH.Nr = " . $_GET['Nr'];

    Das momentanige Ergebniss gebe ich wie folgt aus:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    
    $res = mysql_query($Status);
    if ($res!=false && mysql_num_rows($res) > 0)
              {
            while ($row = mysql_fetch_array($res, MYSQL_ASSOC))
            {
            $ID         = $row['ID'];
            $IDStatus     = $row['IDStatus'];
            $Firma        = $row['Firma'];
            $Beschreibung = $row['Beschreibung'];
            $Format       = $row['Format'];
         
          if($IDStatus == "3")
              {
              echo '<div id="status_gebucht">
                  <a href="sbh_seite.php?ID='.$ID.'" class="gebucht">
                  <p class="Firmenname">' . $Firma . '</p>
                  <br />
                  <img src="gif/gebucht.gif" border="0">
                  <br />
                  <p class="Status">' . $Beschreibung . '</p>
                </a>
               </div>';
              }
          elseif ($IDStatus == "2")
            {
            echo '<div id="status_provisorisch">
                <a href="sbh_seite.php?ID='.$ID.'" class="provisorisch">
                  <p class="Firmenname">' . $Firma . '</p>
                  <br />
                  <img src="gif/provisorisch.gif" border="0">
                  <br />
                  <p class="Status">' . $Beschreibung . '</p>
                </a>
              </div>';
            }
          elseif ($IDStatus == "1"){
            echo '<div id="show_page">
                <a href="sbh_seite.php?ID='.$ID.'" class="offen">
                  <p class="Firmenname">' . $Firma . '</p>
                  <br />
                  <img src="gif/offen.gif" border="0">
                  <br />
                  <p class="Status">' . $Beschreibung . '</p>
                </a>
              </div>';
            }
          }
        }

    Mit der nachfolgenden Abfrage schaffe ich es jegliche Seiten auszuwählen welche einen Status enthalten.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    
    'SELECT
            SBHALL.ID,
            SBHALL.IDSeiten,
            SBHALL.IDVerlag,
            SBHALL.IDStatus,
            SBHALL.IDSBH,
            SBHALL.Bemerkung,
            SBHSeiten.IDP,
            SBHSeiten.Beschreibung,
            SBHVerlage.IDV,
            SBHVerlage.Firma,
            SBHFormat.IDF,
            SBHFormat.Format,
            SBHFormat.Preis,
            SBHFormat.Width,
            SBHFormat.Height,
            SBH2010.Nr,
            SBHStatus.IDS,
            SBHStatus.Text
          FROM
            SBH_ALL AS SBHALL,
            SBH_Seiten AS SBHSeiten,
            SBH_Verlage AS SBHVerlage,
            SBH_Format AS SBHFormat,
            SBH_Status AS SBHStatus,
            SBH2010 AS SBH2010
          WHERE
            SBHALL.IDSBH = SBH2010.Nr
          AND
            SBHSeiten.IDP = SBHALL.IDSeiten
          AND
            SBHVerlage.IDV = SBHALL.IDVerlag
          AND
            SBHFormat.IDF = SBHALL.IDFormat
          AND
            SBHStatus.IDS = SBHALL.IDStatus
          AND
            SBHALL.IDSBH  = ' . $_GET['Nr'] ;

    Ziel wäre es jedoch dass wirklich alle 20 Seiten, egal ob Inhalt vermerkt ist oder nicht, diese in eine WHILE Schleife angezeigt werden.

    Sprich zum Schluss sollte dann jeweils alle Seiten des Heftes aufzeigen - und wen z.B. auf Seite 7 etwas gebucht ist, dies entsprechend vermerken.


    Bin euch dankbar um jeden rat - ggf. ist es auch mit der Tabellenstrukturierung nicht besonders schlau gemacht - Danke für euer Inputs.
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Mach dich mal mit "LEFT JOIN" schlau. Damit kannst du 2 Tabellen zusammen ausgeben und es werden auch Rekords ausgegeben, bei der nur eine Tabelle Einträge besitzt.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

Ähnliche Themen

  1. Realisierung ein Timestamp aus mehreren Tabellen abfragen
    Von spikaner im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 29.04.08, 10:32
  2. Abfragen von mehreren Tabellen?
    Von FL08 im Forum Relationale Datenbanksysteme
    Antworten: 8
    Letzter Beitrag: 28.02.08, 15:20
  3. Antworten: 4
    Letzter Beitrag: 08.08.07, 02:04
  4. Antworten: 2
    Letzter Beitrag: 27.11.06, 21:35
  5. Ein bestimmtes Feld in mehreren Datensätze ansprechen und abfragen.
    Von messmar im Forum Relationale Datenbanksysteme
    Antworten: 5
    Letzter Beitrag: 02.12.04, 12:50