2009-12-16 6 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

는 * 거대한 * 보안 구멍이다. 그러지 마. – Amber

+0

그래,이 문제를 해결하고 내가 겪고있는 문제에 대한 권장 사항을 취할 것입니다. –

+0

id 열이 실제로'$ thisID'와 같은 shoeData 행에 DB가 있는지 확인 했습니까? 바보가, 나도 알아,하지만 – munch

답변

0

당신은 $update = $_GET['update'];을 가지고,하지만 바로 그 후, 당신은 $_POST을 사용하고 있습니다. 따라서 때마다 $_GET['update'] "예", 어떤 POST 설정 바르, 따라서 업데이트가 설정있어 모든 값으로 수행됩니다 될 에 존재하지 않을로 설정 - 주어진 요청 중 GET 또는 POST가, 둘은 공백.

기회는 당신이 실제로 두 곳의 하나 $_GET 또는 $_POST를 사용하기위한 것입니다 - 당신의 업데이트를 겪고 있지만 비어 있기 때문에 당신이 $_GET을 (비록 양식 제출/업데이트, 당신이해야 아마 정말 사용하려는처럼 소리가 난다 대신 POST 사용). 이 바보 보일 수 있습니다,하지만 당신은 $_GET$_POST 변수 혼란

+0

링크 * 버튼의 ACTION에 하드 코딩 된 설정에서 두 가지를 모두 가질 수 있습니까? 예 : <입력 유형 = 제출 작업 = 'http : //www.mysite.com/submitform? update = $ update'> 양식에 대한 POST 메서드를 사용하더라도 여전히 GET 변수가 하나 있습니다. – Kaji

0

? 하나를 사용하여 루프를 입력할지 여부를 확인하고 다른 하나를 사용하여 문자열을 채 웁니다. 당신은 단지 아니, id 당 하나 개의 항목을 회수 할거야 아마로

또한, 옆으로 작은대로 조각의 끝으로 당신의 SELECT 문은, 그것의 끝에 LIMIT 1을 추가하여 최적화 할 수 있습니까? 이를 확인하는 첫 살균하지 않고 SQL 쿼리에 직접`$의 _POST` 변수/포함

+0

솔직히 기본 PHP 강사로부터이 코드를 받았습니다. 그러나 코드가 이전 프로젝트에서 완벽하게 작동했는데 지금 빈 문서를 제출하는 이유는 확실하지 않습니다. 내가 루프를 입력하여 제출했는지 확인할 때 입력을 사용하면 입력 할 수 없으며 이유가 무엇인지 모르겠다.하지만 빈 칸이 삽입된다. –

+0

양식에 대해 설정된 메소드는 무엇입니까? – Kaji

+0

메소드가 게시되도록 설정되었으므로 루프를 입력해야하는 이유가 무엇인지 확실하지 않습니다. –

관련 문제