gpt4 book ai didi

php - 试图在数据库中存储多个值,但我的表单只注册一个(通过复选框)

转载 作者:行者123 更新时间:2023-11-28 23:44:15 24 4
gpt4 key购买 nike

希望我的标题不会太含糊。我正在做一个项目,将不同类型的对象存储在数据库中。该数据库由两张表组成,一张用于对象,一张用于不同的流派。一切正常,除了我的 html 表单似乎无法通过复选框存储多种类型。当我在使用表单时选中多个框时,只会存储最后一个选中的框。

我可以通过 Workbench 手动在执行 SQL 的一个对象上存储多个流派,但该表单似乎没有发送正确的内容。我肯定做错了什么。有人可以帮忙吗?提前致谢。

下面是生成表单的函数:

/**
* Content creation form
**/
public function formCreateObjectContent($output){

$sql = '
SELECT *
FROM `Genre`
';
$res = $this->db->ExecuteSelectQueryAndFetchAll($sql);

$html="
<div class='wrapper'>
<div id='object-edit'>
<form method='post'>
<fieldset>
<legend>Create new object</legend>

<p><label>Title:<br/><input type='text' name='title' required/></label></p>

<p><label>Cover-image:<br/><input type='text' name='image' value='default.png'/></label></p>

<ul>";
foreach($res as $val) {
$html .= "<li><input type='checkbox' name='genre' value='{$val->id}'/>$val->name</li>";
}
$html .= "</ul>

<p><label>Start Date:<br/><input type='text' name='start_date' value='0000-00-00'/></label></p>

<p><label>End Date:<br/><input type='text' name='end_date' value='0000-00-00'/></label></p>

<p><input type='submit' name='save' value='Save'/> <input type='reset' value='Reset'/></p>

<output><p>{$output}</p></output>
</fieldset>
</form>
</div>
</div>
";

return $html;
}

这里是 SQL 的函数:

/**
* Create content
**/
public function createObjectContent($title, $genre, $image, $start_date, $end_date, $created, $save){
$output = null;

if($save) {

// Insert content to database.
$sql = '
INSERT INTO `Object` (`title`, `image`, `start_date`, `end_date`, `created`) VALUES
(?, ?, ?, ?, NOW())
';
$params = array($title, $image, $start_date, $end_date);
$res = $this->db->ExecuteQuery($sql, $params);

if($res) {
// Get id of the created Object.
$sql2 = '
SELECT *
FROM `Object`
ORDER BY `created` DESC
LIMIT 1;
';
$params2 = array();
$res2 = $this->db->ExecuteSelectQueryAndFetchAll($sql2, $params2);

foreach($res2 AS $val){
$idObject = $val->id;
}

// Match object id with genre id.
$sql = '
INSERT INTO `Object2Genre` (`idObject`, `idGenre`)
VALUES (?, ?);
'
;
$url = empty($url) ? null : $url;
$params = array($idObject, $genre);
$res = $this->db->ExecuteQuery($sql, $params);
}

// Return result.
if ($res){
$output = header('Location:browse.php');
}

else {
$output = "<p>Object could not be created.</p>" . print_r($this->db->ErrorInfo(), 1) . '</pre>';
}
}
return $output;

最佳答案

您需要更改您的 HTML 代码并将 [] 添加到复选框名称:

<form action="#" method="post">
<input type="checkbox" name="check_list[]" value="C/C++"><label>C/C++</label><br/>
<input type="checkbox" name="check_list[]" value="Java"><label>Java</label><br/>
<input type="checkbox" name="check_list[]" value="PHP"><label>PHP</label><br/>
<input type="submit" name="submit" value="Submit"/>
</form>
<?php
if( isset($_POST['submit']) )
{
//to run PHP script on submit
if( !empty($_POST['check_list']) )
{
// Loop to store and display values of individual checked checkbox.
foreach($_POST['check_list'] as $selected)
{
echo $selected."</br>";
}
}
}
?>

(根据 http://www.formget.com/php-checkbox/ )

关于php - 试图在数据库中存储多个值,但我的表单只注册一个(通过复选框),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33861582/

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