我有一个html表单,有多个复选框(主题) 当用户(学生)选择主题时,StudentID将存储在MySQL表中,并在单独的列中但在同一个表中进行选择。
我的问题是:如果复选框值“等于”某个东西,我怎样才能将学生ID存储在新表格中?strpos会这样做吗?
例如:
if (strpos($cc,'252000') !== false) {
mysqli_query($dbcon,"INSERT INTO newtable (studentid,ckb)
VALUES ('$studentid','$cc')");
}
完整代码:
<?php
$host = 'localhost';
$port = 8889;
$username="root" ;
$password="root" ;
$db_name="db1" ;
$tbl_name="courses" ;
$tbl_name="studentinfo";
$tbl_name="newtable";
$dbcon = mysqli_connect("$host","$username","$password","$db_name") ;
mysqli_set_charset($dbcon, "utf8");
if (!$dbcon) {
die('error connecting to database'); }
$studentid = mysqli_real_escape_string($dbcon, $_GET['studentid']); //echo $studentid;
$name = $_GET['ckb'];
if(isset($_GET['ckb']))
{
foreach ($name as $courses){
$cc=$cc. $courses.',';
}
}
if (strpos($cc,'252000') !== false) {
mysqli_query($dbcon,"INSERT INTO newtable (studentid,ckb)
VALUES ('$studentid','$cc')");
echo "$cc, trtue";
}
HTML
<form action="cdb.php" method="get">
<input name="studentid" type="text" id="studentid" maxlength="11"value="Student ID" />
<input type="checkbox" name="ckb[]" value="251000-1"/>
<input type="checkbox" name="ckb[]" value="251000-2"/>
答案 0 :(得分:3)
好的,如果你绝对必须忽略所有良好的数据库设计实践,请试试这个。
不是创建逗号分隔列表并将其放入newtable,而是使用serialize()
函数将$_GET['ckb']
的内容放入此新行。至少通过这种方式,您可以使用unserialize()
获取一个数组,这样即使不更轻松地搜索数据库,也可以更轻松地操作数据。
您可以使用json_encode()
和json_decode()
的引用:
<?php
$host = 'localhost';
// I assume you moved apache to port 8889.
// so its irrelevant to mysql connection,
// good job you are not actually using this variable anywhere
$port = 8889;
$username="root" ;
$password="root" ;
$db_name="db1" ;
// fix so you have 3 variables and are not overwriting the same one
$tbl_name1="courses" ;
$tbl_name2="studentinfo";
$tbl_name3="newtable";
// remove unnecessary double quotes
$dbcon = mysqli_connect($host,$username,$password,$db_name) ;
// add some error checking that reports the actual error
if ( ! $dbcon ) {
echo 'Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error();
exit;
}
mysqli_set_charset($dbcon, "utf8");
if(isset($_GET['ckb'])) {
$studentid = mysqli_real_escape_string($dbcon, $_GET['studentid']);
$cc = serialize($_GET['ckb']);
$result = mysqli_query($dbcon,"INSERT INTO newtable
(studentid,ckb)
VALUES ('$studentid','$cc')");
if ( ! $result ) {
echo mysqli_error($dbcon);
exit;
}
}
?>
答案 1 :(得分:0)
下面,计算'ckb'复选框的总大小。然后。由于for循环,它将一直运行到总大小。 'studentid'来自文本框。它将插入到表中,直到循环条件为真。
<input type='button' name='type' id='bt1' value='Show Layer' onclick="setVisibility('subscribe_form');" />
<form action="%%GLOBAL_ShopPath%%/subscribe.php" method="post" id="subscribe_form" class="subscribe_form" name="subscribe_form" style="display:none">
<p>subscribe form</p>
</form>
答案 2 :(得分:0)
事实证明,使用此代码确实根据新表和不同表中的复选框对数据进行排序
if (strpos($cc,'251000') !== false) {
$sql3="INSERT INTO newtable (studentid, ckb)
VALUES ('$studentid', '$cc')";
echo 'true';
}
然而,似乎我必须检查sql3语句
if (!mysqli_query($dbcon,$sql3))
{
die('Error: ' . mysqli_error($dbcon));
}
我遇到的另一个错误是在其中一个sql语句中使用了诸如table之类的保留字。修复后,上面添加的代码解决了问题。