PHP Mongo Обновление определенных полей одной записи при нажатии кнопки Отправить - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть таблица 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"}

Обе фиктивные записи были отредактированы при нажатии одной отправки в первом ряду, последнем столбце.

...