gpt4 book ai didi

php - 如果已提交 key ,则附加值(表单中的复选框) PHP

转载 作者:行者123 更新时间:2023-11-29 14:28:39 25 4
gpt4 key购买 nike

我有一个奇怪的问题。我有一个用于多种表单的 PHP 脚本。它接收所有请求,然后将数据放入数据库中适当的表中。就目前而言,它看起来像这样:

    $fields = "";
$values = "";

foreach ($_REQUEST as $key=>$value)
{


$key = str_replace(":","",$key);
$fields .= "$key,";
$values .= "'$value ',";
}


//remove the ending comma from $fields and $values
$fields = substr($fields, 0, -1);
$values = substr($values, 0, -1);

$sql = "INSERT INTO " . $survey . " ($fields) VALUES ($values)";
mysql_query($sql)
or die(mysql_error());

这效果很好。问题是,有些表格带有复选框(即一个人可以选择多个选项)。如果我使用 get 方法,查询字符串将如下所示:

www.somesite.php?V9=1&V9=2&V9=4

对于当前脚本,仅采用 4,因为它是最后一个值。

现在,我知道发生这种情况的原因是表单中定义复选框名称的方式。它说 name="V9"而不是 name="V9[]"但是,我无法更改表格。它们是由软件生成的,其想法是任何用户都可以创建一个 HTML 表单,将其指向脚本,并且它们的信息将记录在表格中。因此,更改 HTML 对我来说不是一个选择。

所以,我需要一种方法来检测 key 是否已提交,如果是,则追加该值。我试过这个:

    $fields = "";
$values = "";

foreach ($_REQUEST as $key=>$value)
{

//check to see if the key has already been used for multi-choice questions
$key_check = strpos($fields, "$key,");

if($key_check !== false){
$values = substr($values, 0, -2);
$values .= "\;$value ',";
}else{
$key = str_replace(":","",$key);
$fields .= "$key,";
$values .= "'$value ',";
}
}


//remove the ending comma from $fields and $values
$fields = substr($fields, 0, -1);
$values = substr($values, 0, -1);

$sql = "INSERT INTO " . $survey . " ($fields) VALUES ($values)";
mysql_query($sql)
or die(mysql_error());

但我得到了相同的结果。 $key_check 似乎从来都不是有效的。任何帮助,将不胜感激。这里有人有一个可用的 ASP 版本,可以做类似的事情,但它通过电子邮件发送数据,而不是将其保存在数据库中。

最佳答案

如果您使用 $_GET,可以尝试此操作:

function convertInput($qs=""){
$rtn = "";
$holdingArray = array();
if(trim($qs)!=""){
$vars = explode("&", $qs);
foreach($vars as $val){
$kv = explode("=", $val);
if(count($kv)==2){
if(isset($holdingArray[$kv[0]])){
$holdingArray[$kv[0]] .= "," . $kv[1];
}else{
$holdingArray[$kv[0]] = $kv[1];
}
}
}
$rtn = $holdingArray;
}
return $rtn;
}
print_r(convertInput($_SERVER["QUERY_STRING"]));

关于php - 如果已提交 key ,则附加值(表单中的复选框) PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10450042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com