Anzeigen aller Datensätze aus zwei Tabellen

eatpixel

Grünschnabel
Hallo. Ich möchte ein dynamisches Menu erstellen. Die Rubriken zeigt es mir auch richtig an, nur schaffe ich es nicht, dass die Namen der Unterrubriken
PHP:
 $row_auswahl['name']
vollständig angezeigt werden. Es erscheint immer nur die erste Unterrubrik. Aber keine weitere.

Hier mein Code der Connection und Auswahl:

PHP:
mysql_select_db($database_localhost, $localhost);
$query_rubriken = "SELECT * FROM rubriken";
$query_auswahl = "SELECT * FROM auswahl";
$rubriken = mysql_query($query_rubriken, $localhost) or die(mysql_error());
$auswahl = mysql_query($query_auswahl, $localhost) or die(mysql_error());
$row_rubriken = mysql_fetch_array($rubriken);
$totalRows_rubriken = mysql_num_rows($rubriken);
$row_auswahl = mysql_fetch_array($auswahl);
$totalRows_auswahl = mysql_num_rows($auswahl);

So sieht das Menu aus.

PHP:
<div id="container">
  <div class="Auswahl" id="mainMenu">
      <?php if ($totalRows_rubriken == 0) { ?>
   	  <div class="TextRot">ACHTUNG! Keine Menu Eintr&auml;ge gefunden!</div>
      <?php } ?>       
 	  <?php if ($totalRows_rubriken > 0) { ?>  
           
<ul id="MenuBar1" class="MenuBarHorizontal">  
    <?php do { ?>
      <li><a class="MenuBarItemSubmenu" href="#"><?php echo $row_rubriken['name']; ?></a>
                   
    <?php if ($row_rubriken['rubrik_id']==$row_auswahl['rub_id']){ ?>
    <ul>
      <li><a href="#"><?php echo $row_auswahl['name']; ?></a>
        </ul>
    <?php } ?></li>
    <?php } while ($row_rubriken = mysql_fetch_array($rubriken)); ?>
        
  </li>
</ul>
<?php } ?>
  </div>

Ich denke mir ich mache was falsch mit der "do" Schleife. Aber auch nach Tages des probierens komme ich nicht weiter. Danke für die Hilfe.
 
So vielleicht?
PHP:
<?php
mysql_select_db($database_localhost, $localhost);
$query_rubriken = "SELECT * FROM rubriken";
$rubriken = mysql_query($query_rubriken, $localhost) or die(mysql_error());
$totalRows_rubriken = mysql_num_rows($rubriken);
?>
<div id="container">
 <div class="Auswahl" id="mainMenu">
      <?php if ($totalRows_rubriken == 0) { ?>
         <div class="TextRot">ACHTUNG! Keine Menu Eintr&auml;ge gefunden!</div>
      <?php } ?>       
      <?php if ($totalRows_rubriken > 0) { ?>  
           
      <ul id="MenuBar1" class="MenuBarHorizontal">  
          <?php do { ?>
            <li><a class="MenuBarItemSubmenu" href="#"><?php echo $row_rubriken['name']; ?></a>
                         
          <?php 
            $auswahl = mysql_query("SELECT * FROM `auswahl` WHERE `rub_id` = " . $row_rubriken['rubrik_id'], $localhost) or die(mysql_error());;
            if(mysql_num_rows($auswahl) > 0)
            {
              while($row_auswahl = mysql_fetch_array($auswahl)){ ?>
            <ul>
              <li><a href="#"><?php echo $row_auswahl['name']; ?></a>
            </ul>
          <?php } // while
            }// if ?></li>
          <?php } while ($row_rubriken = mysql_fetch_array($rubriken)); ?>
              
        </li>
      </ul>
<?php } ?>
  </div>
 
ihr macht es euch viel zu komplex:
Code:
SELECT * FROM tabelle LEFT JOIN tabelle2 ON (tabelle.id = tabelle2.id)
Sorry, aber das ist leider "falsch". Denn so wirst du nur pro Datensatz aus tabelle einen Datensatz aus tabelle2 bekommen und das würde nicht das gewünschte Ergebnis bringen.
@eatpixel: Schön, dass es klappt :)
 
PlötZinn, man kriegt die zeile aus tabelle plus alle entsprechenden Datensätze aus tabelle2. Dementsprechend wird man auch mindestens 2 mal eine spalte mit dem namen "id" als Ergebnis bekommen, das ist auch der Grund für die absolute Nennung beim ON - Befehl.

Ned vermuten, sondern WISSEN / selbst testen. Der Syntax von MySQL kann mitunter recht komplex sein, nicht immer ist ersichtlich was rauskommen wird. Wenn es so wäre wie du gesagt hast, dann wäre der JOIN-Befehl von MySQL total überflüssig.
 
Zuletzt bearbeitet:
Zurück