2013-12-15 3 views
-1

이것은 이번 주말에 작업 한 매우 기본적인 프로젝트의 마지막 구성 요소입니다. 이렇게하는 것이 더 낫고 안전한 방법이라는 것을 알고 있지만 나에게 제공되는 자원으로 제한됩니다. 나는 네가 인내심을 가져 주셔서 감사합니다.가장 간단한 방법으로 PHP 폼을 사용하여 mySQL 레코드 편집

그 말은 - 사용자가 데이터베이스 "Crosshill"아래의 "Employees"테이블에서 mySQL 레코드를 편집 할 수있는 코드를 작성하려고합니다. "employeeid", "firstname", "lastname"및 "department"의 네 가지 필드가 있습니다. 이 작업을 수행 한 유사한 코드를 발견했으며이를 프로젝트와 함께 작동하도록 수정하려고합니다.

"revise.php"라는 첫 페이지를 사용하여 첫 번째 단계를 수행 한 다음 "update.php"페이지를 사용하여 변경합니다. 첫 번째 페이지가 아래에 있으며 실행될 때 "항목을 찾을 수 없습니다"오류가 반환됩니다. 연결 코드가 잘 잡혀 코드 수정에 오류가 있다고 가정합니다.


revise.php 코드 :

<?php 
mysql_connect('####', 'Crosshill', '####') or die(mysql_error()); 
mysql_select_db("Crosshill") or die(mysql_error()); 

$UID = (int)$_GET['employeeid']; 
$query = mysql_query("SELECT * FROM Employees WHERE employeeid = '$UID'") or die(mysql_error()); 

if(mysql_num_rows($query)>=1){ 
    while($row = mysql_fetch_array($query)) { 
     $firstname = $row['firstname']; 
     $lastname = $row['lastname']; 
     $department = $row['department']; 

    } 
?> 
<form action="update.php" method="post"> 
<input type="hidden" name="ID" value="<?=$UID;?>"> 
First Name: <input type="text" name="ud_firstname" value="<?=$firstname?>"><br> 
Last Name: <input type="text" name="ud_lastname" value="<?=$lastname?>"><br> 
Department: <input type="text" name="ud_department" value="<?=$department?>"><br> 
<input type="Submit"> 
</form> 
<?php 

}else{ 
    echo 'No entry found. <a href="javascript:history.back()">Go back</a>'; 
} 
?> 

두 번째 페이지 (update.php) 내가 처음에이 오류가 있어요 이후도, 아직 문제 해결을 못 했어 하나. 이 첫 번째 페이지를 작동 시키면 다음 페이지로 이동합니다. 그러나 필요한 경우 "update.php"페이지의 코드가 있습니다. 나는 너무 거기에 오류가 있어요 겠지 :)


<?php 
mysql_connect('####, 'Crosshill', '####') or die(mysql_error()); 
mysql_select_db("Crosshill") or die(mysql_error()); 

$ud_ID = (int)$_POST["ID"]; 

$ud_firstname = mysql_real_escape_string($_POST["ud_firstname"]); 
$ud_surname = mysql_real_escape_string($_POST["ud_lastname"]); 
$ud_FBID = mysql_real_escape_string($_POST["ud_department"]); 


$query="UPDATE Employees 
      SET firstname = '$ud_firstname', lastname = '$ud_lastname', department = '$ud_department' 
      WHERE ID='$ud_ID'"; 


mysql_query($query)or die(mysql_error()); 
if(mysql_affected_rows()>=1){ 
    echo "<p>($ud_ID) Record Updated<p>"; 
}else{ 
    echo "<p>($ud_ID) Not Updated<p>"; 
} 
?> 

감사 등 지원 커뮤니티 것에 대해. 나는 이것이 당신의 대부분을위한 매우 기본적인 것들이지만, 어딘가에서 시작해야한다는 것을 알고 있습니다.

+0

이'employeeid' GET 매개 변수를'revise.php'에 전달했는데 올바른 행 ID입니까? –

+0

죄송하지만 무슨 뜻인지 이해하지 못합니다. 이 목적은 레코드를 편집 할 수있게하는 것입니다. 나는 코드 덩어리를 어딘가에 놓치고 있는가? 단 4 개의 필드와 1 개의 테이블 만 있으므로이 작업을 쉽게 수행 할 수있는 방법을 찾으려고했습니다. 모든 제안을 부탁드립니다. 당신의 도움을 주셔서 감사합니다! – WJB

+0

코드는'revise.php'가'employeeid' 매개 변수와 함께 호출되어야 함을 보여줍니다 - 그러면 데이터베이스에이 직원이 있고 그의 데이터로 채워진 양식이 표시되는지 확인합니다. –

답변

0

아주 좋은 출발을 보입니다. 이제 다음과 같이 삽입하는 방법을 배웁니다.

var_dump ($ variablename); 주사위;

소스 코드에서 한 번에 조금씩 디버깅 할 수 있습니다. 예를 들어 다음을 삽입하십시오 :

var_dump (mysql_fetch_array ($ query)); 주사위;

mysql이 반환하는 것을 확인하십시오.

이전 mysql에서 mysqli (개선)로 옮기고 싶을 것이다.

+0

도움을 주셔서 대단히 감사합니다. 약간의 디버깅이 도움이된다. 나는 그것을 사용하기 시작할 것이다. – WJB

+0

또한 -이 작은 프로젝트의 제약 중 하나는 "향상된"버전의 mysql에 액세스 할 수 없다는 것입니다. 처음부터 고통스럽고 오래된 코드를 사용하고 있기 때문에 좋은 자원을 찾기가 더 어려워졌습니다. 하지만 다시 - 사용할 수있는 도구로 작업해야합니다. – WJB

+0

안녕하세요. localy를 사용하고 있다면 php의 로컬 버전을 다시 설치하고 mysqli 라이브러리를 추가 할 수 있어야한다. 액세스 할 수없는 서버에서 PHP를 실행하고 있다면 모든 서버에이 라이브러리가 설치되어 있다고 생각할 것입니다. 또한 이것을 PHP 파일에 넣고 실행하여 기능이 무엇인지 확인하십시오.

\t \t \t \t Apache가 작동합니다.
\t
\t
\t

관련 문제