在php / sql

时间:2015-04-23 18:11:27

标签: php sql join

我有两张桌子

  • 工作单
  • 客户

我正在使用customers表创建工作程序。我想要一个从工作单表中搜索customers表的页面,并显示相应的工作订单。

例如,搜索工作订单的name字段(这是一个链接到客户的数字),并显示搜索结果。

<?php
include 'database.php';
$pdo = Database::connect();

$q = filter_input(INPUT_POST, 'q', FILTER_SANITIZE_STRING);
if ($q) {
    $sql = 'SELECT workorder.id, FName, LName, name, date, installer, salesman, category, status FROM workorder JOIN customers ON customers.id=workorder.name; 
    SELECT FName, LName FROM customers SELECT name FROM workorder, WHERE name=FName/LName and FName/LName = '%$q%' ORDER BY workorder.id;';

    foreach ($pdo->query($sql) as $row) {
        echo '<tr>';
        echo '<td>'. $row['id'] . '</td>';
        echo '<td>'. $row['FName'] ." ".$row['LName']; '</td>';
        echo '<td>'. $row['date'] . '</td>';
        echo '<td>'. $row['installer'] . '</td>';
        echo '<td>'. $row['salesman'] . '</td>';
        echo '<td>'. $row['category'] . '</td>';
        echo '<td>'. $row['status'] . '</td>';
        echo '<td width=250>';
        echo '<a class="btn" href="readworkorder.php?id='.$row['id'].'">Read</a>';
        echo '&nbsp;';
        echo '<a class="btn btn-success" href="updateworkorder.php?id='.$row['id'].'">Update</a>';
        echo '&nbsp;';
        echo '<a class="btn btn-danger" href="deleteworkorder.php?id='.$row['id'].'">Delete</a>';
        echo '</td>';
        echo '</tr>';
    }
}
else {

    $sql = 'SELECT workorder.id, FName, LName, name, date, installer, salesman, category, status FROM workorder JOIN customers ON customers.id=workorder.name';
    $rows = $pdo->query($sql);
    foreach ($pdo->query($sql) as $row) {
        echo '<tr>';
        echo '<td>'. $row['id'] . '</td>';
        echo '<td>'. $row['FName'] ." ".$row['LName']; '</td>';
        echo '<td>'. $row['date'] . '</td>';
        echo '<td>'. $row['installer'] . '</td>';
        echo '<td>'. $row['salesman'] . '</td>';
        echo '<td>'. $row['category'] . '</td>';
        echo '<td>'. $row['status'] . '</td>';
        echo '<td width=250>';
        echo '<a class="btn" href="readworkorder.php?id='.$row['id'].'">Read</a>';
        echo '&nbsp;';
        echo '<a class="btn btn-success" href="updateworkorder.php?id='.$row['id'].'">Update</a>';
        echo '&nbsp;';
        echo '<a class="btn btn-danger" href="deleteworkorder.php?id='.$row['id'].'">Delete</a>';
        echo '</td>';
        echo '</tr>';
    }
}
Database::disconnect();     

表单搜索代码:

<form method="post">
    <input type="text" name="q" />
    <input type="submit" name="search" value="Find Workorder" class="btn btn-success"/>
</form>

Example

@Diogo Ferraz这里是我的插入代码,由您的指导编辑:

if ($valid) {
            $pdo = Database::connect();
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $sql = "INSERT INTO workorder (date, installer, salesman, category, status) values(?, ?, ?, ?, ?);
            INSERT INTO workorder (name) SELECT customers.id FROM customers;";
            $q = $pdo->prepare($sql);
            $q->execute(array($date,$installer,$salesman,$category,$status));
            Database::disconnect();
            header("Location: workorders.php");
        }

这会在我的工作订单表中添加四个条目,第一个条目没有将客户ID信息传输到表中,另外3个客户ID根据需要进行传输。

这就是我需要的:

价值&#34; $ id&#34;从上一页(客户ID)转移到其他表单提交的表格代码中。对此的Psuedocode如下(对于我需要的一个例子)

$ id = 35(customer.id) $ id = workorder.name $ sql =&#34; INSERT INTO workorder($ id,date,installer,salesman,category,status)值(?,?,?,?,?,?);&#34;

1 个答案:

答案 0 :(得分:0)

好吧,在我的'workorder'表格中,您应该将ID_CUSTOMER作为您的FK表格'客户'。
话虽如此,我为你做了一个例子:

SELECT customers.firstname,customers.id,workorder.status   FROM workorder INNER JOIN客户ON workorder.id_customer = customers.id;

希望它对你有所帮助。

如果您要查找从一个表到另一个表的INSERT数据,可以使用此示例:

INSERT INTO table1(field1,field3,field9) SELECT field3,field1,field4 FROM table2;

但是如果您在表CUSTOMER中查找INSERT,请使用示例:

INSERT INTO tbl_name(a,b,c)VALUES(1,2,3),(4,5,6),(7,8,9);

您可以使用您选择的客户名称插入工作订单。

我不确定我是否不满足您的要求,但如果您需要从A页获取最后一个客户ID entrace并在提交中使用它,请执行以下操作:

// Select the last customerID entrance.
$sql1 = "INSERT INTO CUSTOMER(firstname, lastname, email) VALUES (?, ?, ?)";
$conn->exec($sql);
$customerID = $conn->lastInsertId();

$sql2 = "INSERT INTO workorder (date, name, installer, salesman, category, status) values(?, ?, ?, ?, ?, ?);"
$q->execute(array($date,$customerID,$installer,$salesman,$category,$status));