2017-11-05 1 views
0

Zuerst werden die Überschriften in h1 Tags gespeichert. Dies wird aus einer separaten Tabelle namens "menu_type" entnommen. Welche ist durch eine "Menü" -Tabelle verknüpft.Dynamisch für Tabellen mit Überschriften entsprechend anzeigen

Ich versuche, Daten auf der Basis wie folgt angezeigt:

TARIF

Tabellendaten

2. Heading

zweiten Daten

--- In einer Schleife, bis Es ist alles abgeschlossen ---

Here is a like page of what it is doing

Ich glaube, ich habe die Methoden richtig und kann sehen, was es tut, es ist das Drucken der ersten Überschrift, dann eine leere Tabelle, dann die zweite Überschrift und dann die Daten aus der ersten Tabelle.

Siehe meinen Code:

<?php 
$query = "SELECT * FROM menu_type"; 
$result = mysqli_query($connect, $query); 
$result_array = array(); 
$numRows = mysqli_num_rows($result); // returns the num of rows from the query above, allowing for dynamic returns 

while($row = mysqli_fetch_assoc($result)){ 
    $menuType = $row['type']; 
    $result_array[] = $menuType; // This array holds each of the menu_types from DB 
} 

$countArray = count($result_array); 

for($i = 0; $i < $numRows; $i++){ 


    $query = "SELECT * FROM menu WHERE type_id='$result_array[$i]'"; 
    $result = mysqli_query($connect, $query) or die(mysqli_error($connect)); 

    echo " 
     <div id='hide'> 
      <h1 id='wines' class='head-font text-center head'>$result_array[$i]</h1> 
      <table class='table table-hover table-responsive'> 
       <thead> 
        <tr> 
         <th> 
          Item 
         </th> 

         <th class='text-right'> 
          Price 
         </th> 
        </tr> 
       </thead> 
       <tbody> 
       <tr> 
    "; 


    $menuQuery = "SELECT * FROM menu, menu_type WHERE type_id='$i' AND menu.type_id = menu_type.id"; 
    $menuResult = mysqli_query($connect, $menuQuery) or die(mysqli_error($connect)); 

    while ($row = mysqli_fetch_assoc($menuResult)) { 
     $name = $row['name']; 
     $description = $row['description']; 
     $price = $row['price']; 

    echo " 
      <td>$name - <small>$description</small></td> 
      <td class='text-right'>£$price </td> 
     "; 
    } 

    echo 
    " 
     </tr> 
     </tbody> 
     </table> 
    "; 

} 

// print_r($result_array[2]); 
    ?> 

Antwort

1

Sie diese nicht mehr brauchen, es ist wie Sie die Abfrage sind zu wiederholen. Es sieht auch falsch aus.

$menuQuery = "SELECT * FROM menu, menu_type WHERE type_id='$i' AND menu.type_id = menu_type.id"; 
$menuResult = mysqli_query($connect, $menuQuery) or die(mysqli_error($connect)); 

Die Menüpunkte sind bereits in dieser Abfrage, Sie müssen nur durchlaufen;

$query = "SELECT * FROM menu WHERE type_id='$result_array[$i]'"; 
$result = mysqli_query($connect, $query) or die(mysqli_error($connect)); 

UPDATE 1: Dieser Code ist falsch, es einzufügen nicht den Wert auf dem Array. Ich habe den Code aktualisiert (nach "versuche das").

$result_array[] = $menuType; 

UPDATE 2: das $ result wiederholt in mysqli-Funktionen verwendet wird, wird der Index bewegt wird. Was ich gemacht habe, ist das ursprüngliche $ Ergebnis nach $ resultCopy kopiert. Versuchen Sie es erneut, haha ​​

Verwenden Sie die Funktion array_push ($ array, $ value_you_insert), um Elemente in ein Array einzufügen.

Versuchen Sie dies;

<?php 
$query = "SELECT * FROM menu_type"; 
$result = mysqli_query($connect, $query); 
$resultCopy = $result; 
$result_array = array(); 
$numRows = mysqli_num_rows($result); // returns the num of rows from the query above, allowing for dynamic returns 

while($row = mysqli_fetch_assoc($resultCopy)){ 
    $menuType = $row['type']; 
    array_push($result_array,$menuType); 
} 

for($i = 0; $i < $numRows; $i++){ 

    echo " 
    <div id='hide'> 
     <h1 id='wines' class='head-font text-center head'>".$result_array[$i]."</h1> 
     <table class='table table-hover table-responsive'> 
     <thead> 
     <tr> 
     <th>Item</th> 
     <th class='text-right'>Price</th> 
     </tr> 
     </thead> 
     <tbody> 
    "; 

    $query = "SELECT * FROM menu WHERE type_id='$result_array[$i]'"; 
    $result = mysqli_query($connect, $query) or die(mysqli_error($connect)); 

    while ($row = mysqli_fetch_assoc($result)) { 
     $name = $row['name']; 
     $description = $row['description']; 
     $price = $row['price']; 

     echo" 
     <tr> 
     <td>".$name." - <small>".$description."</small></td> 
     <td class='text-right'>£".$price."</td> 
     </tr> 
     "; 
    } 

    echo 
    " 
     </tbody> 
     </table> 
    "; 
} 

?> 
+0

Danke dafür, aber es druckt immer noch falsch aus. Sieh dir diesen Link an - http://adonnelly759.students.cs.qub.ac.uk/thatch/sample.php - er zeigt die Starters-Elemente in den Hauptgerichten an? Irgendwelche Ideen? –

+1

@AidanDonnelly Hallo, ich habe die Antwort aktualisiert. Lassen Sie mich wissen, wenn Sie Ihren Code auf Ihrer Website aktualisiert haben. –

+0

Ich habe den Code aktualisiert und er wird immer noch nicht so angezeigt, wie er sollte. Ich habe daran gearbeitet für 2 Tage und kann immer noch nicht sehen und in Sichtweite –

Verwandte Themen