За последние 24 часа нас посетил 95201 программист и 3012 роботов. Сейчас ищет 1281 программист ...

Помогите доработать код

Тема в разделе "PHP для новичков", создана пользователем Svoloch_196, 30 янв 2014.

  1. Svoloch_196

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

    С нами с:
    28 янв 2012
    Сообщения:
    227
    Симпатии:
    0
    Помогите доработать код:
    Код (Text):
    1.  
    2. <?php
    3. if (isset($_POST['test'])) {$test = $_POST['test'];}
    4. ?>
    5. <?php
    6.  
    7. $db = mysql_connect("Хост","Пользователь","Пароль");
    8. if(!$db) {echo "База не подключена";}
    9. mysql_select_db("База");
    10. mysql_query("SET NAMES 'utf8'");
    11. mysql_query("SET CHARACTER SET 'utf8'");
    12. mysql_query("SET SESSION collation_connection = 'utf8_general_ci'");
    13.  
    14. $result = mysql_query("INSERT INTO `userinfo` (`test`) VALUES ('$test')");
    15.  
    16. if($result == 'true')
    17. {
    18. echo "<h1>Категория добавлена успешно!</h1>";
    19. }
    20. else
    21. {
    22. echo "<h1>Категория не добавлена!</h1>";
    23. }
    24. ?>
    Что доработать:
    1. Если код открыть без формы то идёт занос в базу данных пустой
    2. Помогите переделать вывод ошибок и выполнение, что бы не echo "<h1>Категория добавлена успешно!</h1>";
    а открывался файл "ok.php" но в него пусть строчка test передаётся:
    Допустим я в поле "test" напишу Привет, у меня заместо окна открылся файл ok.php и там написано Привет,
    Очень буду признателен
     
  2. imoisey

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

    С нами с:
    27 янв 2014
    Сообщения:
    113
    Симпатии:
    0
    Код (Text):
    1.  
    2. <?php
    3. if (isset($_POST['test'])) {$test = $_POST['test'];} // Нужно фильтровать с помощью разных функций
    4.  
    5. $db = mysql_connect("Хост","Пользователь","Пароль");
    6. if(!$db) {echo "База не подключена";}
    7. mysql_select_db("База");
    8. mysql_query("SET NAMES 'utf8'");
    9. mysql_query("SET CHARACTER SET 'utf8'");
    10. mysql_query("SET SESSION collation_connection = 'utf8_general_ci'");
    11.  
    12. if(!empty($test))
    13.     $result = mysql_query("INSERT INTO `userinfo` (`test`) VALUES ('$test')");
    14.  
    15. if($result == true) // true можно без кавычек
    16.     header("Location: ok.php?test={$test}"); // Редирект на страницу ok.php с передачей параметра
    17. else
    18.     echo '<h1>Категория не добавлена!</h1>';
    19.  
    20. /*
    21.     Если вывод echo '<h1>Категория не добавлена!</h1>'; не подходит, можно в else тоже вызвать редирект
    22.     на файл с выводом ошибок или реализовать вот так:
    23.    
    24.     $msg = ($result == true) ? $test : '<h1>Категория не добавлена!</h1>';
    25.     header("Location: ok.php?test={$msg}");
    26. */
    27. ?>
    Добавлено спустя 11 минут 53 секунды:
    Еще я бы советовал, обрубать выполнение скрипта, если не пришел $_POST['test'] сразу:

    Код (Text):
    1.  
    2. if (isset($_POST['test']))
    3.     $test = $_POST['test']; /* Данные получаемые из вне, нужно фильтровать */
    4. else
    5.     die('СТОП! Меня не обманешь!'); // или использовать редирект на страницу вывода сообщение (ok.php)
    Ах да, на странице ok.php параметр тест нужно ловить в $_GET['test']
     
  3. Svoloch_196

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

    С нами с:
    28 янв 2012
    Сообщения:
    227
    Симпатии:
    0
    Сделал вот так теперь не заносится вообще

    Код (Text):
    1.  
    2. <?php
    3. if (isset($_POST['test'])) $test = $_POST['test'];
    4. else
    5.    die('СТОП! Меня не обманешь!');
    6. ?>
     
  4. imoisey

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

    С нами с:
    27 янв 2014
    Сообщения:
    113
    Симпатии:
    0
    Если $_POST['test'] не передан, то PHP умрет и выведет сообщение. Сообщение вывел?

    Полный код файла (после изменений) и HTML формы покажите
     
  5. Svoloch_196

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

    С нами с:
    28 янв 2012
    Сообщения:
    227
    Симпатии:
    0
    Вот форма:
    Код (Text):
    1.  
    2. <form method="post" action="save.php">
    3. <input type="text" name="test" id="test" /><br>
    4. <a href="#">Ок</a>
    5. </form>
     
  6. imoisey

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

    С нами с:
    27 янв 2014
    Сообщения:
    113
    Симпатии:
    0
    По вашему коду, форма вообще не отправляется.

    Код (Text):
    1.  
    2. <form method="post" action="save.php">
    3. <input type="text" name="test" id="test" /><br>
    4. <input type="submit" name="sub" value="ОК">
    5. </form>
     
  7. Svoloch_196

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

    С нами с:
    28 янв 2012
    Сообщения:
    227
    Симпатии:
    0
    Знаю что не отправляется, случайно не то вставил

    Добавлено спустя 5 минут 15 секунд:
    Спасибо а подсказать можете:
    У меня как бы 2 формы то есть 2 файла
    1. index.php
    2. kld.php
    У меня в index.php вот такая форма
    Код (Text):
    1.  
    2. <form method="post" action="kld.php">
    3. <input type="site_iphone" name="test" id="test" /><br>
    4.     <button>Ок</button>
    5. </form>
    а в kld.php у меня вот такая форма:
    Код (Text):
    1.  
    2. <form method="post" action="save.php">
    3. <input type="site_iphone" name="test2" id="test2" /><br>
    4.     <button>Ок</button>
    5. </form>
    То есть как сделать что бы 2 формы сохранялись в базу в 1 строку

    Добавлено спустя 1 минуту 20 секунд:
    и подскажите я так подумал можно сделать в самой форме вывод ошибки ?!, если допустим не добавилась категория то выше написано Ошибка, а если добавилась то сделалась переадрисация на файл ok.php
     
  8. imoisey

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

    С нами с:
    27 янв 2014
    Сообщения:
    113
    Симпатии:
    0
    Не понял, что вы хотите.


    Можно, нужно обработчик писать на странице с формой. До вывода HTML кода, т.е в верху страницы.

    Логика примерно такая:

    Код (Text):
    1.  
    2. <?php
    3. if (isset($_POST['test'])) $test = $_POST['test']; // Фильтровать
    4. else
    5.    die('СТОП! Меня не обманешь!');
    6.    
    7. $db = mysql_connect("Хост","Пользователь","Пароль");
    8. if(!$db) {echo "База не подключена";}
    9. mysql_select_db("База");
    10. mysql_query("SET NAMES 'utf8'");
    11. mysql_query("SET CHARACTER SET 'utf8'");
    12. mysql_query("SET SESSION collation_connection = 'utf8_general_ci'");
    13.  
    14. $no_error = true; // Флаг для проверки ошибок.
    15. if(!empty($test))
    16.    $result = mysql_query("INSERT INTO `userinfo` (`test`) VALUES ('$test')");
    17.  
    18. if($result == true) // true можно без кавычек
    19.    header("Location: ok.php?test={$test}"); // Редирект на страницу ok.php с передачей параметра
    20. else
    21.    $no_error = false;
    22. ?>
    23. <!-- HTML код -->
    24. <? if(!$no_error) echo '<h1>Категория не добавлена!</h1>'; ?> <!-- Вставить в месте, где нужно показать ошибку -->