За последние 24 часа нас посетили 16624 программиста и 1677 роботов. Сейчас ищут 819 программистов ...

регистрационная анкета

Тема в разделе "PHP для новичков", создана пользователем franko, 27 фев 2011.

  1. franko

    franko Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    30
    Симпатии:
    1
    Привет!

    Вот вопрос от новичка.
    При регистрации пользователя в случае отсуствия заполненных полей выводится надпись

    PHP:
    1. exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
    Вопрос, как сделать чтобы вместо этого оставалась таже регистрационная анкета + надпись "Некоторые необходимые поля не заполнены!"


    PHP:
    1. <form action="save_user.php" method="post" enctype="multipart/form-data">
    2. <!-- save_user.php - это адрес обработчика. То есть, после нажатия на кнопку "Зарегистрироваться", данные из полей отправятся на страничку save_user.php методом "post" -->

    файл save_user.php

    PHP:
    1. if (empty($login) or empty($password)or empty($code) or empty($email) or empty($gender)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
    2. {
    3. exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!"); //останавливаем выполнение сценариев
    4. }
     
  2. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    exit используется для остановки сценария. может вывести просто ошибку? или направить редиректом пользователя обратно к себе в анкету? (только не забыть наполнить снова его форму, чтобы он не плакал, что всё похерилось).
     
  3. franko

    franko Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    30
    Симпатии:
    1
    точно. а как это сделать практически?
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    PHP:
    1. <?
    2.  
    3. $phone = '';
    4. $email = '';
    5. $error = false;
    6. if (isset($_POST['lalala']) {
    7.   $phone = substr(trim($_POST['phone']), 0, 255);
    8.   $email = substr(trim($_POST['email']), 0, 255);
    9.  
    10.   if (!$email) { echo 'Укажите почту'; $error = true;}
    11.   if (!$phone) { echo 'Укажите телефон'; $error = true;}
    12.  
    13. //тут еще таких полей может быть сто штук
    14. //но в итоге в конце пишем
    15.  
    16.     if (!$error) {
    17.       //Отправляем анкету
    18.       //очищаем все поля или не все - если предпологается что юзверь отправляет несколько подряд - зачем вводить одно и то же имя
    19.       $phone = '';
    20.       $email = '';
    21.  
    22.       //или не очищаем а редиректим его на "спасибо"
    23.       header(Location: "http://site.com/spasibo.html");
    24.     }
    25.  
    26. } else {
    27.   echo "<input name='email' value='$email'>";
    28.   echo "<input name='phone' value='$phone'>";
    29.   echo "<input type='submit' name='lalala' value='отправить'>"
    30. }
     
  5. franko

    franko Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    30
    Симпатии:
    1
    как это реализовать для моего случая?
     
  6. rainarr

    rainarr Активный пользователь

    С нами с:
    20 ноя 2010
    Сообщения:
    276
    Симпатии:
    0
    для такого "случая" можно в томже exit приписать весь хтмл код формы, раз нравится такой изврат )
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    franko
    я ж привел полный код. какие тут еще могут быть вопросы? =)