我想要用两张表来查看报告,我可以在输入日期后得到这些表格。
以下是我的表:对于客户 - customer_date,lastname,firstname
用于服务 - room_number,date_in,date_out
现在我的代码是:它似乎无法从我的表中获取任何行
<?php
$conn = mysql_connect("localhost","root","");
mysql_select_db('irm',$conn);
if(isset($_GET['Submit'])){
$customer_date = $_GET['customer_date'];
}
?>
<form method="get">
<table width="252" border="0">
<tr>
<td width="98">Choose Date:</td>
<td width="144"><label>
<input onclick="ds_sh(this);" name="customer_date" id="customer_date" readonly="readonly" style="cursor: text" />
</label></td>
</tr>
<tr>
<td align="right"><input type="submit" value="Submit" /></a></td>
<td></td>
</tr>
</table>
</form>
<form>
<?php
$tryshow = "SELECT * FROM customers,services WHERE customer_date = '$customer_date' ";
$result = @mysql_query($tryshow,$conn)
or die("cannot view error query");
if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print...";
}
while($row=mysql_fetch_assoc($result)){
?>
<table width="700" border="0">
<tr>
<td width="100">Customer Date:</td>
<td width="100">Last Name</td>
<td width="100">First Name</td>
<td width="100">Room Number</td>
<td width="100">Date In</td>
<td width="100">Date Out</td>
</tr>
<tr>
<td><?php echo $row["customer_date"]; ?></td>
<td><?php echo $row['lastname']; ?></td>
<td><?php echo $row['firstname']; ?></td>
<td><?php echo $row['room_number']; ?></td>
<td><?php echo $row['date_in']; ?></td>
<td><?php echo $row['date_out']; ?></td>
</tr>
</table>
<?php }?>
</form>
有了这个,我可以得到任何在该日期签到的客户的报告。
我需要一些建议。希望你能尽快回答我。
答案 0 :(得分:3)
两个表之间似乎没有任何共同字段。如何在C日存储客户A在B房间的事实?要进行SQL连接,要连接的表必须至少有一个共同的字段。
同样,不要只是说die("cannot view error query")
,这对于调试来说完全没用,请尝试执行die(mysql_error()
,这样可以找到查询失败的确切原因。
同样,如果查询正常工作,那么您将为找到的每一行输出整个HTML表。您应该具有获取循环的表头和页脚数据OUTSIDE。
答案 1 :(得分:2)
您需要将两个表与JOIN相关联。根据提供的信息,customers.customer_date
到services.date_in
似乎是最有可能的候选人。这假定日期列仅包含日期而不是日期/时间。
另请注意,我在查询中未使用select *
,您也不应该使用SELECT c.customer_date, c.lastname, c.firstname,
s.room_number, s.date_in, s.date_out
FROM customers c
INNER JOIN services s
ON c.customer_date = s.date_in
WHERE c.customer_date = '$customer_date'
。 ; - )
{{1}}
答案 2 :(得分:1)
当您对数据库进行查询时,请确保您的日期格式为yyyy-mm-dd
Mysql仅以此格式了解日期,因此您只需要比较此格式的日期格式。
您的$customer_date
应采用yyyy-mm-dd
格式
答案 3 :(得分:1)
顺便说一句,我会将customer_date更改为更有意义的内容,例如“date_in”。 (当名称可预测时,这是一件好事!)您不需要指定它是客户,因为它已经在客户表中。