2009-12-16 2 views
0

UPDATE: Я сузил его, когда я избавился от этого тега в файле header.php, все работает, может кто-то объяснит это.Таблица обновления 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-запрос без предварительной очистки/проверки их - это * огромное * отверстие безопасности. Не делай этого. – Amber

+0

Хорошо, я возьму любые рекомендации для исправления этого, а также проблемы, которые у меня возникают. –

+0

Вы проверили БД, чтобы убедиться, что есть строка в shoeData, где столбец id действительно равен '$ thisID'? Глупо, я знаю, но бывает – munch

ответ

0

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

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

+0

Это может быть возможно как в настройке, где она жестко закодирована в ACTION для ссылки или кнопки, но нет? например . Даже с помощью метода POST для формы все равно будет одна переменная GET. – Kaji

0

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

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

+0

Честно говоря, я получил этот код от базового инструктора php. Однако код работал отлично в предыдущем проекте, не уверен теперь, почему он отправляет пустые документы. Когда я использую сообщение, чтобы ввести цикл, чтобы увидеть, был ли он отправлен, он никогда не входит в него, только для GET работает, я не уверен, почему, но затем вставлены пустые поля. –

+0

Каков МЕТОД, установленный для формы? – Kaji

+0

методы, установленные для публикации, поэтому я не уверен, почему нужно даже работать, чтобы войти в цикл. –

Смежные вопросы