2017-05-09 72 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; 
    } 
相关问题