Таблица обновлений PHP Вставляет пустые поля

0

UPDATE: я сузил его, когда я избавился от этого тега в файле header.php, все работает, может кто-то объяснит это.

<script src="#" type="text/javascript"></script>

Привет, у меня очень неприятная проблема с моим PHP-кодом. Я пытаюсь обновить базу php из формы, когда я это делаю, но поля в базе данных становятся пустыми после отправки. Пожалуйста помоги! Вы можете просмотреть его в действии здесь http://andcreate.com/shoelace/admin/edit1.php нажмите на списки справа, чтобы отредактировать их и посмотреть, что произойдет.

<?php
include("header.php");

echo "<h2>Edit Posts</h2>";

echo "<div id='editNav'>";
echo "<p>Choose Post to Edit</p>";




//////////GET ALL RECORDS AND BUILD A NAV SYSTEM FROM THEM////////
$results = mysql_query("SELECT * FROM shoeData ");



while($row = mysql_fetch_array($results)){




 $id = $row['id'];
 $name = $row['name'];
 $about = $row['about'];

 echo "$date <a href=\"" . $_SERVER['PHP_SELF'] . "?id=$id" . "\">" . substr($name, 0, 40) . " </a> <br/> ";


 }

$thisID = $_GET['id'];

if(!isset($thisID)){
 $thisID = 22;

}




//////////FINISH ALL RECORDS AND BUILD A NAV SYSTEM FROM THEM////////

echo "</div>";



///////IF USER SUBMITS CHANGES UPDATE THE DATABASE//////////
//has user pressed the button
$update = $_GET['update'];

if($update == "yes") {

 $name = $_POST['name'];

 $about =  $_POST['about'];

 $company =  $_POST['company'];

 $buy =  $_POST['buy'];



 //update data for this record
 $sql = "UPDATE shoeData SET 
 name = \"$name\",
 about = \"$about\",
 company = \"$company\",
 buy = \"$buy\"
 WHERE id= $thisID";
 $thisUpdate = mysql_query($sql) or die(mysql_error());


}




///////END IF USER SUBMITS CHANGES UPDATE THE DATABASE//////////




/////////// HERE WE GET THE INFO FOR ONE RECORD ONLY//////// 
$results = mysql_query("SELECT * FROM shoeData WHERE id=$thisID");



while($row = mysql_fetch_array($results)){


 $name = $row['name'];

 $about = $row['about'];

 $company = $row['company'];

 $buy = $row['buy'];

}
//////////////FINISH GETTING INFO FOR ONE RECORD ONLY/////////////



?>

<form name="formS" method="post" action="<?php echo $_SERVER['PHP_SELF']."?id=$thisID&update=yes";?>">

Name
<p>
<input type="text" name="name" id="name" value="<?php echo $name;?>" />
</p>
About
<p>
<input type="text" name="about" id="about" value="<?php echo $about;?>" />
</p>
Company
<p>
<input type="text" name="company" id="company" value="<?php echo $company;?>" />
</p>
Name
<p>
<input type="text" name="buy" id="buy" value="<?php echo $buy;?>" />
</p>



<p>
<input type="submit" name="submit" id="submit"  />
</p>




</form>
<p><a class="delete" href="delete.php?id=<?php echo $thisID;?>">Delete this post</a></p>

<?php
include("footer.php");
?>
  • 1
    Включение переменных $_POST непосредственно в SQL-запрос без предварительной их очистки / проверки - огромная дыра в безопасности. Не делай этого.
  • 0
    Хорошо, я приму любые рекомендации для решения этой проблемы, а также проблему, с которой я столкнулся.
Показать ещё 4 комментария
Теги:

2 ответа

0
Лучший ответ

У вас есть $update = $_GET['update'];, но сразу после этого вы используете $_POST. Данный запрос представляет собой либо GET, либо POST, а не оба - таким образом, когда $_GET['update'] установлен на "yes", не будет никаких настроек POST, и, таким образом, обновление будет выполнено со всеми значениями, которые он устанавливает пустой.

Скорее всего, вы намереваетесь использовать либо $_GET, либо $_POST в обоих местах - поскольку ваши обновления проходят, но пустые, похоже, что вы хотите использовать $_GET (хотя для отправки/обновления формы, вероятно, вы, вероятно, действительно используете POST).

  • 0
    Было бы возможно иметь оба в настройке, где это жестко закодировано в ДЕЙСТВИИ для ссылки или кнопки, хотя, нет? например, <input type = submit action = ' mysite.com/submitform?update=$update '>. Даже с методом POST для формы все равно будет одна переменная GET.
0

Это может показаться глупым, но вы путаете переменные $_GET и $_POST? Вы используете один, чтобы проверить, нужно ли вводить цикл, а другой - для заполнения строки.

Кроме того, в качестве второстепенного, ваш оператор SELECT в конце фрагмента может быть оптимизирован путем добавления LIMIT 1 до конца, так как предположительно вы будете только отзывать одну запись за id, нет?

  • 0
    Честно говоря, я получил этот код от основного инструктора PHP. Однако код отлично работал в предыдущем проекте, но теперь не уверен, почему он представляет пустые документы. Когда я использую сообщение, чтобы войти в цикл, чтобы увидеть, было ли оно отправлено, оно никогда не входит в него, только GET работает для меня, я не уверен, почему, но тогда вставляются пустые поля.
  • 0
    Какой метод установлен для формы?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню