如何更新 3 个表格列,而页面上只有一列可见 [英] How to update 3 tables columns while only one column is visible to the page

查看:53
本文介绍了如何更新 3 个表格列,而页面上只有一列可见的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是一个表列,显示消息取决于用户在数据库中的首选语言选择.例如,如果首选语言是 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆