#php #jquery #mysql #forms #post
#php #jquery #mysql #формы #Публикация
Вопрос:
Можете ли вы мне помочь?? Я пытаюсь выполнить некоторую проверку в своей системе, но я застрял на своих идеях.
Я создал текстовое поле, которое будет зацикливаться при вводе любого числа. При появлении текстового поля пользователю придется заполнять имена, но если пользователь случайно введет дублированное имя, появится подсказка с сообщением: «Ошибки».
В моей системе есть небольшая ошибка, и я хочу ее исправить. Я думаю, что есть много методов, но этот лучше всего подходит для моей системы.
Вот код:
<form action="fq1.php" method="post">
<input type="text" name="num" id="num">
<input type="submit" value="select" name="select" id="select" />
<?php include 'conectthis.php';
$num = $_POST['num'];
if(isset($_POST['select']))
{
$x = 0;
while($x <= $num)
{
$x ;
echo "<input type='text' name='txt".$x."' />";
}
echo "<input type='submit' name='save' id='save' value='Save'>";
}
if(isset($_POST['save']))
{
$y = 0;
while($y<=$num)
{
$y ;
$mypost1 = "txt". $y;
if($_POST[$mypost1] == $_POST[$mypost1])
{
$prompts = "<script>alert('Names was not saved, please ensure that there are no duplicated Names');</script>";
}
else
{
$runthis = "Update sampletable SET samplename = '$_POST[$mypost1]' WHERE id = '$y'";
mysql_query($runthis) or die(mysql_error());
}
}
echo $prompts;
}
?>
</form>
Теперь моя проблема в том, if($_POST[$mypost1] == $_POST[$mypost1])
что текстовое поле распознает его самостоятельно и покажет сообщение с подсказкой, даже если в нем нет дублированных имен.
Это царапина в моем коде, я думаю, я знаю, что это правильно. Заранее благодарю вас, я новичок в этом и все еще учусь.
Комментарии:
1. Почему циклы while? For-циклы кажутся более подходящими. Вы также всегда сравниваете значение отдельного текстового поля с самим собой, что всегда приводит к отображению предупреждения. Что касается проверки на дубликаты, я бы просто загрузил все значения текстового поля в массив и проверил наличие дубликатов с помощью любого количества встроенных вспомогательных функций массива.
2. Кажется, в вашем коде отсутствует закрывающая фигурная скобка, но в любом случае, эта строка
$runthis = "Update sampletable SET samplename = '$_POST[$mypost1]' WHERE id = '$y'";
уязвима для SQL-инъекции.3. Кроме того,
$_POST[$mypost1] == $_POST[$mypost1]
всегда будет возвращатьtrue
, это одна и та же переменная.