2017-05-09 9 views
0

私は、TXTデータベース内の値を書き込むPHPフォームを作っています。 フォームには、複数のチェックボックス(Zona)があり、より多くのオプションで選択できます。選択したすべての値をデータベースに書き込むにはどうすればよいですか?複数のチェックボックスの値をtxtデータベースに挿入するにはどうすればよいですか?

マイコード:

フォーム:私は、複数のチェックボックス列を保存することができますどのように

<html> 
<body> 
    <form enctype="multipart/form-data" action="action.php" method="post"> 
    <label for="guasto">Guasto</label> 
     <input type="text" id="guasto" name="guasto" /> 
    <input type="checkbox" name="zona" value="zona 1"> zona 1<br> 
    <input type="checkbox" name="zona" value="Zona 2" > zona 2<br> 
    <input type="checkbox" name="zona" value="Zona 3" > zona 2<br> 
    <label for="causa">Causa Guasto</label> 
     <input type="text" id="causa" name="causa" /> 
    <label for="risoluzione">Tempi di risoluzione</label> 
     <input type="text" id="risoluzione" name="risoluzione" /> 

     <input type="submit" name="Salva" value="Salva" /> 
    </form> 
</form> 
</body> 
</html> 

Action.php

include("setting.php"); 



/************************* 
SAVE 
**************************/ 
if(isset($_POST['Salva'])) 
    { 
    if(!is_writable($my_database_txt)){ 
     exit("The file does not have write permissions!"); 
     } 
    // 
    $bad_char = array("|", "\r\n", "\r", "\n"); 
     $guasto = str_replace($bad_char, "", $_POST['guasto']); 
     $zona = str_replace($bad_char, "",$_POST['zona']); 
     $causa = str_replace($bad_char, "", $_POST['causa']); 
     $risoluzione = str_replace($bad_char, "", $_POST['risoluzione']); 
    // 
    $open = fopen($my_database_txt, "a+"); 
    // scriviamo i dati separati dal carattere separatore 
    fwrite($open, $guasto."|".$zona."|".$causa."|".$risoluzione."\r\n"); 
    // 

    fclose($open); 

    // 
    header("location: vista.php"); 
    exit; 
    } 

+0

すべての$ _POST変数をループするのにforeachを使用できます。 'print_r($ _ POST);'を使うと、$ _POSTの内容を知ることができます。 –

+0

あなたは 'name =" zona [] "'を必要とします。これは、 'foreach'の例です。' foreach($ _ POSTを$ currentData){fwrite($ open、$ currentData。 "\ r \ n" –

答えて

1

複数のcheckboxを扱う場合は、常に注意してください。それらに複数の値を保持できるように、配列に異なる名前または名前を付ける必要があります。あなたの場合:

<input type="checkbox" name="zona" value="zona 1"> zona 1<br> 
<input type="checkbox" name="zona" value="Zona 2" > zona 2<br> 
<input type="checkbox" name="zona" value="Zona 3" > zona 2<br> 

これらの3つのチェックボックスは同じ名前です。これらの3つすべてがチェックされると、最後の選択が前の選択値を上書きします。

だから、どちらか別の名前に自分の名前を変更するか、のような配列として名を作る:

<input type="checkbox" name="zona[]" value="zona 1"> zona 1<br> 
<input type="checkbox" name="zona[]" value="Zona 2" > zona 2<br> 
<input type="checkbox" name="zona[]" value="Zona 3" > zona 2<br> 

とあなたのような提出フォームにその値を得ることができます:ここ

$zona = $_POST['zona']; 

$zonaは配列であります個々の要素を取得するには、foreach()を使用します。

0

値を配列形式で保存するには、チェックボックス名にzona []を使用する必要があります。それ以外の場合、$ _POSTは常に最後にチェックされた項目を返します。以下は、完全に修正されている

<html> 
<body> 
    <form enctype="multipart/form-data" action="action.php" method="post"> 
    <label for="guasto">Guasto</label> 
     <input type="text" id="guasto" name="guasto" /> 
    <input type="checkbox" name="zona[]" value="zona 1"> zona 1<br> 
    <input type="checkbox" name="zona[]" value="Zona 2" > zona 2<br> 
    <input type="checkbox" name="zona[]" value="Zona 3" > zona 2<br> 
    <label for="causa">Causa Guasto</label> 
     <input type="text" id="causa" name="causa" /> 
    <label for="risoluzione">Tempi di risoluzione</label> 
     <input type="text" id="risoluzione" name="risoluzione" /> 

     <input type="submit" name="Salva" value="Salva" /> 
    </form> 
</form> 
</body> 
</html> 

Action.phpファイルについては、私はカンマを使用して透明帯を接着する破関数を使用します。とにかく、あなたの要件に合わせてこれを変更することができます。

/************************* 
SAVE 
**************************/ 
if(isset($_POST['Salva'])) 
    { 
    if(!is_writable($my_database_txt)){ 
     exit("The file does not have write permissions!"); 
     } 
    // 
    $bad_char = array("|", "\r\n", "\r", "\n"); 
     $guasto = str_replace($bad_char, "", $_POST['guasto']); 

     //Note: glue the array using comma through implode function 
     $zona = str_replace($bad_char, "",implode(",", $_POST['zona']); 
     $causa = str_replace($bad_char, "", $_POST['causa']); 
     $risoluzione = str_replace($bad_char, "", $_POST['risoluzione']); 
    // 
    $open = fopen($my_database_txt, "a+"); 
    // scriviamo i dati separati dal carattere separatore 
    fwrite($open, $guasto."|".$zona."|".$causa."|".$risoluzione."\r\n"); 
    // 

    fclose($open); 

    // 
    header("location: vista.php"); 
    exit; 
    } 
関連する問題