亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何限制任務列表中允許輸入的任務數量?

如何限制任務列表中允許輸入的任務數量?

PHP
FFIVE 2023-10-22 21:17:35
我的問題與 PHP/SQL 有關。我知道如何使用“LIMIT 5”來限制返回的結果。如何限制允許的輸入?那么用戶在刪除現有任務之一之前無法添加更多任務嗎?所以基本上我如何限制輸入而不是結果。此時我仍然可以添加任務,但結果有限,它會將舊任務推到視野之外。我希望不可能添加更多任務,除非在達到列表限制時將其刪除。更新:共享代碼:(是的,我知道我需要使用準備好的語句)頭:<?php     $errors = "";    $db = mysqli_connect("localhost", "root", "", "certanet");    if (isset($_POST['submit'])) {        if (empty($_POST['task'])) {            $errors = "";        }else{            $task = $_POST['task'];            $sql = "INSERT INTO tasks (task) VALUES ('$task')";            mysqli_query($db, $sql);            header('location: dashboard.php');        }  }     if (isset($_GET['del_task'])) {    $id = $_GET['del_task'];      mysqli_query($db, "DELETE FROM tasks WHERE id=".$id);    header('location: dashboard.php');  }  ?>任務列表:<div class="todobox"><div class="menutitle" id="category">    Persoonlijke takenlijst</div><div class="inhoud">Hieronder is het mogelijk om je eigen taken bij te houden.<form method="post" action="dashboard.php" class="input_form"><?php if (isset($errors)) { ?>    <p><?php echo $errors; ?></p><?php } ?>        <input type="text" name="task" class="task_input">        <button type="submit" name="submit">Toevoegen</button>    </form>  <table>    <tbody id="todo">        <?php         $tasks = mysqli_query($db, "SELECT * FROM tasks ORDER BY id DESC LIMIT 7");        $i = 1; while ($row = mysqli_fetch_array($tasks)) { ?>            <tr>                <td> <?php echo $i; ?> </td>                <td class="task"> <?php echo $row['task']; ?> </td>                <td class="delete">                     <a href="dashboard.php?del_task=<?php echo $row['id'] ?>">x</a>                 </td>            </tr>        <?php $i++; } ?>        </tbody></table></div></div>
查看完整描述

1 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

當您尋求 SQL 解決方案時,這實際上更多的是應用程序/業務需求,而不是數據庫問題。如果應用程序的業務邏輯需要限制用戶創建的記錄,那么應用程序應該查詢現有的記錄數量并向用戶提供適當的消息傳遞。

從插入 SQL 中看不出來插入到表中的行是否tasks包含用于標識哪個用戶輸入它的列。如果這是一個單用戶應用程序,或者您的底層框架可能會自動處理此問題,那么這可能沒問題。task如果這兩個都不成立,我們需要在該表中添加一列來捕獲用戶 ID 或其他標識信息,以便將每條記錄與其各自的用戶關聯起來(例如,根據您的用例、IP 地址或會話 ID)可能就足夠了)。

假設上述全部成立,我們應該實施一些更改:

  1. 切勿向用戶顯示表單,因為這會提供不支持/不允許的功能。相反,我們將用消息替換表單,以向用戶提供適當的反饋。

  2. 如果我們收到POST用戶在超出限制后嘗試添加新記錄的請求,請拒絕該請求并向用戶顯示一條消息。

  3. 將一userId列或一些數據添加到表中以將用戶關聯起來tasks

  4. 插入 new 時設置此新列的值tasks。

無論是 aGET還是POST,我們都希望在渲染頁面之前查詢用戶的現有記錄。

<?php

$errors = "";

$maxUserTasks = 7;


$db = mysqli_connect("localhost", "root", "", "certanet");


// Before even handling the request, query for the user's existing records

$sql = "SELECT task FROM tasks WHERE userId = 123"

$userTaskCountQuery = mysqli_query($db, $sql);

$userTaskCount = $userTaskCountQuery->num_rows();


if (isset($_POST['submit'])) {

    if (empty($_POST['task'])) {

        $errors = "";

    }else if ($userTaskCount > $maxUserTasks){

        $errors = "You already have $maxUserTasks tasks."

    }else{

        // Here is where you'll first want to check

        $task = $_POST['task'];

        $sql = "INSERT INTO tasks (task) VALUES ('$task')";

        mysqli_query($db, $sql);

        header('location: dashboard.php');

    }

}


// Presumably, your page markup and form are somewhere down here

if ($userTaskCount > $maxUserTasks){

   // display our error message here

}else{

   // otherwise, display our form

}

?>


查看完整回答
反對 回復 2023-10-22
  • 1 回答
  • 0 關注
  • 125 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號