我无法在月份中插入值。我每个月有12列。我的代码只存储1月份的值。如果我使用开关可以吗?
if ($_GET['do'] == 'insert')
{
$p_aid = $_GET['id'];
$t_no = $_POST['t_no'];
$t_month = $_POST['t_month']; //dropdown
$t_value = $_POST['t_value']; //value based on month selected
$t_year = $_POST['t_year'];
$sql = "INSERT INTO tbl_detail (p_aid,t_not_year) ";
$sql .= "VALUES ($p_aid,'$t_no''$t_year')";
mysql_query($sql);
switch ($t_month) {
case $t_month = "Jan";
$sql = "UPDATE tbl_detail SET t_jan = '$t_value'";
$sql .= "WHERE p_aid = $p_aid AND t_no = $t_no";
break;
case $t_month = "Feb";
$sql = "UPDATE tbl_detail SET t_feb = '$t_value'";
$sql .= "WHERE p_aid = $p_aid AND t_no = $t_no";
break;
mysql_query($sql);
}
redirect("basicview.php?id=$p_aid&type=success&msg=new+row+added");
}
答案 0 :(得分:3)
首先,您的案例陈述不正确。
case $t_month = "Jan";
应该是
case "Jan":
或
case 0:
(无论$t_month
的值是什么)。
如果下拉列表中包含您想要的文字,则无需switch
。
如果它具有月份的数量,那么一个数组也可以工作,而没有那么多的评估。
编辑:这是对Tome评论的补充。 编辑#2:如果下拉列表 有文本,那么绝对想要检查它是否有效,这样就不会添加更多SQL注入选项。 / p>并继续编辑......这样的事情将解决很多问题:
if ($_GET['do'] == 'insert')
{
$p_aid = (int)$_GET['id'];
$t_no = (int)$_POST['t_no'];
$months = array(''=>'Jan', 'Jan'=>'Jan', 'Feb'=>'Feb', 'Mar'=>'Mar', 'Apr'=>'Apr', 'Mar'=>'Mar', 'Apr'=>'Apr', 'May'=>'May', 'Jun'=>'Jun', 'Jul'=>'Jul', 'Aug'=>'Aug', 'Sep'=>'Sep', 'Oct'=>'Oct', 'Nov'=>'Nov', 'Dec'=>'Dec');
$t_month = $months[$months[$_POST['t_month']]]; //dropdown
$t_value = $_POST['t_value']; //value based on month selected
$t_year = (int)$_POST['t_year'];
$sql = "INSERT INTO tbl_detail (p_aid,t_not_year,t_" . strtolower($t_month) . ") ";
$sql .= "VALUES ($p_aid,'$t_no''$t_year', '" . $t_month . "')";
mysql_query($sql);
redirect("basicview.php?id=$p_aid&type=success&msg=new+row+added");
}
尽管如此,我不确定你要对'$t_no''$t_year'
做什么,但我认为这是不对的。
答案 1 :(得分:0)
您无需使用开关盒。使用以下代码存储相关月份及其值。试试这个....
if ($_GET['do'] == 'insert')
{
$p_aid = $_GET['id'];
$t_no = $_POST['t_no'];
$t_month = $_POST['t_month']; //dropdown
$t_value = $_POST['t_value']; //value based on month selected
$t_year = $_POST['t_year'];
$sql = "INSERT INTO tbl_detail (p_aid,t_no, t_year, $t_month) ";
$sql .= "VALUES ($p_aid,'$t_no','$t_year','$t_value')";
mysql_query($sql);
}
答案 2 :(得分:0)
你可以试试这个
if ($_GET['do'] == 'insert')
{
$p_aid = $_GET['id'];
$t_no = $_POST['t_no'];
$t_month = $_POST['t_month']; //dropdown
$t_value = $_POST['t_value']; //value based on month selected
$t_year = $_POST['t_year'];
$sql = "INSERT INTO tbl_detail (p_aid,t_not_year) ";
$sql .= "VALUES ($p_aid,'$t_no''$t_year')";
mysql_query($sql);
$col="t_".strtolower($t_month);
$sql = "UPDATE tbl_detail SET $col = '$t_value'";
$sql .= "WHERE p_aid = $p_aid AND t_no = $t_no";
mysql_query($sql);
redirect("basicview.php?id=$p_aid&type=success&msg=new+row+added");
}