2017-03-15 17 views
1

私の現在の問題の修正をサイトで探していました。私は複数の選択があり、選択されたすべての情報がSqlデータベースに格納されていなければならないが、マルチセレクションで選択されているものはそれぞれ別の行にある必要があります。複数選択された値をデータベースに挿入

<form action="OpretRen.php" method="POST"> 
 
    <select name="area"> 
 
    <option value="Christiansminde">Christiansminde</option> 
 
    <option value="Boulevarden">Boulevarden</option> 
 
    </select> 
 
    
 
    <select name="rum[]" multiple="multiple"> 
 
     <option value="Værelse 3">Værelse 3</option> 
 
     <option value="Værelse 5">Værelse 5</option> 
 
     <option value="Værelse 7">Værelse 7</option> 
 
     <option value="Værelse 9">Værelse 9</option> 
 
     <option value="Værelse 11">Værelse 11</option> 
 
     <option value="Værelse 13">Værelse 13</option> 
 
     <option value="Værelse 15">Værelse 15</option> 
 
     <option value="Værelse 17">Værelse 17</option> 
 
     
 
     </select> 
 
    <input type="date" name="dato"> 
 
<input type="hidden" name="ren" value=""> 
 
<input type="checkbox" name="ren" value="Skal rydes op"> Skal Rengøres <br> 
 
     
 
    <input type="submit" name="opret"> 
 
</form>

たとえばあなたが「Boulevarden」複数の部屋の元の場所を選択することができるはず日付「3værelseは11værelse」、それがデータベース1行と2行を作成する必要があります"vêrelse3"とværelse11で、一方、場所と日付は変わらない。誰もがそこにこれが働くかもしれないどのようなアイデアを持っている場合は助けてください:)

答えて

0

をした場合、私はGoogleで見つけたソリューションのすべての種類を試してみましたが、オンラインが、何も働いていない、ここで

は私のPHP

$Area = $_POST['area']; 
$Rum = $_POST['rum']; 
$Dato = $_POST['dato']; 
$ren = $_POST['ren']; 

// indsætter information til databasen 
$sql = "INSERT INTO `oprydning`(`Bygning`, `Rum`, `Dato`, `Rent`) VALUES ('{$Area}','{$Rum}','{$Dato}','{$ren}')"; 

ですvar_dump($_POST);を作成すると、マルチセレクションは$_POST['rum']に配列を作成し、選択ごとにキーを作成します。 これをループするPHPコードを作成すると、複数の行を追加することができますが、残りは同じままです。

<?php 
$Area = $_POST['area']; 
$Dato = $_POST['dato']; 
$ren = $_POST['ren']; 

$lastKey = key(array_slice($_POST['rum'], -1, 1, TRUE)); 

$sql = "INSERT INTO `oprydning`(`Bygning`, `Rum`, `Dato`, `Rent`) VALUES "; 
foreach($_POST['rum'] as $k=>$Rum){ 
    $sql .= "('{$Area}','{$Rum}','{$Dato}','{$ren}')"; 
    if($k !== $lastKey){ 
     $sql .= ','; 
    } 
} 
// Run $sql 

ただし、ベストプラクティスとチュートリアルをお読みいただくことをおすすめします。

+0

私はあなたのコードを使用した場合、それはまだ文句を言わない仕事、私は次のエラー 警告:array_slice()パラメータ1はCで指定された配列、文字列であることを期待:行209の\ xamppの\ htdocsに\ skolehjem \ OpretRen.php 警告:key()は、パラメータ1が配列になることを期待しています。行209のC:\ xampp \ htdocs \ skolehjem \ OpretRen.phpで与えられます。 警告:C:\ xampp \ htdocsのforeach() \ skolehjem \ OpretRen.php 212行目 エラー:INSERT INTO 'oprydning'(' Bygning'、 'Rum'、' Dato'、 'Rent')VALUES とSQL構文エラー –

+0

@Phillipfyhn複数のオプションを選択しましたか? htmlcodeを変更しましたか? var_dump($ _ POST)を作成できますか?出力を共有しますか? –

0

これを試してください:あなたが望むようにあなたは、あなたの$ラム配列内の各値のためにDBに

foreach ($Rum as $item) { 
    $sql = "INSERT INTO `oprydning`(`Bygning`, `Rum`, `Dato`, `Rent`) VALUES ('{$Area}','{$item}','{$Dato}','{$ren}')"; 

    //insert $sql in db 

} 

が、これは新しいレコードを作成します。

+0

IVEは、あなたの答えを試みたが、theeseエラーが発生して終わる: お知らせ:未定義のインデックス:Cでの部屋:\ xamppの\ htdocsに\ skolehjem \ OpretRen.phpライン209 上の注意:foreachのために供給無効な引数()Cでの: \ xamppの\ htdocsに\ skolehjem \ OpretRen.phpライン上の209 注意:未定義の変数:CでのSQL:\ xamppの\ htdocsに\ skolehjem \ OpretRen.phpライン上の214 警告:mysqliの::クエリ():空のクエリC:\ xampp \ htdocs \ skolehjem \ OpretRen.php行214 注意:未定義の変数:sql in C:\ xampp \ htdocs \ skolehjem \ OpretRen.php 217 –

+0

@Phillipfyhnは私の答えを更新します 'foreach($ $ itemとしてのラム) ' – Nicolas

関連する問題