【问题标题】:How can I unset a line in PHP after pressing a submit button?按下提交按钮后如何在 PHP 中取消设置一行?
【发布时间】:2017-03-24 12:18:32
【问题描述】:

我现在有这个代码,但是每当我进入该页面时,我的整个 text.txt 文件都会被删除。我正在使用会话从另一个 php 文档的页面中获取信息。这是输入信息后的第三页。

我想从输入表单中选择要从文本文件中删除哪一行,但我似乎无法让它工作。有什么建议?谢谢

<?php 
$tekstFil = fopen("test.txt","r");
$t = 0;
while (!feof($tekstFil)) {

  $informasjonLinje = fgets ($tekstFil);

  echo "$t : $informasjonLinje <br/>";

  $t++;
}

fclose($tekstFil);

$fil = file("test.txt");

echo "<br/>";

echo "<form action='' type='get'>";
  echo "Velg hvilken linje med informasjon du vil slette: ";
  echo "<input type='number' name='linjeNummer' value=''>";
  echo "<input type='submit' name='slett' value='slett'>";
echo "</form>";

if(isset($_GET["slett"])) {
  echo "Du valgte å slette linje nummer: " .  $_GET["linjeNummer"];
}

$linjeNummer = $_GET["linjeNummer"];

  unset($fil[4]);

$fil = array_values($Fil);
$tekstFil = fopen("test.txt", "w");

foreach ($fil as $verdi) {
  fwrite($tekstFil, $verdi);
}
fclose($tekstFil);

【问题讨论】:

  • type='get' 这不是“类型”而是“方法”。
  • 和$fil != $Fil。
  • 错误报告本来是你的朋友。
  • 我应该在哪里写这个
  • @UngPeng 试试搜索功能,crtl + f

标签: php forms session unset


【解决方案1】:

请尝试此代码。可能有更简单的方法,但只是修改了您的代码

<?php 

$tekstFil = fopen("test.txt","r");
$t = 0;
$buffer = array();
while (!feof($tekstFil)) {

  $informasjonLinje = fgets ($tekstFil);
  $buffer[] = $informasjonLinje;

  echo "$t : $informasjonLinje <br/>";

  $t++;
}

fclose($tekstFil);

$fil = file("test.txt");

  echo "<br/>";
  echo "<form action='' type='get'>";
  echo "Velg hvilken linje med informasjon du vil slette: ";
  echo "<input type='number' name='linjeNummer' value=''>";
  echo "<input type='submit' name='slett' value='slett'>";
  echo "</form>";

if(isset($_GET['slett'])) {
    echo "Du valgte å slette linje nummer: " .  $_GET["linjeNummer"];
    $linjeNummer = $_GET["linjeNummer"];
    //unset($fil[4]);

    //$fil = array_values($Fil);

    $tekstFil = fopen("test.txt", "w");
    unset($buffer[$linjeNummer]); 
    $buffer1 = implode("", $buffer);
    fwrite($tekstFil, $buffer1);        
    fclose($tekstFil);
}      
unset($buffer);

?>

由于您使用了GET方法,请尽量不要重新加载页面。

【讨论】:

  • 谢谢,完美运行。但是我必须按两次按钮才能删除字符串。你知道我该如何解决这个问题吗?
  • 我只需要点击一下。
猜你喜欢
  • 2021-12-25
  • 1970-01-01
  • 1970-01-01
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多