2015-11-01 35 views
0

我在我的数据库中有两个表,我在两个不同的php页面中显示它们。连接两个表 - 逐行关联

如何从显示第二个表的页面中逐行显示第一个表的内容。

我想要的是:第二个表的每一行都有一个按钮,onclick会显示(抛出模式弹出)第一个表中的信息。

所以ROW1-表2的按键会告诉我只ROW1-表1的信息等等....

我能够实现每一行的按钮,并在弹出的,但我只能显示整个第一个表的信息,而不显示关联的单个行的信息。

enter image description here -------------代码更新

<div class="container"> 
      <div class="row text-center"> 
      <div class="col-md-12 col-sm- hero-feature"> 
       <div class="thumbnail"> 
      <?php 
    include("../includes/connection.php"); 
    if ($link->connect_errno > 0) { 
     die('Unable to connect to database [' . $link->connect_error . ']'); 
    } 
if (isset($_POST['update'])) { 
$results = $link>query("UPDATE job SET status='$_POST[status]', priority='$_POST[priority]' WHERE id='$_POST[hidden]'"); 
$results = $link>query("UPDATE **table2** SET status='$_POST[status]' WHERE id='$_POST[hidden]'");} 

    $sql = "SELECT * from job"; 
    if (!$result = $link->query($sql)) { 
     die('There was an error running the query [' . $link->error . ']'); 
    } 
    echo "…………./* Get field information for all columns */………… " 

    while ($row = $result->fetch_assoc()) { 
    echo "<form action='' method=post>"; 

    echo "<tr class='info'> 
    <input type=hidden name=hidden value=" . $row['id'] . "> 
    <td>" . $row['id'] . "</td> 
    <td>" . $row['device'] . "</td> 
    <td>" . $row['model'] . "</td> 
    <td>" . $row['problem'] . "</td> 

    <td><select class='form-control col-sm-10' id='status' name='status'> 
    <option value=" . $row['status'] . " >" . $row['status'] . "</option> 
         <option value='new'>New</option> 
         <option value='progress'>Progress</option> 
         <option value='wait'>Wait</option> 
         <option value='done'>Done</option> 
         <option value='close'>Close</option> 
    </select></td> 
    <td><select class='form-control col-sm-10' id='priority' name='priority'> 
    <option value=" . $row['priority'] . " >" . $row['priority'] . "</option> 
          <option value='high'>High</option> 
          <option value='medium'>Medium</option> 
          <option value='low'>Low</option> 
    </select></td> 

    <td>" . $row['status'] . "</td> 
    <td>" . $row['priority'] . "</td> 

    **<td> <button type='submit' class='btn btn-primary btn-sm' name='update'>Update</button></td>** 

    **<td> <a class='btn btn-primary btn-sm' data-toggle='modal' datatarget='#myModal'>Info</a></td>** 
    </tr>"; echo "</form>";}echo " </tbody> 

    </table>"; 

    ?> 
    <div class="container"> 
     !-- Trigger the modal with a button --> 
    <!-- Modal --> 
    <div class="modal fade" id="myModal" role="dialog"> 
    <div class="modal-dialog modal-lg"> 
    <!-- Modal content--> 
    <div class="modal-content"> 
    <div class="modal-header"> 
    <button type="button" class="close" data-dismiss="modal">&times;</button> 
    <h4 class="modal-title">Customer Information</h4> 

    </div> <div class="modal-body"> 
    <?php 
    include("../includes/connection.php"); 

    if ($link->connect_errno > 0) { 
     die('Unable to connect to database [' . $link->connect_error . ']'); 
    } 
    $sql = "SELECT * from **table2**"; 
    if (!$result = $link->query($sql)) { 
     die('There was an error running the query [' . $link->error . ']'); 
    } 
    echo " 
    <table class='table'> 
     <thead><tr>"; 
    /* Get field information for all columns */ 
    while ($finfo = $result->fetch_field()) { 
    echo "<th>" . $finfo->name . "</th>";}echo " 
    </tr></thead><tbody>"; 
    while ($row = $result->fetch_assoc()) { 
     echo "<tr class='info'> 
     <td>" . $row['id'] . "</td> 
        <td>" . $row['name'] . "</td> 
        <td>" . $row['mail'] . "</td> 
        <td>" . $row['number'] . "</td> 
        <td>" . $row['price'] . "</td> 
        <td>" . $row['paymenttype'] . "</td> 
        <td>" . $row['faktura'] . "</td> 
        <td>" . $row['date'] . "</td> 
     </tr>";}echo " 
     </tbody> 
     </table>"; 

    ?> </div> 
    <div class="modal-footer"> 
    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
    </div></div></div></div></div></div></div> 
    <!-- Button trigger modal --> 
+1

2个问题。 1)table2的代码看起来像你所指的table1,因为它具有faktura字段,你可以发布其他表的代码,特别是你如何做按钮? 2)你已经发布的代码是单独的文件到第一个表的代码还是它们在同一个文件中? –

+0

我更新了我的代码。在同一页面中,我收集了table2和一个div(模式弹出窗口)的php代码,其中php代码收集table2的按钮“Info”的table1 onclick。 – gigi

回答

1

从你想要什么,我理解表之间的一个一对一/一对多关系(如视你打算重用客户数据)。

在表2中有一个新字段,其中将包含来自表1的ID,这是您的foreign key

什么是外键?

外键在两个表之间建立关系或约束。

现在我不确定如何在单击“信息”时调出数据,但如果在单击时运行单独的查询,那么您只需传递存储在WHERE子句的table2中的table1 ID这样

SELECT * FROM table1 
WHERE custId = ? 

然而,当?为你生成PHP您查询(使用paramatized查询或产生AA串用PHP变量)。

如果你需要从在同一时间,表2表1加载数据,那么你会使用一个INNER JOIN

SELECT * FROM table2 AS t2 
    INNER JOIN table1 AS t1 
     ON t2.custID = t1.custID 

这样的每一行表2中它会从表1的行。这一点,如果table1中的ID是独特只会工作,否则你可以得到

注意:好的做法是不使用SELECT *,这在调试时是好的,但在正确的代码,你希望每次当你联接柜面如果2特别命名的字段表具有相同的字段

+0

更确切地说:我有一个pageinsert.php,它同时填充table1和table2。而且....我有一个page.php显示table2。table2有一个带INFO按钮的列,它打开一个模式弹出窗口。在模态弹出窗口中,我写了一个查询,显示table1。所以,现在所有的信息按钮,我得到整个table1 diplayed。但是我想要的是将table1的每一行连接到tabe2的行。例如:table2的[2]行的按钮信息将只显示table1的行[2],依此类推...... – gigi

+0

@gigi您仍然可以在table2中有一个字段(外键)来存储表1中匹配行的id为[没有一致的默认行顺序](http://dba.stackexchange.com/a/6053/28187)。如果你看看这个[sqlfiddle](http://sqlfiddle.com/#!9/63442/4),你将如何过滤table1的结果与你选择的任何东西。 –

+0

谢谢。我正在阅读有关它。我使用phpmyadmin ....我进入table2并创建了一个新列,并为其分配了一个UNIQUE属性。然后我进入STRUCTURE和RELATION VIEW,有两个选择......外键约束和内部关系.....要选择什么?我在错误的地方?感谢您的提示....我对它... – gigi