我在文本文件texttyy.txt
中有一个名称列表,它通过 PHP 回显到html:
<?php
$myFile = "texttyy.txt";
$fh = fopen($myFile, 'r');
$theData = fread($fh, filesize($myFile));
fclose($fh);
echo $theData;
?>
texttyy.txt
:
<li>Artist 1
<li>Artist 2
<li>Artist 3
<li>Artist 4
...
此列表(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("<?php echo $search; ?>")')){
return false; /* Don't submit the form*/
alert("Already artist");
}else{
return /*submit the form*/
}
我不明白为什么这不起作用!!
答案 0 :(得分:1)
如果必须将列表存储在平面文件中,请不要在附加标记的情况下存储它。输出文件时,将其循环并使用您需要的标记输出。一个例子如下:
而不是你的:
$theData = fread($fh, filesize($myFile));
fclose($fh);
echo $theData;
执行:
while ($theData = fgets($fh)) {
echo "<li data-val='{$theData}'>{$theData}</li>";
}
fclose($fh);
这对于内存使用也更好。
现在你有一个可以在jQuery中使用的列表:
$('form').submit(function() {
name_val = $(this).find('input[name=Artist]');
if ($('li[data-val="'+name_val+'"]').length) {
return false;
alert('Oh noes');
}
});
一旦jQuery通过,你就可以重新检查PHP了。这样的事情(在明显的文件开头之后)......
while ($theData = fgets($fh)) {
if ($theData == $_POST["Artist"]) {
die('Oh noes');
}
}
所有未经测试的语法等。但希望你明白了。
答案 1 :(得分:0)
也许是这样的?
echo implode("\n",array_unique(explode("\n",$theData)));
而不是原来的echo
?
答案 2 :(得分:0)
试试这个:
<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;
}
});