0

私は次の複数選択ボックスを使用してユーザーから入力を受け取ります。これは私のphpフォームに投稿され、データベースに追加されます。問題は、ユーザーが複数のフィールドを選択した場合、追加されるのは最初の選択だけです。私はまだ最初のフィールドしか取得していません。

ユーザーがインターネット、描画、数学などを選択した場合、データベースに入れたいと思います。現時点で挿入されるのはインターネット、またはリストで最初に選択されたものだけです。

私のフォームは次のようになります>>

    <form action="../files/addtodb.php" method="post" style="width:800px;">
    <select name="whatisdeviceusedfor[]" size="1" multiple="multiple" id="whatisdeviceusedfor[]">
        <option value="games">Games</option>
        <option value="takingphotos">Taking Photos</option>
        <option value="maths">Maths</option>
        <option value="reading">Reading</option>
        <option value="drawing">Drawing</option>
        <option value="internet">Internet</option>
        <option value="other">Other (enter more info below)</option>
      </select>
      <input type="submit" name="submit" id="submit" value="Submit">
      </form>

PHP側は次のようになります>>

 <?php

 // Implode what is device used for
$usedfor = $_POST['whatisdeviceusedfor'];
$arr = array($usedfor);
$whatisdeviceusedfor = implode(" ",$arr);



// Insert posted data into database
mysql_query("INSERT INTO itsnb_year5questionaire (whatisdeviceusedfor) VALUES   '$whatisdeviceusedfor'") or die(mysql_error()); 

   ?>
4

4 に答える 4

2

すでにselectで配列を取得しているので、$arr = array($usedfor);これを再度使用する必要はありません

ちょうど試して

$usedfor = $_POST['whatisdeviceusedfor'];

$whatisdeviceusedfor = implode(" ",$usedfor);

また

$usedfor = $_POST['whatisdeviceusedfor'];


$strings ='';
foreach ($usedfor as $item){
    $strings .=' '. $item;
}
echo $strings;

 <select name="whatisdeviceusedfor[]" size="5" multiple="multiple" id="whatisdeviceusedfor[]">
                                           ^^             
                                           ||change to option you want to select 

変更size="5"したので、一度に5つ選択します... 1つしかないので、一度に1つしか選択できません

結果

ここに画像の説明を入力してください

警告

コードは SQLインジェクションに対して脆弱 であり、mysql_*関数の使用は非推奨です。PDOまたはMySQLi

于 2012-12-04T14:40:28.033 に答える
1

SELECTまたはを介して複数のアイテムを選択した場合CHECKBOXES、フォームは配列のようなデータ構造を返します。挿入する前に、常にそのデータをループして各アイテムを個別にデータベースに格納するか、値を文字列に連結する必要があります。

于 2012-12-04T14:40:50.750 に答える
1

には配列が含まれているため$usedfor、直接使用しforeachて各値を値に保存できます。これを試してみてください。

<?php   
$usedfor = $_POST['whatisdeviceusedfor'];

foreach($usedfor as $arr){
mysql_query('INSERT INTO itsnb_year5questionaire(whatisdeviceusedfor) VALUES("'.$arr.'"') or die(mysql_error()); 

}
于 2012-12-04T14:47:24.177 に答える
1

size = "5"リストをよく見るために最初に変更する

次に、そのように作成してみてください(必要に応じて2番目のオプション)

if ($_POST) {

  // post data

 $games = $_POST["games"];
 $takingphotos = $_POST["takingphotos"];
 .
  ...


  // secure data

  $games = uc($games);
  $boats = uc($takingphotos);
  .
  ...
 }   


  // insert data into database

  $query = "INSERT INTO itsnb_year5questionaire (games, takingphotos,....)   
             VALUES('$games','$takingphotos',......)";
     mysql_query($query) or die(mysql_error());

    echo 'Thanks for your select!';
于 2012-12-04T14:54:50.557 に答える