Я не могу найти, если строка уже существует в MySQL DB, используя функцию времени в запросе PHP MySQL? - PullRequest
0 голосов
/ 15 февраля 2019

В настоящее время я работаю над модулем, в котором факультет может публиковать информацию о посещаемости студентов, выбирая раскрывающийся список (поле выбора), который генерируется динамически на основе информации, предоставляемой факультетом. Когда факультет выбирает конкретный год, и список уважаемых студентовизвлекается и отображается в таблице. Но требование состоит в том, что после того, как посещаемость публикуется в определенном классе / разделе для определенного, она не может быть снова открыта факультетом

Я попытался использовать функцию mysql_num_rows (), чтобы проверить,любые строки уже присутствуют в БД или нет на эту конкретную дату. Но это не работает так, как я хотел

Вот мой полный код модуля, за исключением файла БД

<form action="take.php" method="Post">
<br>
<table class="table table-bordered table-hover ">
    <tr>
        <th>S.no</th>
        <th>Student Name</th>
        <th>Roll Number</th>
        <th>Present</th>
        <th>Absent</th>
    </tr>
    <?php 
        if (isset($_POST['search'])) 
            { 
            $stu="Student";
            $yr=$_POST['year']; 
            $se=$_POST['section'];                             

            $subdr=mysql_query("SELECT subject FROM schedule WHERE id='$cuid' AND day='$d' AND class='$yr' AND section='$se'");
            $subj=mysql_fetch_assoc($subdr);
                $dis_date=date("Y-m-d H:i:s");
                $subj_d=$subj['subject'];
                $display=mysql_query("select * from attendance_records where id='$cuid' AND ondate='".$dis_date."' And subject='$subj_d'");
                $rec=mysql_num_rows($display);
                if($rec){
                echo "Records posted";
            }
            else{
                $display=mysql_query("select name,id from login where role='$stu' AND academic='$yr' AND section='$se'");

                $sno=0;
                $count=0;

                while ($row=mysql_fetch_array($display)) {
        $sno++;
        ?>
    <tr>
        <td><?php echo $sno  ?></td>
        <td>
            <?php echo $row['name']  ?>
            <input type="hidden" name="name[]" value="<?php echo $row['name']  ?>">
        </td>
        <td>
            <?php echo $row['id']  ?>
            <input type="hidden" name="id[]" value="<?php echo $row['id']  ?>">
        </td>
        <td>
            <input type="radio" name="attendance_status[<?php echo $count ?>]" value="Present" required>
        </td>
        <td>
            <input type="radio" name="attendance_status[<?php echo $count ?>]" value="Absent" required>
        </td>
    </tr>
    <?php 
        $count++;
        }
        }
        ?>
    <tr>
        <td colspan=5>
            <center><label><?php echo "Subject : ".$subj['subject']; ?></label></center>
        </td>
    </tr>
    <input type="hidden" name="yr" value="<?php echo $_POST['year']; ?>">
    <input type="hidden" name="set" value="<?php echo $_POST['section']; ?>">
    <?php 
        } ?>
</table>
<center><input   type="submit" name="submit" value="Submit" class="btn btn-primary" >
</center>
</div>

ожидаемый результат должен отображать сообщение «Записи опубликованы» на основе запроса, например:

$dis_date=date("Y-m-d H:i:s");
$subj_d=$subj['subject'];
$display=mysql_query("select * from attendance_records where id='$cuid' 
   AND ondate='".$dis_date."' And subject='$subj_d'");
$rec=mysql_num_rows($display);
if($rec){
 echo "Records posted";
 }
 else{
  #display the student list
 }

1 Ответ

0 голосов
/ 15 февраля 2019

Ваше назначение:

$dis_date=date("Y-m-d H:i:s");

, поэтому $dis_date содержит дату и время дня.Запрос будет совпадать только в том случае, если записи в таблице имеют одинаковое время суток, а не только одну и ту же дату.

Вы должны не указывать время в переменной:

$dis_date=date("Y-m-d");

Если тип данных столбца в таблице DATETIME, вам также необходимо отфильтровать время с помощью:

AND DATE(ondate)='$dis_date' And subject='$subj_d'"

Вам не нужно делать это, если тип данных DATE.

...