ВЫБОР в двух таблицах ... - PullRequest
0 голосов
/ 03 марта 2011

У меня есть две таблицы, которые я хочу использовать для просмотра своих отчетов, которые я могу получить после ввода даты.

Вот мои таблицы: для клиентов - customer_date, фамилия, имя

для сервисов - 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>

С этим я могу получить отчет олюбой клиент, который регистрируется в эту дату.

Мне нужен совет.Надеюсь, вы скоро ответите мне.

Ответы [ 4 ]

3 голосов
/ 03 марта 2011

У вас нет общих полей в этих двух таблицах.Как вы храните факт, что клиент А находился в комнате В на дату С?Чтобы выполнить SQL-соединение, объединяемые таблицы должны иметь хотя бы одно общее поле.

Кроме того, вместо того, чтобы просто сказать die("cannot view error query"), что совершенно бесполезно для целей отладки, попробуйте выполнить die(mysql_error(), что даст вам точную причину сбоя запроса.

Кроме того, если запрос ДЕЙСТВУЕТ, вы выводите полную таблицу HTML для каждой найденной строки.У вас должны быть данные верхних и нижних колонтитулов таблицы вне цикла извлечения.

2 голосов
/ 03 марта 2011

Вам нужно связать две таблицы с помощью 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 голос
/ 03 марта 2011

Кроме того, я бы изменил customer_date на что-то более значимое, например "date_in".(Хорошо, когда имена предсказуемы!) Вам не нужно указывать, что это клиент, поскольку он уже есть в таблице клиентов.

1 голос
/ 03 марта 2011

Когда вы делаете запрос к базе данных, убедитесь, что ваш формат даты yyyy-mm-dd

Mysql понимает дату только в этом формате, так что вам нужно сравнивать формат даты только в этом формате.

ваш $customer_date должен быть в формате yyyy-mm-dd

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...