2012-05-05 3 views
0

내 웹에서 편집 메뉴를 만들려고합니다. 그래서 제품 페이지를 편집 페이지로 안내합니다. 내가 헷갈리는 부분은 제품 페이지에서 productID를 가져 와서 편집 페이지에서 사용하는 방법입니다. 다음의 제품에 내 코드PHP에서 다른 파일에서 ID를 가져 오는 방법은 무엇입니까?

<?php $query= "SELECT * FROM game"; 
$rs = mysql_query($query); 
while($data = mysql_fetch_array($rs)) { ?> 
<div class="gameBox"> 
    <div style="margin:5px;"> 
     <?php echo "<image src=\"images/".$data['gameId'].".png\" alt=\"gameImage\" </image>"?> 
     <div class="cleaner"></div> 
     <div class="myLabel">Name</div><div>: <?php echo $data['gameName'];?></div> 
     <div class="myLabel">Developer</div><div>: <?php echo $data['gameDeveloper']; ?></div> 
     <div class="myLabel">Price</div><div>: $ <?php echo $data['gamePrice']; ?></div> 
     <br /> 
     <a href="edit.php" <?php $id=$data['gameId'];?>><input type="button" value="Edit"/></a> 
     <a href="<!-- Delete -->"><input type="button" value="Delete"/></a> 
    </div> 
</div> 
<?php } ?> 

내가이 편집 페이지에 액세스하려고하면이 편집 페이지

<?php include("connect.php"); 
$id[0] = $_REQUEST['id']; 
$query = "SELECT * FROM game WHERE gameId=".$id.""; 
$rs = mysql_query($query); 
while($data = mysql_fetch_array($rs)) { ?> 
    <form action="doUpdate.php" method="post"> 
     <?php echo "<image src=\"images/".$id.".png\" alt=\"gameImage\" </image>"?> 
     <div class="cleaner"></div> 
     <div class="myLabel">Name</div><div>: <input type="text" value="<?php echo $data['gameName'];?>" id="gameName" name="gameName"/></div> 
     <div class="myLabel">Developer</div><div>: <input type="text" value="<?php echo $data['gameDeveloper'];?>" id="gameDeveloper" name="gameDeveloper"/></div> 
     <div class="myLabel">Price</div><div>: <input type="text" value="<?php echo $data['gamePrice'];?>" id="gamePrice" name="gamePrice"/></div> 
     <br/> 
     <div id="txtError"> 
     <!--error message here--> 
     </div> 
     <input type="submit" value="Submit"/> 
     <a href="product.php"><input type="button" value="Cancel"/></span></a> 
<?php } ?> 

에 내 코드, 그것은이 편집에

"Undefined index:$id[0] = $_REQUEST['id'];" 

말했다 오류가있다 페이지. 누구도 도와 줄 수 있습니까?

+1

스크립트는 SQL 삽입에 취약합니다. 최소한 $ int를 정수로 캐스팅하기 위해'intval()'을 호출하십시오 :'$ id = intval ($ _REQUEST [ 'id']);' –

+0

@Michael : 저는 보통'$ id = (int) $ _ GET [...]'- 어떤 것이 더 나은지 어떤 생각일까요? 똑같다? – jedwards

+0

@jedwards 그들은 기본적으로 동일합니다. 필요한 경우 기수 옵션으로'intval()'을 사용하십시오. 실제로, 그것이 예상대로 정수인지 확인하는 것이 가장 좋습니다. 그렇지 않은 경우 데이터베이스에 대해 전혀 작업하지 마십시오. –

답변

1

<a href...>에 페이지, 양식 및 쿼리 문자열 사이에 데이터를 전달하는 두 가지 방법이 혼동스러워 보입니다.

:

데이터 <input> 형 요소 (또는 친구)에서와 <form...> 태그 내에있다. 예를

<form action="handler.php"> 
    <input type="text" name="var1" /> 
    <input type="text" name="var2" /> 
    <input type="submit"> 
</form> 

일반적으로 POST를 통해 전달 $_POST를 통해 PHP에 액세스에 대한

. 예를 들어,

<a href...>에서 쿼리 문자열로 전달 :

<?php 
echo $_POST['var1']; // First text box 
echo $_POST['var2']; // Second text box 

링크 :

는 예를 들어, 위에서 언급 한 텍스트 상자의 값은 같은 것을 사용하여 액세스 할 것

<a href="http://www.yoursite.com/index.php?var1=foo&var2=bar">Click Me</a> 

일반적으로 GET을 통해 전달되며 PHP로 $_GET을 통해 액세스합니다.

는 예를 들어, 위에 제공된 쿼리 문자열의 값은

<?php 
echo $_GET['var1']; // "foo" 
echo $_GET['var2']; // "bar" 

같은 것을 사용하여 액세스 할 것입니다 당신이 입력 버튼에 하이퍼 링크하는 것 같은 그래서이 경우에는 보이는 - 아니다 일반적인 방법으로는 일을 할 수 있지만,이 변경하여 해결하는 것입니다 :에

<a href="edit.php" <?php $id=$data['gameId'];?>><input type="button" value="Edit"/></a> 

을이

<a href="edit.php?id=<?php echo $data['gameId'];?>"><input type="button" value="Edit"/></a> 

그런 다음 edit.php의 변수를 $_GET['id']으로 참조하십시오.

그러나 당신은 정수와 아무것도, 같은 될 것 알고 있기 때문에 :

$id = (int)$_GET['id']; 

는 (적어도 그 변수에 대한) 충분한 위생입니다.

마지막으로 $id[0]에 변수를 할당하고 난 다음에 $id을 참조합니다. 변수를 $id[0]에 할당하는 것은 $id에 할당하는 것과 같지 않습니다. $id은 전자의 배열이고 후자의 정수입니다. 제게는 [0] w.r.t를 떨어 뜨릴 수 있습니다. $id (edit.php)

+0

나는 $ id = $ _REQUEST [ 'id'];를 사용했습니다. 배열을 포함하지 않으며 너무 작동합니다 :). 고마워 젠장 – greenthunder

+0

아무런 문제가 없지만 마지막 단락의 두 번째 또는 @ Michael의 주석에서 변수를 살균하는 것에 대한 제 요점을 읽으십시오. – jedwards

+0

나는 배우려고 노력할 것이다. 나는 여전히 약간 혼동 스럽다. – greenthunder

1

당신의 편집 URL에 매개 변수로 ID를 추가 : 또한

<a href="edit.php?id=<?php echo $data['gameId'];?>"><input type="button" value="Edit"/></a> 

당신의 edit.php의 상단 :

$id = $_REQUEST['id']; 
+0

$ _REQUEST는 쿼리 문자열과 함께 작동하지 않습니다. –

+0

@ShaikhFarooque [Yes it will] (http://us3.php.net/manual/en/reserved.variables.request.php), 명시 적으로'$ _GET'을 사용하는 것이 좋습니다. –

+1

나는 ''태그 내의 할당은 오타입니다. – jedwards

1
당신은 쿼리 문자열을 통과 할 수

<a href="edit.php?<?php $id=$data['gameId'];?>> 

이 경우 PHP 코드가

으로 변경됩니다.
$id[0] = $_SERVER['QUERY_STRING']; 
+0

'$ _GET'을 의미하고'$ _QUERYSTRING'은 없습니다. –

+0

작동, 감사합니다 :) – greenthunder

관련 문제