2016-08-30 5 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ループの前に)die(print_r($ _ POST ['title']));を挿入してみてください。 $ _POST ['title']が実際に連想配列であるかどうかを確認する –

+0

フォーム投稿をテストする前にコードのテストを試みましたか? –

+1

また、dbconnectionインクルードと$ conをforeachに入れないでください。各反復はDBに再接続します。これらの2行をループ外に配置します。 –

答えて

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

タイプの各入力して「テキストあなたは提出できます値が1つだけなので、配列に格納しようとするセンソはしません。同じ配列名で複数のテキスト入力に名前を付けると、配列を送信できます。たとえば、

<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-array-in-php/ –

+0

あなたが正しいです。私は私の答えを訂正しました。 –

関連する問題