У меня есть форма с несколькими вводами. Однако, когда я просто загружаю страницу, в базу данных добавляется пустой элемент. Даже когда я впервые вхожу на сайт, удаляет файлы cookie и все, он по-прежнему добавляет пустые данные в db. Почему?
<body> <hr></hr> <div style=" margin-left:auto; margin-right:auto; width:600px; " > <form method="post" action="admin.php" name="main" id="main"> Post to: <select name="wheretopost" onchange="testValue(this);" name="select" id="select"> <option value="blog">Blog</option> <option name='links' value="links">Links</option> <option value="apparel">Apparel</option> <option value="goods">Goods</option> </select> <div class="productKind" style="padding:10px;"> Mens<input type="radio" name="productKind" id="productKind" value="Mens"> Womens<input type="radio" name="productKind" id="productKind" value="Womens"> Kids<input type="radio" name="productKind" id="productKind" value="Kids"> </div> <div class="goodsKind" style="padding:10px;"> Stickers<input type="radio" name="goodsKind" id="goodsKind" value="Stickers"> Incense<input type="radio" name="goodsKind" id="goodsKind" value="Incense"> Patches<input type="radio" name="goodsKind" id="goodsKind" value="Patches"> </div> <br/> Subject:<br/> <input type="text" name="title" style="width:100%;" /> <br/> <br/> TextArea:<br/> <textarea name="txtarea" style="width:100%;" rows="30"> </textarea> <center> <input type="submit" style="width:300px;" /> </center> </form> </div> <?php $type = $_POST["wheretopost"]; $title = $_POST["title"]; $body = $_POST["txtarea"]; $date = date("F j, Y"); ?> <? $sql = "INSERT INTO `yoyo`.`posts` (`id`, `type`, `title`, `body`, `date`) VALUES (NULL, '$type', '$title', '$body', '$date');"; mysql_query($sql); ?> </body> </html>
обратите внимание, что страница, на которую он указывает, является ее собственностью. (Может ли это быть проблема?)
Перед тем, как вставить что-то, убедитесь, что запрос отправлен:
if ($_SERVER['REQUEST_METHOD'] == 'POST') { $type = $_POST["wheretopost"]; $title = $_POST["title"]; $body = $_POST["txtarea"]; $date = date("F j, Y"); $sql = "INSERT INTO `yoyo`.`posts` (`id`, `type`, `title`, `body`, `date`) VALUES (NULL, '$type', '$title', '$body', '$date');"; mysql_query($sql); }
я надеюсь, что это решение вашей проблемы
<?php if(isset($_POST['submit'])) { // write you php code for insert here }else{ ?> // all your html form contents <?php } ?>
это оно…
Каждый раз, когда вы загружаете страницу, вы выполняете следующий скрипт:
<?php $type = $_POST["wheretopost"]; $title = $_POST["title"]; $body = $_POST["txtarea"]; $date = date("F j, Y"); ?> <? $sql = "INSERT INTO `yoyo`.`posts` (`id`, `type`, `title`, `body`, `date`) VALUES (NULL, '$type', '$title', '$body', '$date');"; mysql_query($sql); ?>
Даже если вы ничего не публикуете, вы получаете пустые результаты из массива $ _POST и поэтому добавляете в базу данных пустые записи.
возможно, потому, что ваш php-код просто вызван в конце вашего .php?
<?php $type = $_POST["wheretopost"]; ...
просто возьмите этот php-код и оберните его между условием IF , например:
if (isset($_POST)) { .. code }
более того, вы можете написать конкретное условие IF, проверяя только ввод перед продолжением, например ( поместите его внутри вашей формы ): <input type="hidden" name="postit" value="1" />
if (isset($_POST) && isset($_POST["postit"]) && $_POST["postit"]==1) { .. code }
Просто используйте if (isset (…
<?php if(isset($_POST["wheretopost"]){ $type = $_POST["wheretopost"]; $title = $_POST["title"]; $body = $_POST["txtarea"]; $date = date("F j, Y"); $sql = "INSERT INTO `yoyo`.`posts` (`id`, `type`, `title`, `body`, `date`) VALUES (NULL, '$type', '$title', '$body', '$date');"; mysql_query($sql); } ?>
Этот метод работает, поскольку я помещаю все в одно условие:
if (!$conn) { die('Could not connect: ' . mysql_error()); $sql = "INSERT INTO emp_info (user_nam,f_fnam,l_nam,ref_id,web,comp,str,city,coun) VALUES ('$myvar','$myvar1','$myvar2','$myvar3','$myvar4','$myvar5','$myvar6','$myvar7','$myvar8')"; //echo $sql; //echo $html; mysqli_close($conn); } ?>