1

PHPとMySQLを使用してスタッフのスケジュールを表示するスクリプトに取り組んでいます。私はphp5.3.13とMySQL5.5.24を使用しています

私がやろうとしているのは、日付と、ステータスがACTVの場合はスタッフの開始時刻、またはスタッフがオフまたは休暇中の場合のステータスを含むテーブルにデータを入力することです。

コードは次のとおりです。

<body>
<center>
<?php
include "../../scripts/php/dbcon/dbcon.php";
$schedule_table = "cc_schedule";

$date_query="SELECT DISTINCT DATE(schedule_date) FROM `$schedule_table`";
$date_result= mysql_query($date_query);
$datenum = mysql_numrows($date_result);

?>

<!-- Table Head -->

<center>
<table cellpadding="0" cellspacing="0">
    <tr>
        <th><center>No.</center></th>
        <th><center>Name</center></th>
        <th><center>Employee ID</center></th>
        <?php
        $d =0;
        while ($d < $datenum){

        $dt = mysql_result($date_result,$d,"DATE(schedule_date)");
        $date = date_create($dt);
        $dd = $date;

        echo "<th><center>". date_format($dd, 'd-M-Y')."</th><center>";
        $d++;
        }
?>  
    </tr>

<!-- Table Body -->


<?php

$names_query="SELECT StaffName, ID 
                from users 
                WHERE groupname = 'call center'";

$name_result = mysql_query($names_query);
$namenum = mysql_numrows($name_result);

$schedule_query="SELECT * 
                FROM `$schedule_table` 
                ORDER BY `schedule_date` ASC,`sstatus` ASC,`start_time` ASC,`employee_id` ASC";

$schedule_result=mysql_query($schedule_query);
$schedule_num = mysql_numrows($schedule_result);

$n = 1;
while ($n < $namenum){
    ?>
    <tr>
    <?php
    echo"<td><center>".($n)."</td></center>";
    echo"<td><center>".mysql_result($name_result,$n,"StaffName")."</td></center>";
    echo"<td><center>".mysql_result($name_result,$n,"ID")."</td></center>";

    $d=1;
    {
        $emp_id = mysql_result($name_result,$n,"ID");
        $dt = mysql_result($date_result,$d,"DATE(schedule_date)");
        $date = date_create($dt);
        $dd = date_format($date, 'Y-m-d');

        echo $emp_id;
        echo DATE($dd);

        while ($d < $datenum) {
            $schedule_query ="SELECT *  
                            from $schedule_table 
                            WHERE `employee_id` = $emp_id AND `schedule_date`='$dd'";
            $schedule_result = mysql_query($schedule_query);
            $schedule = mysql_result($schedule_result,0,"start_time");
            $status = mysql_result($schedule_result,0,"sstatus");



                if ($status =="ACTV"){
                '<td class="'.$status.'"><center>'.$schedule.'</td></center>';
                }
                else {
                echo '<td class="'.$status.'"><center>'.$status."</td></center>";
                }
                }

    $d++;       
    }

    ?>
    </tr>
<?php
$n++;
}
?>
</table>
</center>
</body>

コードは何も返しません。実行するたびに異なるエラーを返します。クエリに問題があるのではないかと思います。私はそれを理解することができません。

どんな助けでも大歓迎です。

ありがとうございました。

モハメド。

4

1 に答える 1

0

Jeremy Smyth、Geek Num 88、およびawenkhh

コメントしてくれてありがとう。

PDOに切り替えて、探していた結果が得られました。

上記の問題を修正する新しいコードは次のとおりです。

<body>
<center>
<?php
include "../../scripts/php/dbcon/dbcon.php";
$schedule_table = "cc_schedule";
$dates= $db->query("SELECT DISTINCT DATE(schedule_date) FROM `$schedule_table`");
$dates_num = $dates->rowCount();
$ids = $db->query("SELECT DISTINCT employee_id FROM `$schedule_table` ORDER BY `employee_id`");
$staffcount = $ids->rowCount();
$records = $db->query("SELECT * FROM `$schedule_table`");
$record_num = $records->rowCount();
?>
<center>
<!--- Table Head -->

    <table cellpadding="0" cellspacing="0">
        <tr>
            <th><center>No.</center></th>
            <th><center>Employee Name</center></th>
            <th><center>Employee ID</center></th>
            <?php
                while($row = $dates->fetch()) {
            {
                $d =  $row['DATE(schedule_date)'];
            }
            ?>
                <th><center><?php echo date_format(date_create($d), 'd-M-Y'); ?></center></th>
            <?php
            }
            ?>
        </tr>

    <?php
        $i=1;
        while($row = $ids->fetch()){

            $employee_id =  $row['employee_id'];

                    $equery = $db->query("SELECT StaffName FROM users where ID=$employee_id");
                    while($row = $equery->fetch(PDO::FETCH_ASSOC)) {
                    $empname =  $row['StaffName'];
                    }

    ?>
<!--- Table Body --->

                    <tr class="class<?php echo ($i%2); ?>">
                        <td  width="20"><font face="Arial, Helvetica, sans-serif" size="1"><b><?php echo $i ; ?></b></font></td>
                        <td  width="200"><font face="Arial, Helvetica, sans-serif" size="1"><?php echo $empname ; ?></font></td>
                        <td  width="80"><font face="Arial, Helvetica, sans-serif" size="1"><center><?php echo $employee_id; ?></center></font></td>

                        <?PHP
                        $sschedule = $db-> query("SELECT start_time, sstatus FROM $schedule_table WHERE employee_id =$employee_id");

                        while($row = $sschedule->fetch()) {
                        {
                            $sstatus =  $row['sstatus'];
                            $start_time =  $row['start_time'];

                            if ($sstatus=="ACTV"){
                            $staffSchdule = date_format(date_create($start_time), 'h:i');
                            }
                            else{
                            $staffSchdule = $sstatus;
                            }

                        }
                            ?>
                            <td  width="20" class="<?php echo $staffSchdule; ?>"><font face="Arial, Helvetica, sans-serif" size="1"><center><?php echo $staffSchdule; ?></center></font></td>
                        <?php


                    }

                $i++;
                }
                    ?> 
                </tr>
<td colspan="<?php echo $dates_num + 3 ?>"><font face="Arial, Helvetica, sans-serif" size="1"><b><i>Found a total of <?php echo $record_num; ?> records matching your criteria.</i></b></font></td>
</tr>
    </table>
</center>
</body>

そして、最終結果は適切なタイムテーブルです。 ここに画像の説明を入力してください

ありがとうございました。

于 2012-11-14T16:38:08.393 に答える