2017-02-14 2 views
1

Я немного новичок в SQL и PHP, как мне отобразить вывод с тремя разными таблицами? Я могу отображать его только в одной таблице, но я не знаю, как их группировать в 3 разных таблицы? Вот результат:Не удается отобразить другую таблицу

enter image description here

<?php 

include "Connection.php"; 

$sql = "SELECT artist.artistName, artistcd.artistID, artistcd.cdID, artistcd.cdTitle, artistcd.cdGenre, artistcd.cdPrice FROM artist, artistcd WHERE artist.artistID = artistcd.artistID ORDER BY artistcd.artistID" ; 


$query = mysqli_query($connect, $sql) or die("Error: ".mysqli_error($connect));; 


?> 
<table width="70%" cellpadding="5" cellspace="5"> 

<tr> 
    <th>Genre</th> 
    <th>CD Identification</th> 
    <th>Title</th> 
    <th>Price</th> 
    </tr> 

<?php 

    $name = mysqli_fetch_assoc($query); 
    echo $name["artistID"] . $name["artistName"]; 

    while ($row = mysqli_fetch_assoc($query)) { 
     echo "<tr>"; 
     echo "<td>" . $row['cdGenre']. "</td>"; 
     echo "<td>" . $row['cdID']. "</td>"; 
     echo "<td>" . $row['cdTitle']. "</td>"; 
     echo "<td>" . $row['cdPrice']. "</td>"; 
     echo "</tr>"; 
} 
?> 

<table width="70%" cellpadding="5" cellspace="5"> 

</table> 
+0

взять пустой массив, а затем применить в то время как раз и присвоить все значения в массив, а затем использовать этот переменный массив в три различные таблицы –

+0

В чем разница между тремя таблицами? Есть ли группа, которую вам нужно делать? Вам, вероятно, понадобится сделать 3 отдельных запроса. Или определите логику разделения результатов на 3 внутри цикла for. –

+0

@ LeonelAtencio да 3 таблицы показывают 3 разных имени исполнителя и имеют 3 разных песни –

ответ

0

Хорошо, проще всего было бы для вас, чтобы повторить, что кодовый блок 3 раза. Каждый раз, с другим художником ID передается в запрос:

<?php 
include "Connection.php"; 
$sql = "SELECT artist.artistName, artistcd.artistID, artistcd.cdID, artistcd.cdTitle, artistcd.cdGenre, artistcd.cdPrice 
     FROM artist, artistcd 
     WHERE artist.artistID = "$ArtistID1"; 

$query = mysqli_query($connect, $sql) or die("Error: ".mysqli_error($connect));; 
$name = mysqli_fetch_assoc($query); 
    echo "<p>" . $name["artistID"] . $name["artistName"] . "</p>"; 
?> 

<table width="70%" cellpadding="5" cellspace="5"> 
<tr> 
    <th>Genre</th> 
    <th>CD Identification</th> 
    <th>Title</th> 
    <th>Price</th> 
    </tr> 

    <?php 
     while ($row = mysqli_fetch_assoc($query)) { 
      echo "<tr>"; 
      echo "<td>" . $row['cdGenre']. "</td>"; 
      echo "<td>" . $row['cdID']. "</td>"; 
      echo "<td>" . $row['cdTitle']. "</td>"; 
      echo "<td>" . $row['cdPrice']. "</td>"; 
      echo "</tr>"; 
    } 
    ?> 

<table width="70%" cellpadding="5" cellspace="5"> 
</table> 


<?php 
$sql = "SELECT artist.artistName, artistcd.artistID, artistcd.cdID, artistcd.cdTitle, artistcd.cdGenre, artistcd.cdPrice 
     FROM artist, artistcd 
     WHERE artist.artistID = "$ArtistID2"; 

$query = mysqli_query($connect, $sql) or die("Error: ".mysqli_error($connect));; 
$name = mysqli_fetch_assoc($query); 
    echo "<p>" . $name["artistID"] . $name["artistName"] . "</p>"; 
?> 

<table width="70%" cellpadding="5" cellspace="5"> 
<tr> 
    <th>Genre</th> 
    <th>CD Identification</th> 
    <th>Title</th> 
    <th>Price</th> 
    </tr> 

    <?php 
     while ($row = mysqli_fetch_assoc($query)) { 
      echo "<tr>"; 
      echo "<td>" . $row['cdGenre']. "</td>"; 
      echo "<td>" . $row['cdID']. "</td>"; 
      echo "<td>" . $row['cdTitle']. "</td>"; 
      echo "<td>" . $row['cdPrice']. "</td>"; 
      echo "</tr>"; 
    } 
    ?> 

<table width="70%" cellpadding="5" cellspace="5"> 
</table> 


<?php 
$sql = "SELECT artist.artistName, artistcd.artistID, artistcd.cdID, artistcd.cdTitle, artistcd.cdGenre, artistcd.cdPrice 
     FROM artist, artistcd 
     WHERE artist.artistID = "$ArtistID3"; 

$query = mysqli_query($connect, $sql) or die("Error: ".mysqli_error($connect));; 
$name = mysqli_fetch_assoc($query); 
    echo "<p>" . $name["artistID"] . $name["artistName"] . "</p>"; 
?> 

<table width="70%" cellpadding="5" cellspace="5"> 
<tr> 
    <th>Genre</th> 
    <th>CD Identification</th> 
    <th>Title</th> 
    <th>Price</th> 
    </tr> 

    <?php 
     while ($row = mysqli_fetch_assoc($query)) { 
      echo "<tr>"; 
      echo "<td>" . $row['cdGenre']. "</td>"; 
      echo "<td>" . $row['cdID']. "</td>"; 
      echo "<td>" . $row['cdTitle']. "</td>"; 
      echo "<td>" . $row['cdPrice']. "</td>"; 
      echo "</tr>"; 
    } 
    ?> 

<table width="70%" cellpadding="5" cellspace="5"> 
</table> 

Другим способом будет запрашивать один раз для всех художников, и построить 3 таблицы с помощью фильтрации художников прямо из ассоциативного массива. Но, как вы говорите, вы только начинаете, я думаю, что это решение сделает это.

+0

Ошибка синтаксиса: неожиданный '$ ArtistID1' (T_VARIABLE) в C: \ xampp \ htdocs \ Exer42 \ Новая папка \ display_music.php в строке 15 –

+0

Вам нужно заменить $ ArtistID1, $ ArtistID2 и $ ArtistID3 с фактическим идентификатором исполнителя! ... –

0

Что вы можете сделать, если идентификатор человека находится на всех трех таблицах.

Вы можете использовать JOIN

See This For More Info

SELECT mytable1.id, mytable2.order, mytable3.price FROM mytable1 WHERE mytable1.id=7 JOIN mytable2 ON mytable1.id=mytable2.id JOIN mytable3 ON mytable1.id= mytable3.id