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;
}
});