Таблица обновлений PHP Вставляет пустые поля - PullRequest
0 голосов
/ 16 декабря 2009

ОБНОВЛЕНИЕ: я сузил его, когда я избавился от этого тега в файле 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");
?>

Ответы [ 2 ]

0 голосов
/ 16 декабря 2009

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

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

0 голосов
/ 16 декабря 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...