如何更新 3 个表格列,而页面上只有一列可见 [英] How to update 3 tables columns while only one column is visible to the page
问题描述
这是一个表列,显示消息取决于用户在数据库中的首选语言选择.例如,如果首选语言是 ENG,则只有 eng消息将显示PS:数据库中有3列存储3种不同语言的消息
This is a table column that display message depends on user preferred language choice in the DB. eg if preferred language is ENG only the eng message will show PS: in the database, there's 3 column storing 3 types of message of different languages
<?php
$possibleLang = ["繁體","简体","ENG"];
$testAreaField = ["traditionalmessage","simplifiedmessage","engmessage"];
$treatmentName = ["vaccinename1","vaccinename2","vaccinename3"];
$treatmentNameSuffix = ["\n下一個注射期為:","\n下一个注射期为:","\nNext
injection period will be:"];
$index = array_search($row['language'],$possibleLang);
?>
<td>
<textarea rows="3" cols="18" class="url" name="<?php echo
$testAreaField[$index]; ?>[]" data-value="<?php echo
$row[$treatmentName[$index]] . $treatmentNameSuffix[$index]; ?>"><?php echo
$row[$testAreaField[$index]]; ?>
</textarea>
</td>
此表位于显示来自数据库的数据并将数据更新回数据库的编辑页面.
This table is at an edit page that displays data from DB and also updates data back to the DB.
if (isset($_POST['submit'])){
foreach ($_POST['patientid'] as $index => $patientid) {
$id = mysql_real_escape_string($_POST['id'][$index]);
$data1 = mysql_real_escape_string($patientid);
$data17 = mysql_real_escape_string($_POST['patienthkid'][$index]);
$data2 = mysql_real_escape_string($_POST['vaccineid'][$index]);
$data5 = mysql_real_escape_string($_POST['vaccinename3'][$index]);
$data6 = mysql_real_escape_string($_POST['totalnoofinjection'][$index]);
$data7 = mysql_real_escape_string($_POST['nthinjection'][$index]);
$data8 = mysql_real_escape_string($_POST['date'][$index]);
$data9 = mysql_real_escape_string($_POST['nextdate'][$index]);
$data10 = mysql_real_escape_string($_POST['skip'][$index]);
$data11 = mysql_real_escape_string($_POST['language'][$index]);
$data12 = mysql_real_escape_string($_POST['traditionalmessage'][$index]);
$data13 = mysql_real_escape_string($_POST['simplifiedmessage'][$index]);
$data14 = mysql_real_escape_string($_POST['engmessage'][$index]);
$data15 = mysql_real_escape_string($_POST['status'][$index]);
$data16 = mysql_real_escape_string($_POST['nurse'][$index]);
if ($data12 != null) {
mysql_query("UPDATE patientvaccinedetail SET patientid
='$data1',patienthkid
='$data17',vaccineid='$data2',vaccinename3='$data5',
totalnoofinjection='$data6',nthinjection='$data7',
date='$data8',nextdate='$data9',skip='$data10',language='$data11',
traditionalmessage='$data12',status='$data15',nurse='$data16' WHERE
id=$id") or die(mysql_error());
}
else if ($data13 != null) {
mysql_query("UPDATE patientvaccinedetail SET patientid
='$data1',patienthkid
='$data17',vaccineid='$data2',vaccinename3='$data5',
totalnoofinjection='$data6',
nthinjection='$data7',date='$data8',nextdate='$data9',
skip='$data10',language='$data11',
simplifiedmessage='$data13',status='$data15',nurse='$data16' WHERE
id=$id") or die(mysql_error());
}
else if ($data14 != null) {
mysql_query("UPDATE patientvaccinedetail SET patientid
='$data1',patienthkid ='$data17',vaccineid='$data2',
vaccinename3='$data5', totalnoofinjection='$data6',
nthinjection='$data7',date='$data8',nextdate='$data9',
skip='$data10',language='$data11',
engmessage='$data14',status='$data15',nurse='$data16' WHERE id=$id")
or die(mysql_error());
}
}
}
问题是每当我点击保存并且只有一
列被保存,其他两列在数据库中更新为NULL.期望的结果是同时更新 3 列,而页面上只有 1 列可见.任何想法.提前致谢
The issues are whenever I click save and only one
column of the message is SAVED, other two column are updated as NULL in the database. The desired outcome is the update both 3 columns while only 1 column is visible to the page.
Any idea. Thanks in advance
推荐答案
不要更新不是更新目标的列.例如,如果选择了传统消息,那么您将只更新此列.我可能会在这里使用单独的查询.
Do not update columns which are not being targeted for update. For example, if the traditional message were selected, then you would update only this column. I would probably use separate queries here.
foreach ($_POST['patientid'] as $index => $patientid) {
$id = mysql_real_escape_string($_POST['id'][$index]);
$data1 = mysql_real_escape_string($patientid);
$data2 = mysql_real_escape_string($_POST['traditionalmessage'][$index]);
$data3 = mysql_real_escape_string($_POST['simplifiedmessage'][$index]);
$data4 = mysql_real_escape_string($_POST['engmessage'][$index]);
if ($data2 != null && $data2 != '') {
mysql_query("UPDATE table SET patientid ='$data1',
traditionalmessage='$data2' WHERE id=$id") or die(mysql_error());
}
else if ($data3 != null && $data3 != '') {
mysql_query("UPDATE table SET patientid ='$data1',
simplifiedmessage='$data3' WHERE id=$id") or die(mysql_error());
}
else if ($data4 != null && $data4 != '') {
mysql_query("UPDATE table SET patientid ='$data1',
engmessage='$data4' WHERE id=$id") or die(mysql_error());
}
}
请注意,我相信您正在为 MySQL 使用非常旧且已弃用的 PHP API.首先,使用准备好的语句会让你受益匪浅.
Note that I believe you are using a very old and deprecated PHP API for MySQL. For starters, it would benefit you a lot by using prepared statements.
这篇关于如何更新 3 个表格列,而页面上只有一列可见的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!