2009-09-06 2 views
1

나는 PHP에 익숙하지 않다.초급 질문 PHP에 관하여. 양식 제출 후 여러 값을 되 찾는 방법

나는 이와 같은 형태를 갖고 싶어 : 버튼을 클릭

Name <TextField> Corresponding pic: <dropdown> hiddenID (not shown to user) 
Name <TextField> Corresponding pic: <dropdown> hiddenID (not shown to user) 
Name <TextField> Corresponding pic: <dropdown> hiddenID (not shown to user) 
Name <TextField> Corresponding pic: <dropdown> hiddenID (not shown to user) 
Name <TextField> Corresponding pic: <dropdown> hiddenID (not shown to user) 

Update Values (button) 

후 (양식 제출) 나는 모든 값을 얻을 것이다 방법에 대해 설명합니다. 나는 각각의 값에 대해 데이터베이스 테이블을 업데이트하려고한다. 나는 5 개 값이이 예에서

update user_tables name=<newnameSubmitted>, pic=<valueFromDropDown> 
where id=<hiddenIdGottenBack> 

같은 쿼리는 내가 해당 값으로 위의 업데이트 문 5 번 실행 할 수있을 것입니다 ... 어떻게 될 것입니다.

제 혼란을 치우거나 나 좀 도와 줄 튜토리얼을 안내해주십시오.

답변

2
<? 
    $cmd=$_POST["cmd"]; 

    if(isset($cmd)) { 
    $name=array_map('mysql_escape_string', $_POST["name"]); 
    $sel=array_map('mysql_escape_string', $_POST["sel"]); 
    for($i=0;$i<count($name);$i++) { 
      $sql="update TABLENAME set col1='{$name[$i]}' where col2='{$sel[$i]}'"; 
    } 

?> 

<form method="post" action="sample.php"> 
Value1 <input type="text" name="name[]"/> <select name="sel[]">...</select> 
Value1 <input type="text" name="name[]"/> <select name="sel[]">...</select> 
Value1 <input type="text" name="name[]"/> <select name="sel[]">...</select> 
Value1 <input type="text" name="name[]"/> <select name="sel[]">...</select> 
Value1 <input type="text" name="name[]"/> <select name="sel[]">...</select> 
<input type="submit" name="cmd" value="Submit"/> 
</form> 
+3

SQL INJECTION! 브라우저의 값을 SQL에 직접 입력하지 마십시오. – JasonWoof

+0

이 예제에서 벗어나는 중요한 점은 HTML에서 값 배열을 가져 오기 위해 []를 사용하는 것입니다. 하지만 그래, 입력을 이스케이프 :) –

+0

아, 덕분에, 인코딩 주셔서 감사하지만, mysql_escape_string()은 mysql_real_escape_string()에 찬성하여 반대됩니다 – JasonWoof

0

PHP에서 제출 된 모든 값은 $ _POST 배열, $ _POST [ 'name'] 등에 저장됩니다 (게시물을 사용하고 있다고 가정 할 경우 get을 사용하지 않습니다). 따라서 배열의 모든 값을 반복해야합니다 .

0

나는 간단하게하기 좋아, 그래서 난 그냥과 같이, 내 양식 필드를 예측 이름을 지정 :

for($i = 0; $i < 5; ++$i) { 
    if(isset($_REQUEST["name$i"]) && isset($_REQUEST["pic$i"])) { 
     # update database with those values 
    } 
} 
:

<input name="name1" ...> <input name="pic1" ...> 
<input name="name2" ...> <input name="pic2" ...> 

그런 다음 PHP에서, 내가 루프를 처리

+0

이 방법을 사용할 때 유일한 문제는 입력 수가 변경되면 코드를 수정해야한다는 것입니다. –

+0

글쎄, 내가 이런 일을했을 때, 나는 php로 입력리스트를 생성했다. 그래서 PHP는 이미 얼마나 많은 필드가 있는지 알고있다. 입력 수가 클라이언트 쪽에서 동적 인 경우 (즉, 다른 입력을 만들기위한 javascript 단추가있는 경우) 조금 다르게 적용하는 것이 더 바람직 할 수 있습니다. 비록 그들이 항상 연속적이라면 ($ i = 0; isset ($ _REQUEST [ "name $ i"]); ++ $ i) – JasonWoof

0
  1. 배열 사용 방법을 익히십시오.
  2. 배열 형식 읽기 학습

    echo '

    '; print_r($_POST); echo '
    ';

  3. $ _POST가 배열임을 이해하십시오.

  4. extract - 배열에서 사용되는 함수로 배열 키를 변수 이름으로 사용하고 해당 키에 할당 된 값을 변수 값으로 사용합니다.

    추출 ($ _ POST);

  5. 보안상의 이유로 mysql_prepare 또는 $ mysqli-> prepare를 사용해야합니다.

+0

나는 $ _POST에 extract()를 호출하는 것은 매우 나쁜 생각이라고 생각한다. .매우 조심스럽고 엉망이되지 않으면 보안 문제가 발생하지 않습니다. 기본적으로 register_globals와 같습니다. – JasonWoof