簡體   English   中英

無法從陣列刪除數據行。 PHP + Javascript

[英]Trouble deleting row of data from array. PHP + Javascript

我有一個這樣的屏幕: 通知示例

並且它刪除行,但僅從屏幕上刪除。 因為如果我刷新,它將再次出現。 我不確定如何從實際數組中刪除它。 該數組是從csv文件中取出的,我知道如何將其添加回等。但是我不知道是從數組中刪除行。

這是我所擁有的:

// Grabs the csv file (and its existing data)  and makes it into an array so the new data can be added to it.
$Notifications = array();
$lines = file('data/AdminNotifications.csv', FILE_IGNORE_NEW_LINES);
foreach ($lines as $key => $value)
{
    $Notifications[$key] = str_getcsv($value);
}

echo array2table(array_reverse($Notifications));


// FUNCTION ---------------------------------------------------------------------

//This converts an array to a table
function array2table($array, $recursive = false, $null = ' ')
{
    // Sanity check
    if (empty($array) || !is_array($array)) {
        return false;
    }

    if (!isset($array[0]) || !is_array($array[0])) {
        $array = array($array);
    }

    // Start the table
    $table = "<table>\n";

    // The header
    $table .= "\t<tr>";

    // Take the keys from the first row as the headings
    foreach (array_keys($array[0]) as $heading) {

    }

    $table .= "</tr>\n";

    // The body
    foreach ($array as $row) {
        $table .= "\t<tr>" ;

        foreach ($row as $cell) {
            $table .= '<td>';

            /*
            if($cell ==0 && $heading==1){
            $cell = $cell.":  ";
        }
            */

            $details = $cell;


            // Cast objects
            if (is_object($cell)) { $cell = (array) $cell; }

            if ($recursive === true && is_array($cell) && !empty($cell)) {
                // Recursive mode
                $table .= "\n" . array2table($cell, true, true) . "\n";
            } else {
                $table .= (strlen($cell) > 0) ?
                    htmlspecialchars((string) $cell) :
                    $null;
            }

 $table .= '</td>';


        }
            $table .= '<td>';


            $table .= '<input type="submit" value="Delete" onclick="deleteRow(this)" name="delete"/>';


            $table .= '</td>';



        $table .= "</tr>\n";
    }

    $table .= '</table>';
    return $table;
}


//If the delete button is pressed, then it does this.
if (isset($_POST['delete'])) {

}

?>

//What happens when it is pressed. (This is javascript)
<script>
function deleteRow(btn) {
  var row = btn.parentNode.parentNode;
  row.parentNode.removeChild(row);

}

</script>

任何幫助將不勝感激。 我不太確定是否可以使用javascript刪除行? 或在PHP和Java中...

謝謝

php是服務器端語言,將僅在服務器上執行。 當您按下刪除按鈕時,將調用一個javascript函數,該函數實際上只是從客戶端刪除行,因為這是一種客戶端語言,這意味着該行實際上已存在於該文件中的服務器上,這就是刷新時再次顯示的原因。

現在,您可以進行ajax調用或將刪除按鈕放置在表單內,以將該請求發布到服務器以實際刪除它。

  //If the delete button is pressed, then it does this.
if (isset($_POST['delete'])) {
    $arr_index = $_POST['delete']; //you need to pass the row number
    unset($array[$arr_index]);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM