1

PHP と mySQL に基づいてタイムシートを作成するように依頼されました。

データを挿入するページと、データを表示して表示されたデータを編集/削除する別のページを作成しました。

データを表示し、編集/削除するページは次のとおりです。

<?php
    while($info = mysql_fetch_array( $data )) {
?>
<tr>
    <td> <input type="checkbox" name="job" id="<?php echo $info['job_code']?>" value="<?php echo $info['job_code']?>" /></td>
    <td><?php echo $info['job_code'] ?></td>
    <td><?php echo $info['job_desc'] ?> </td>
    <td><?php echo $info['job_client'] ?> </td>
    <td><?php echo $info['job_year'] ?> </td>
    <td><?php echo $info['job_month']?> </td>
    <td><?php echo $info['job_date']?> </td>
    <td><?php echo $info['job_category']?> </td>
    <td>EDIT</td>
    <td>DELETE</td>
</tr>
<?php } ?>

そして、これが削除プロセスです

 $this->db_connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

$admin_data_query = mysql_query("SELECT * FROM jobs")or die(mysql_error());
$job_code_query = $_POST['job'];
$job_code_query_items = 'IN ( ';
foreach ($job_code_query as $key => $value) {
    $job_code_query_items .= ($key > 0 ? ", '" . $value . "'" : "'" . $value . "'");
}
$job_code_query_items .= ' );';
while ($admin_data = mysql_fetch_array($admin_data_query)) {
    if (isset($_POST[$admin_data['job_code']])) {
        $admin_sql = "DELETE FROM jobs WHERE job_code = $job_code_query_items";
        $admin_query = mysql_query($admin_sql) or die(mysql_error());
        $this->messages[] = "Job deleted.";
    } else {
        $this->messages[] = "Failed to delete job.";
    }
}

私の理解では、2 ページ目の job[] の変数は、1 ページ目でユーザーが送信したチェックボックスをキャッチしなかったか、チェックボックスの値が原因で最初のページがデータを送信しませんでした (書き間違えた可能性があります)。

編集:私は答えを見つけました、ここに正しいコードがあります:

1ページ目

<td>
    <input type="checkbox" name="<?php echo $info['job_code']?>"
           id="<?php echo $info['job_code']?>"
           value="<?php echo $info['job_code']?>"/>
</td>
<td><?php echo $info['job_code'] ?></td>
<td><?php echo $info['job_desc'] ?> </td>
<td><?php echo $info['job_client'] ?> </td>
<td><?php echo $info['job_year'] ?> </td>
<td><?php echo $info['job_month']?> </td>
<td><?php echo $info['job_date']?> </td>
<td><?php echo $info['job_category']?> </td>

処理中ページ (2)

 while ($admin_data = mysqli_fetch_array($admin_data_query)) {
    $job_code_query = $admin_data["job_code"];

    if (isset($_POST[$admin_data["job_code"]])) {

        $admin_sql = "DELETE FROM jobs WHERE job_code = '$job_code_query'";
        $admin_query = mysqli_query($this->db_connection, $admin_sql) or die(mysqli_error($this->db_connection));
        $this->messages[] = "Job deleted.";
    } else {
        $this->messages[] = "Failed to delete job.";
    }
}

助けようとしたり読んだりしてくれた人に感謝します!

4

2 に答える 2

0

29行目をその行に置き換えます

$job_code_query = $_POST['job'];

また、現在非推奨となっている mysql_* 関数の代わりに PDO または MySQLi を使用する必要があります。MySQLi接続では、使用する必要があり、使用する必要は$dbconnection->query($sqlquery)ありませんmysql_query

于 2013-08-22T08:35:34.063 に答える