2016-03-23 65 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的原因是什么?这只是没有意思吗? –