2017-05-09 54 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

您可以使用foreach循環遍歷所有$ _POST變量。如果你首先使用'print_r($ _ POST);'來查看$ _POST有什麼,它將會幫助你很多。 foreach foreach的一個例子($ _ POST爲$ currentData){fwrite($ open,$ currentData。「\ r \ n」)}' –

+0

您需要'name =「zona []」 –

回答

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個複選框有相同的名稱。當所有這三個選項都被選中時,最後的選擇將覆蓋先前的選擇值。

因此,無論它們的名稱更改爲不同的名稱或使名稱爲數組,如:

<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文件,我使用implode函數來使用逗號粘貼zona。無論如何,你可以修改這個以適應你的要求。

/************************* 
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; 
    } 
相關問題