У меня есть таблица HTML, которая отображает данные из MongoDB.Однако в последнем столбце каждой строки есть форма ввода от пользователя, которая может обновить записи этой строки.При нажатии на кнопку отправки и использовании update()
эти поля для всех строк редактируются.
Моя первоначальная запись в БД выглядит следующим образом:
{"group_size": "3", "form": "tour_request_quote_form", "phone": "9999999999", "url":" # "," referrer ":" # "," base_url ":" # "," headers ": {" User-Agent ":" Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 73.0.3683.86 Safari / 537.36 "}," tour_date ":" 04-24-2019 "," email ":" a@gmail.com "," company_list ": [" A ","B "," C "]," person_list ": [" A "," B "," C "]," lead_status ": [" Follow Up "," New Lead "," Booked "]," lead_assigned ":"NIL", "person_assigned": "NIL", "status": "New Lead"}
Последние 3 записи: lead_assigned "," person_assigned "," status "доступны для редактирования.
Это код для моей таблицы, таблица отображается идеально, как и должно.
db=$m->selectDB('fullstack');
$collection = $db->clients;
$cursor = $collection->find();
foreach($cursor as $document){
if(!(isNull($document["group_size"]) || isNull($document["phone"])|| isNull($document["tour_date"]) || isNull($document["email"])))
{?>
<tr>
<td><?php echo $document["group_size"]?></td>
<td><?php echo $document["form"]?></td>
<td><?php echo $document["phone"]?></td>
<td><?php echo $document["tour_date"]?></td>
<td><?php echo $document["email"]?></td>
<td><?php echo $document["url"]?></td>
<td><?php echo $document["referrer"]?></td>
<td><?php echo $document["base_url"]?></td>
<td><?php echo $document["lead_assigned"]?></td>
<td><?php echo $document["person_assigned"]?></td>
<td><?php echo $document["status"]?></td>
<td>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<h4>Lead Assignment</h4>
<select class="lead" name="lead">
<?php foreach($document["company_list"] as $val) {
?>
<option value='<?php echo $val;?>'><?php echo $val; ?></option>
<?php } ?>
</select><br><h4>Person Assignment</h4>
<select class="person" name="person">
<?php foreach($document["person_list"] as $val) {
?>
<option value='<?php echo $val;?>'><?php echo $val; ?></option>
<?php } ?>
</select><br>
<h4>Lead Status</h4>
<select class="status" name="status">
<?php foreach($document["lead_status"] as $val) {
?>
<option value='<?php echo $val;?>'><?php echo $val; ?></option>
<?php } ?>
</select><br><br>
<input type="submit" name="submit" value="Update Details">
</form>
<?php
if(isset($_POST['submit']))
{
$document['lead_assigned']=$_POST['lead'];
$document['person_assigned']=$_POST['person'];
$document['status']=$_POST['status'];
updateDB($collection,$document,$document['_id']);
}
Это функция updateDB:
function updateDB($collection,$new_data,$id)
{
$filter=array('_id' => $id,'phone' => $new_data['phone'] );
$collection->update($filter, array('$set' => $new_data),array('upsert' => true));
}
Я хочу, чтобызапись с идентификатором x должна редактироваться только с новыми значениями.Однако, в конце концов, это то, что происходит, "url": "#", "referrer": "#", "base_url": "#", "headers": {"User-Agent": "Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, как Gecko) Chrome / 73.0.3683.86 Safari / 537.36 "}," tour_date ":" 04-24-2019 "," email ":" a@gmail.com "," company_list ": [" A"," B "," C "]," person_list ": [" A "," B "," C "]," lead_status ": [" Follow Up "," New Lead "," Booked "],"lead_assigned ":" A "," person_assigned ":" A "," status ":" Booked "}
{" _id ": ObjectId (" 5cc0dac94b24f233684908fb ")," group_size ":" 4 ","form ":" tour_request_quote_form "," phone ":" 9099090999 "," url ":" # "," referrer ":" # "," base_url ":" # "," headers ": {" User-Agent ":"Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 73.0.3683.86 Safari / 537.36"}, "tour_date": "05-26-2019 "," электронная почта ":" ab@gmail.com "," company_list ": [" A "," B "," C "]," person_list ": [" A "," B ","C"], "lead_status": ["Follow Up", "New Lead", "Booked"], "lead_assigned": "A", "person_assigned": "A", "status": "Booked"}
Обе фиктивные записи были отредактированы при нажатии одной отправки в первом ряду, последнем столбце.