2016-03-23 88 views
0
<?php 

DEFINE ('DB_USER', 'username'); 
DEFINE ('DB_PASSWORD', 'password'); 
DEFINE ('DB_HOST', 'xxxxxxxxxxxxxxxx'); 
DEFINE ('DB_NAME', 'bigbobsveterinarysurgery'); 


$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) OR die ('Could not connect, check the details ' . mysqli_connect_error()); 
mysqli_set_charset($dbc, 'utf8'); 
$q = "SELECT dog_name, owner_name, vet_date, Breed, cost, address, contact_number FROM owner, dogs ORDER BY dog_name ASC";  
$r = @mysqli_query ($dbc, $q); 


    echo '<table> 
    <tr> 
    <th scope="col">Dog</th> 
    <th scope="col">Owner</th> 
    <th scope="col">Entry Date</th> 
    <th scope="col">Breed</th> 
    <th scope="col">Cost</th> 
    <th scope="col">Address</th> 
    <th scope="col">Contact Number</th> 
    </tr>' 
    ; 


    while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { 
     echo '<tr><td>' . $row['Dog_name'] . '</td><td>' . $row['owner_name'] . '</td><td>' . $row['vet_Date'] . 
     '</td></tr>' . $row['Breed'] . '</td></tr> ' . $row['cost'] . '</td></tr> '. $row['address'] . '</td></tr> ' . $row['contact_number'] . '</td></tr> '; 
    } 

echo '</table>'; 
?> 

它將所有數據的品種,成本和聯繫號碼顯示在一個大塊中。我想要的表格的格式可以在下面找到,但是每條狗都列在每個其他所有者列表中,而其他所有列都是空白的。發佈日期心不是顯示的,但我認爲是有問題的,當我從一個Excel工作表導入數據和日期是錯誤的格式查詢多個表格,顯示錯誤

編輯

我把它更新爲:

while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { 
     echo '<tr><td>' . $row['Dog_name'] . '</td><td>' . $row['owner_name'] . '</td><td>' . $row['vet_Date'] . 
    '</td><td>' . $row['Breed'] . '</td><td> ' . $row['cost'] . '</td><td> '. $row['address'] . '</td><td> ' . $row['contact_number'] . '</td></tr> '; 
} 

這已經停止了開始時的整個混亂,所有數據現在都格式化在一張表中。然而,每隻狗仍然與每個單獨的主人匹配。這是在這篇文章或數據庫中的代碼中的問題?

+2

轉' ' '''到'​​''除了最後一個 – cmorrissey

+0

回聲' ​​'。 $ row ['Dog_name']。 '​​'。 $ row ['owner_name']。'​​'。 $ row ['vet_Date']。 ''。 $ row ['Breed']。 ''。 $ row ['cost']。 ''。 $ row ['address']。 ''。 $ row ['contact_number']。 ''; 我已經更新到它。但沒有更改 –

+0

不會更新給我,也可以通過編輯將您的更新發布在原始文章中。 – cmorrissey

回答

0

我認爲你需要連接兩個表

$q = "SELECT dog_name, owner_name, vet_date, Breed, cost, address, contact_number 
     FROM owner o 
     LEFT JOIN dogs d ON o.id = d.owner_id 
     ORDER BY d.dog_name ASC";  
// make sure you join on valid columns. 
// also, if there is a column that appears in both tables, 
// to avoid ambiguity, prefix it with the corresponding table alias 
$r = @mysqli_query ($dbc, $q); 

echo "<table> 
    <tr> 
    // skipping this so it doesn't eat up too much space 
    </tr>"; 

// also, every `$row[something]` should be placed inside a `<td></td>`, like so: 
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { 
    echo '<tr> 
      <td>' . $row['Dog_name'] . '</td> 
      <td>' . $row['owner_name'] . '</td> 
      <td>' . $row['vet_Date'] . '</td> 
      <td>' . $row['Breed'] . '</td> 
      <td>' . $row['cost'] . '</td> 
      <td>' . $row['address'] . '</td> 
      <td>' . $row['contact_number'] . '</td> 
     </tr> '; 
} 

兩個表中的選擇使他們之間的笛卡爾乘積。
使用join,您只能得到相應的行(根據ON子句)。

在你的特殊情況下,使用join將保持狗主的關係,而使用FROM owner, dogs,你會得到每個所有者的所有狗,這可能不是你所追求的。

+0

非常感謝您的回覆!我要實現多個下拉菜單,並且我將使用您發佈的一些內容。不過,我認爲擁有一個可以讓我們查看他們所有狗的所有者下拉菜單會很有用。所以使用從東西。這與使用連接有何不同? –

+0

將此作爲介紹:https://en.wikipedia.org/wiki/Join_(SQL)。它解釋了「a join b'和'from a,b' –

+0

之間的區別,現在我正在查看它,並在我面前有一本sql書。在你的文章中,創建d和o別名時不使用AS的原因是什麼?這只是沒有意思嗎? –