Php 使用多个选择选项编辑选择选项
在类型的多个选择中遇到一些问题 在我的CRM脚本中,我存储了客户访问详细信息的数据,以及销售人员如何访问的数量。这是我的参观桌Php 使用多个选择选项编辑选择选项,php,html,Php,Html,在类型的多个选择中遇到一些问题 在我的CRM脚本中,我存储了客户访问详细信息的数据,以及销售人员如何访问的数量。这是我的参观桌 visit_id | customer | visit_date 1 | 4 | 2020-05-16 2 | 3 | 2020-05-20 我将参加销售人员的详细信息存储在一张表中,请访问以下与会者 id | visit_id | attendees 1 | 1 | 1 2 | 1
visit_id | customer | visit_date
1 | 4 | 2020-05-16
2 | 3 | 2020-05-20
我将参加销售人员的详细信息存储在一张表中,请访问以下与会者
id | visit_id | attendees
1 | 1 | 1
2 | 1 | 3
3 | 1 | 4
4 | 2 | 3
5 | 2 | 2
<?php
$m1 = DB_query("SELECT sp.id, sp.fname, sp.lname, va.attendees FROM sales_persons sp INNER JOIN visit_attendees va ON sp.id=va.attendees WHERE va.visit_id=".$VisitID.""); ?>
<h4>Attendies</h4>
<select name="attendees[]" class="form-control select2 is-invalid" multiple="multiple" required>
<?php while($m2 = DB_fetch_array($m1)) { ?>
<option value="<?php echo $m2['id'];?>" selected="selected"><?php echo $m2['fname'].' '.$m2['lname'];?></option>
<?php }
$st = "SELECT id, fname, lname FROM sales_persons";
$st1 = DB_query($st);
while($st2 = DB_fetch_array($st1)) { ?>
<option value="<?php echo $st2['id']; ?>"> <?php echo $st2['fname'].' '.$st2['lname']; ?> </option>
<?php } ?>
</select>
if(isset($_POST['UpdateVisits']))
{
$vid = DB_escape_string($_POST['visit_id']);
$attendees = $_POST['attendees'];
//$l1 = "UPDATE visits SET ....";
$d1 = DB_query("DELETE FROM visit_attendeees WHERE visit_id=".$vid."");
foreach($attendees as $attend)
{
$att = "INSERT INTO visit_attendies(visit_id, attendees) VALUES(".$vid.", ".DB_escape_string($attend).")";
$att1 = DB_query($att);
}
}
这里是我从表销售人员处获得的与会者ID
sid | fname | lname
1 | ABC | CDS
2 | XYZ | AAA
3 | ZZZ |
4 | CDE | H
存储不是问题。但在编辑时,我希望将这些值设置为选中值,并且仅在添加了额外值或删除了已显示的值时才存储这些值。我不知道怎么做
现在我对这样的转弯方法做得很对
id | visit_id | attendees
1 | 1 | 1
2 | 1 | 3
3 | 1 | 4
4 | 2 | 3
5 | 2 | 2
<?php
$m1 = DB_query("SELECT sp.id, sp.fname, sp.lname, va.attendees FROM sales_persons sp INNER JOIN visit_attendees va ON sp.id=va.attendees WHERE va.visit_id=".$VisitID.""); ?>
<h4>Attendies</h4>
<select name="attendees[]" class="form-control select2 is-invalid" multiple="multiple" required>
<?php while($m2 = DB_fetch_array($m1)) { ?>
<option value="<?php echo $m2['id'];?>" selected="selected"><?php echo $m2['fname'].' '.$m2['lname'];?></option>
<?php }
$st = "SELECT id, fname, lname FROM sales_persons";
$st1 = DB_query($st);
while($st2 = DB_fetch_array($st1)) { ?>
<option value="<?php echo $st2['id']; ?>"> <?php echo $st2['fname'].' '.$st2['lname']; ?> </option>
<?php } ?>
</select>
if(isset($_POST['UpdateVisits']))
{
$vid = DB_escape_string($_POST['visit_id']);
$attendees = $_POST['attendees'];
//$l1 = "UPDATE visits SET ....";
$d1 = DB_query("DELETE FROM visit_attendeees WHERE visit_id=".$vid."");
foreach($attendees as $attend)
{
$att = "INSERT INTO visit_attendies(visit_id, attendees) VALUES(".$vid.", ".DB_escape_string($attend).")";
$att1 = DB_query($att);
}
}
有没有其他直接的方法来实现这一点 我不确定是否要更新MySQL表,但如果您不是通过这些字段进行查询,我建议您将与会者ID保存在json中,而不是一行一行。这意味着您只有一行需要更新并将许多查询保存到数据库中 Json并不是在MySQL中保存的最佳选项,但如果您是按id而不是按与会者id进行查询,这将非常适合您 这样,您需要将与会者ID保存在数组中,然后将其更新到如下字段:
"UPDATE visit_attendies SET attendees = '".json_encode($attendies_arr)."' where visit_id = '".$vid."'"
然后,当您选择他们时,您将进行json_解码并获取与会者的id。该字段应该是文本字段。我在json编码或解码方面非常差,有没有其他不使用json的方法?我想有其他方法,尽管json并不复杂。先对数组进行编码,然后对数组进行解码。您一直在使用基本php数组。mysql中的json看起来像一个javascript数组,没有什么特别之处。例如,具有3个值3,5,7的数组将类似于[3,5,7]。就这样。唯一需要考虑的是,当您使用json_decode($json,true)时,您应该为第二个参数设置true,以便它将其作为php数组而不是std类返回。