2016-08-30 2 views
0

배열을 작동시키는 데 몇 가지 문제가 있습니다. foreach loop을 올바르게 구성하는 방법과 올바르게 삽입 할 수 있도록 내 쿼리에 올바르게 추가하는 방법을 잘 모르겠습니다.배열 다중 값 텍스트 상자

이것은 어레이와 심지어 PHP에서의 첫 번째 시도입니다. 앞으로 나아갈 방법을 이해하는 데 도움이 필요하고 배열을 두려워하지 않아야합니다.이 작업을 올바르게 수행하려면 6 개의 텍스트 값을 받아서 테이블에 저장해야합니다. DB. 내 주요 문제는이 라인이 foreach($_POST['title'] as $idx => $title) 일을 얻을 수 있다고 생각하지만 잘못 될 수 있습니다 .. 다시 고맙습니다. 몇 가지 예를 살펴 보았지만 여전히 작동하도록 코드를 작성하거나 완전히 이해할 수는 없습니다.

감사

HTML 코드

<form method="post" name="add_record" id="add_record" action="EnterNewAlbum.php"> 
    <input type="text" name="title[]" value="title" size="32" required="required" /> 
    <input type="text" name="artist[]" value="artist" size="32" required="required" /> 
    <input type="text" name="country[]" value="country" size="32" required="required" /> 
    <input type="text" name="company[]" value="company" size="32" required="required" /> 
    <input type="text" name="price[]" value="200" size="32" required="required" /> 
    <input type="text" name="year[]" value="100" size="32" required="required" /> 
<br /><br /> 
<input type="submit" action="EnterNewAlbum.php" name="add_record" id="add_record" value="Add" /> 
</form> 

PHP 코드

여기
<?php 

if(isset($_POST['add_record'])) { 
include 'dbconnection.php'; 
$con = mysqli_connect($dbsrvname, $dbusername, $dbpassword, $dbname); 
echo "button press test"; 

foreach($_POST['title'] as $idx => $title) { 

$add_entry = mysqli_query($con , "INSERT INTO albumsID (`title`,`artist`,`country`,`company`,`price`,`year`) VALUES ('".$title."', '" . $_POST['artist'][$idx] . "', '" . $_POST['country'][$idx] . "' , '" . $_POST['company'][$idx] . "' , '" . $_POST['price'][$idx] . "' , '" . $_POST['year'][$idx] . "'  "); 


} 


} 


?> 
+0

foreach 루프 앞에서 삽입을 시도하십시오 (print_r ($ _ POST [ 'title'])); $ _POST [ 'title']이 실제로 연관 배열인지 알아보기 –

+0

양식 게시를 테스트하기 전에 코드 테스트를 해봤습니까? –

+1

또한 dbConnection과 $ con을 foreach에 넣지 마십시오. 각 반복은 DB에 다시 연결됩니다. 이 두 줄을 루프 외부에 배치하십시오. –

답변

2

당신이 당신을 도울 것입니다 희망 이동 :

<?php 
    if(isset($_POST['title'])) { 
     $title = $_POST['title']; 

     foreach ($title as $key => $value) { 

      //FOR YOUR CHECKING PURPOSE 
      echo $value.'-'. 
      $_POST['title'][$key].'-'. 
      $_POST['artist'][$key].'-'. 
      $_POST['country'][$key].'-'. 
      $_POST['company'][$key].'-'. 
      $_POST['price'][$key].'-'. 
      $_POST['year'][$key]; 

      //ADD QUERY 
      $title_data = $_POST['title'][$key]; 
      $artist_data = $_POST['artist'][$key]; 
      $country_data = $_POST['country'][$key]; 
      $company_data = $_POST['company'][$key]; 
      $price_data = $_POST['price'][$key]; 
      $year_data = $_POST['year'][$key]; 

      $your_query = mysqli_query($con , "INSERT INTO albumsID (`title,artist,country,company,price,year`) 
      VALUES ('".$title_data."', '".$artist_data."', '".$country_data."', '".$company_data."', '".$price_data."', '" .$year_data. "'"); 
     } 

    } 
?> 
+0

OP의 $ _POST [ 'title'] 배열은 연관성이없는 것처럼 보입니다. 따라서 $ key는 단순한 숫자 인덱스입니다 (OP가 의도하는 것이 확실하지 않습니다) –

0

를 유형의 각 입력으로 "텍스트 "제출할 수 있습니다. 하나의 값만을 가지므로 senso를 배열에 저장하려고하지는 않습니다. 동일한 배열 이름을 가진 여러 텍스트 입력의 이름을 지정하면 배열을 제출할 수 있습니다. 예를 들면 다음과 같습니다.

<input type="text" name="values[]" value="first" /> 
<input type="text" name="values[]" value="second" /> 

하지만 상황에 따라 적절하지 않은 것 같습니다.

원래 올바른 코드가 될 수 있습니다

HTML :

<form method="post" name="add_record" id="add_record" 

action="EnterNewAlbum.php"> 
    <input type="text" name="title" value="title" size="32" required="required" /> 
    <input type="text" name="artist" value="artist" size="32" required="required" /> 
    <input type="text" name="country" value="country" size="32" required="required" /> 
    <input type="text" name="company" value="company" size="32" required="required" /> 
    <input type="text" name="price" value="200" size="32" required="required" /> 
    <input type="text" name="year" value="100" size="32" required="required" /> 
<br /><br /> 
<input type="submit" action="EnterNewAlbum.php" name="add_record" id="add_record" value="Add" /> 
</form> 

PHP : 값의

<?php 

if(isset($_POST['add_record'])) { 
echo "button press test"; 


include 'dbconnection.php'; 
$con = mysqli_connect($dbsrvname, $dbusername, $dbpassword, $dbname); 
$add_entry = mysqli_query($con , "INSERT INTO albumsID (`title,artist,country,company,price,year`) VALUES ('".$_POST['title']."', '" . $_POST['artist'] . "', '" . $_POST['country'] . "' , '" . $_POST['company'] . "' , '" . $_POST['price'] . "' , '" . $_POST['year'] . "'  "); 
} 
?> 

배열이 속성 여러 = "복수"또는 체크 박스로와 선택 만 제출 템플릿은 다음과 같습니다.

<input type="checkbox" name="checkboxes_results[]" value="value1" /> 
<input type="checkbox" name="checkboxes_results[]" value="value2" /> 
+0

첫 번째 라인이 참이라고 생각하지 않습니다 : https : // johnrockefeller 참조 .net/html-input-forms-in-a-array-in-php/ –

+0

당신 말이 맞습니다. 나는 내 대답을 바로 잡았어. –