Логика цикла PHP While

#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 , это одна и та же переменная.