2017-01-24 10 views
1

PHPを使用してMYSQLデータベースに挿入するHTMLフォームに入力した列と行を読み込もうとしています。PHPとHTMLフォームを使用してMYSQLに複数の入力を挿入する

私に次のエラーを与えている:

Undefined index: maintenance on line 28

Undefined index: outages

Undefined index: morningcheck

Undefined offset: 1

この作品を作るために方法についてのアドバイスをしてください。ここで

<?php 
require_once('config.php'); 

/*Open the connection to our database use the info from the config file.*/ 

$link = mysqli_connect('localhost', DB_USER, DB_PASSWORD, DB_NAME); 

if (!$link) { 
    die('Could not connect: ' . mysqli_connect_error()); 
} 

if(isset($_POST['add'])) {  
    foreach($_POST['address'] as $k => $address) { 
     $address = mysqli_real_escape_string($link, $address); 
     $morningcheck = mysqli_real_escape_string($link, $_POST['morningcheck'][$k]); 
     $outages = mysqli_real_escape_string($link, $_POST['outages'][$k]); 
     $maintenance = mysqli_real_escape_string($link, $_POST['maintenance'][$k]); 
     $sql="INSERT INTO demo (address,morningcheck, outages, maintenance) VALUES ('$address','$morningcheck','$outages','$maintenance')"; 
     if (!mysqli_query($link,$sql)) { 
     die('Error: ' . mysqli_error($link)); }  
    }} 

mysqli_close($link); 
?> 

は、HTML形式である:

<form action="process.php" method="post"> 

<style> 
td{ 
    border: 1px solid black; 
} 
</style> 
<input type="hidden" name="formID" value= "demo" /> 

<table> 
<tr> 
    <td> 
    <br> 
    <b>Email Address </><input type="text" name="address[]" /> 
    <input type="checkbox" name="morningcheck[]" value="morningcheck"> Morning Checks 
    <input type="checkbox" name="outages[]" value="outages"> Outages 
    <input type="checkbox" name="maintenance[]" value="maintenance"> Maintenance<br> 
    <br> 
    </td> 
</tr> 
<table> 

<table> 
<tr> 
    <td> 
    <br> 
    <b>Email Address </><input type="text" name="address[]" placeholder= "Email address 1" /> 
    <input type="checkbox" name="morningcheck[]" value="morningcheck"> Morning Checks 
    <input type="checkbox" name="outages[]" value="outages"> Outages 
    <input type="checkbox" name="maintenance[]" value="maintenance"> Maintenance<br> 
    <br> 
    </td> 
</tr> 
</table> 


<br> 
<input type="submit" value="Subscribe" name="add"/> 
<input type="submit" value="Unsubscribe" name="delete"/> 


</form>' 
+0

手順コードでは、ループ内でクエリを実行しないでください。ループ内でクエリを構築し、一度、後で実行するか、またはPDOに切り替えて特別な能力を使用します。 – Strawberry

答えて

0

問題があり、それが形に選択されていない場合、変数が存在しないため、エラーがスローされているので、あなたがテストする必要があるということです変数のために、これはSである何この

if(isset($_POST['add'])) {  
foreach($_POST['address'] as $k => $address) { 
    $address = mysqli_real_escape_string($link, $address); 
    $morningcheck =(isset($_POST['morningcheck'][$k]))? mysqli_real_escape_string($link, $_POST['morningcheck'][$k]):NULL; 
    $outages = (isset($_POST['outages'][$k]))?mysqli_real_escape_string($link, $_POST['outages'][$k]):NULL; 
    $maintenance = (isset($_POST['maintenance'][$k]))?mysqli_real_escape_string($link, $_POST['maintenance'][$k]):NULL; 
    $sql="INSERT INTO demo (address,morningcheck, outages, maintenance) VALUES ('$address','$morningcheck','$outages','$maintenance')"; 
    if (!mysqli_query($link,$sql)) { 
    die('Error: ' . mysqli_error($link)); }  

}}

ようなSQLにそれを置くとき「:」変数は(括弧内のビットが)少し前にvaiableを割り当てる実行設定されている場合はAyingのは、ある

グッドヌル運としてそれを設定されていない場合

キース

+0

Keith:何らかの理由でデータベースに何も追加していません。お知らせ下さい。 – san1234

+0

私の悪い。できます。ありがとう – san1234

+0

心配しないで、喜んで –

0

何を取得するには

<tr> 
    <td> 
    <br> 
    <b>Email Address </><input type="text" name="Example[][address]" placeholder= "Email address 1" /> 
    <input type="checkbox" name="Example[][morningcheck]" value="morningcheck"> Morning Checks 
    <input type="checkbox" name="Example[][outages]" value="outages"> Outages 
    <input type="checkbox" name="Example[][maintenance]" value="maintenance"> Maintenance<br> 
    <br> 

この方法でサーバ側は、あなたがこのようなデータを取得することができます:あなたはこのようなあなたのHTMLを変更する必要がありますしたい

if(isset($_POST["Example"]){ 
    foreach($_POST["Example"] as $example){ 
    $address = mysqli_real_escape_string($link, $example['address']); 
    $morningcheck = mysqli_real_escape_string($link, $example['morningcheck']); 
    $outages = mysqli_real_escape_string($link, $example['outages']); 
    $maintenance = mysqli_real_escape_string($link, $example['maintenance']); 
    $sql="INSERT INTO demo (address,morningcheck, outages, maintenance) VALUES ('$address','$morningcheck','$outages','$maintenance')"; 
    if (!mysqli_query($link,$sql))die('Error: ' . mysqli_error($link)); 
    } 
} 
+0

あなたはwouldntあなたにもかかわらずチェックボックスがチェックされていない場合、あなたはまだ同じ問題を抱えますか?実際の問題は、挿入されている変数が投稿されたフォームに存在しない場合、変数の存在を確認し、クエリを動作させるためにnull値(または他の値)を割り当てる方法が必要なことです。 –

+0

あなたはそうです。変数を使用する前に変数が設定されているかどうかを確認するだけです。 – Ollaw

+0

何らかの理由でデータベースに何も追加していません。助けてください – san1234

関連する問題