2014-11-19 2 views
0

할 일 목록을 만들고 있는데,이 모든 것을 제외하고는 모든 것이 작동하고 있습니다. 양식을 통해 제출 된 입력을 반복해야합니다.이 입력은 동일한 이름을 가지므로 배열로 저장합니다. 이제 루프를 만들어 데이터베이스에 하나씩 보낼 수 있습니다. 여기에 내가 시도 내용은 다음과 같습니다동일한 이름을 가진 입력 배열을 반복합니다.

inputs

그러나 나는 아무 상관이 없다, 그래서 그것은 나에게 오류를 포기하지 않을거야 작동하지 않습니다

if (isset($_POST['submit'])) { 
    $labelValues = $_POST['labelValue[]']; 

    $i = 0; 

    while($i < sizeof($labelValues)) { 

     $stmt = $db->prepare("INSERT INTO tenta_table (text) VALUES (:text)"); 
     $stmt->bindParam(':text', $labelValues[$i]); 
     $stmt->execute(); 
     $i++; 
    } 
} 

HTML을, 입력은 빨간색으로 표시됩니다 계속해. 내가 여기서 어디로 잘못 가고 있니?

+0

이 게시물 가치가 올 수있는 곳에 HTML 부분을 게시 할 수 있습니까? –

+3

확실하지 않지만, 기억 하기엔 '$ labelValues ​​= $ _POST ['labelValue ']'이어야합니다. 나는 당신의'$ labelValues'가'null'이고 당신은 당신의 루프를 입력하지 않는다고 생각합니다. 당신은 당신이 일하고있는 것을 검증하기 위해'var_dump ($ _POST)'를해야한다. – evilive

+0

@AnikIslamAbhi 님이 사진을 추가했습니다. – Chrillewoodz

답변

3

$_POST['labelValue']은 올바르게 입력 이름을 지정하면 이미 배열이됩니다. <input type="text" name="labelValue[]" />은 POST에 labelValue라는 라벨을 만들고 배열합니다. 당신은 내가 위의 하나의 작은 변화

if (isset($_POST['submit'])) { 
    $labelValues = $_POST['labelValue']; 

    $i = 0; 

    while($i < sizeof($labelValues)) { 

     $stmt = $db->prepare("INSERT INTO tenta_table (text) VALUES (:text)"); 
     $stmt->bindParam(':text', $labelValues[$i]); 
     $stmt->execute(); 
     $i++; 
    } 
} 

와 현재의 코드를 사용할 수 있어야 거기에서

당신은 교체해야 $_POST['lableValue']보다는 $_POST['labelValue[]']

0

동일하게 변경 $labelValues

$labelValues = $_POST['labelValue[]']; 

$labelValues = $_POST['labelValue']; 
1

마지막 입력 요소 만 사용할 수 있습니다.

같은 이름의 입력을 여러 개 입력하려면 입력 이름 속성에 name="foo[]"을 사용하십시오. $_POST은 foo에 대한 배열을 입력 요소의 모든 값과 함께 포함합니다.

<form method="post"> 
    <input name="a[]" value="foo"/> 
    <input name="a[]" value="bar"/> 
    <input name="a[]" value="baz"/> 
    <input type="submit" /> 
</form> 

당신이 PHP는 기본적으로 그냥 폭발하고 원시 쿼리 문자열을 통해 foreach 문이 $_POST을 채울 수 있기 때문 []는 사용하지 않는 경우 $_POST는 마지막 값이 포함됩니다 이유. 이미 존재하는 이름/값 쌍을 발견하면 이전 이름을 덮어 씁니다. 폼이 같이있는 가정

$rawQueryString = file_get_contents('php://input')) 

:

그러나 여전히이 같은 원시 쿼리 문자열에 액세스 할 수 있습니다

<form method="post"> 
    <input type="hidden" name="a" value="foo"/> 
    <input type="hidden" name="a" value="bar"/> 
    <input type="hidden" name="a" value="baz"/> 
    <input type="submit" /> 
</form> 

$ rawQueryString 다음 a=foo&a=bar&a=baz 포함됩니다.

그런 다음 자신의 논리를 사용하여이를 배열로 구문 분석 할 수 있습니다. 순진한 접근 방식은 쿼리 문자열의 각 이름에 대한 배열 배열을 제공하는

$post = array(); 
foreach (explode('&', file_get_contents('php://input')) as $keyValuePair) { 
    list($key, $value) = explode('=', $keyValuePair); 
    $post[$key][] = $value; 
} 

이 될 것입니다.

또는 물론 이죠,하지만 지금까지 내가 기억하는대로 $ labelValues ​​= $ _POST [ 'labelValue를']해야하지이

<form method="post"> 
    <input name="a[0]" value="foo"/> 
    <input name="a[1]" value="bar"/> 
    <input name="a[2]" value="baz"/> 
    <input type="submit" /> 
</form> 
0

에 가장 간단한 방법. 나는 $ labelValues가 null이고 루프를 입력하지 않는다고 생각한다. var_dump ($ _POST)를 사용하여 작업 한 내용을 확인해야합니다.

관련 문제