Php 防止表单中出现重复结果

Php 防止表单中出现重复结果,php,jquery,html,forms,Php,Jquery,Html,Forms,我在一个文本文件texttyy.txt中有一个名称列表,该文件通过PHP在html中回响: <?php $myFile = "texttyy.txt"; $fh = fopen($myFile, 'r'); $theData = fread($fh, filesize($myFile)); fclose($fh); echo $theData; ?> 此列表(texttyy.txt)通过以下表格更新: <form action="insert.php" method="pos

我在一个文本文件
texttyy.txt
中有一个名称列表,该文件通过PHP在html中回响:

<?php
$myFile = "texttyy.txt";
$fh = fopen($myFile, 'r');
$theData = fread($fh, filesize($myFile));
fclose($fh);
echo $theData;
?>
此列表(
texttyy.txt
)通过以下表格更新:

<form action="insert.php" method="post">
Artist: <input type="text" name="Artist">

<input type="submit">
</form>

艺术家:
我正在寻找一种方法,以防止重复的形式。使用Jquery和php

PHP:

<?php
$search =  $_POST["Artist"];
?>

*JQuery-(尝试):*

if($('li:contains(“”))){
返回false;/*不提交表单*/
警惕(“已经是艺术家”);
}否则{
return/*提交表格*/
}

我不明白为什么这不管用

也许是这样的

echo implode("\n",array_unique(explode("\n",$theData)));

如果必须将列表存储在平面文件中,请不要使用原始的
echo

,而不要使用附加的标记来存储列表。输出文件时,在其上循环并输出所需的标记。例如:

而不是您的:

$theData = fread($fh, filesize($myFile));
fclose($fh);
echo $theData;
做:

一旦jQuery通过,您就可以在PHP中重新检查了。类似这样的东西(在文件的明显fopen之后)

所有这些都没有经过语法等方面的测试。但希望你能明白这一点。

试试这个:

<ul id="list">
<li>Artist 1</li>
<li>Artist 2</li>
<li>Artist 3</li>
<li>Artist 4</li>
</ul>

  <?php
       $search = "Artist 1";
  ?>

 <script>
$('form').submit(functon(){
    if($('#list li:contains("<?php echo $search; ?>")')){
      alert('Already Artist');
    return false;
     }
});
  • 艺术家1
  • 艺术家2
  • 艺术家3
  • 艺术家4
$('form').submit(functon(){ if($('#list li:contains(“”))){ 警惕(“已经是艺术家”); 返回false; } });

或具有唯一索引的数据库/表。平面文件只能让你走这么远…像这样$f=fopen(“texttyy.txt”,“r”);而($theData=fgets($fh)){if($theData=$_POST[“艺术家”]){die('ready entered');}}}fclose($f);我得到了这个
警告:fgets():2不是一个有效的流资源
您的示例将fopen()分配给$f,但会获取$fh。这可能是你的问题;而($theData=fgets($fh)){if($theData=$_POST[“艺术家”]){die('ready entered');}}}fclose($fh);在那个地区,是的。您能否尝试通过逐个删除函数调用来将echo更改为print_r并递增运行页面,并显示结果?对不起,我是PHP新手。你会怎么做?这不起作用,它不会终止表单提交,只是用“return false”语句更新了代码。现在试试。
$theData = fread($fh, filesize($myFile));
fclose($fh);
echo $theData;
while ($theData = fgets($fh)) {
    echo "<li data-val='{$theData}'>{$theData}</li>";
}

fclose($fh);
$('form').submit(function() {
   name_val = $(this).find('input[name=Artist]');

   if ($('li[data-val="'+name_val+'"]').length) {
      return false;
      alert('Oh noes');
   }
});
while ($theData = fgets($fh)) {
    if ($theData == $_POST["Artist"]) {
        die('Oh noes');
    }
}
<ul id="list">
<li>Artist 1</li>
<li>Artist 2</li>
<li>Artist 3</li>
<li>Artist 4</li>
</ul>

  <?php
       $search = "Artist 1";
  ?>

 <script>
$('form').submit(functon(){
    if($('#list li:contains("<?php echo $search; ?>")')){
      alert('Already Artist');
    return false;
     }
});