Имейте идентификатор после выбора значения в HTML выберите - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть идентификатор, фамилия и имя человека, выбранного из базы данных с помощью запроса. Итак, есть пример моей таблицы и запроса с переменными, которые я использую.

+----+--------+---------+
| ID | NAME   | SURNAME |
+====+========+=========+
|  1 | limone | salmone |
+----+--------+---------+
|  2 | john   | bobbino |
+----+--------+---------+

  $queryN = "SELECT `ID`,`NAME`,`SURNAME` FROM `t_people` WHERE 1";
  $sql = mysqli_query($con , $queryN);
  $people = array();
  $id = array();
  while($row = $sql -> fetch_array(MYSQLI_ASSOC))
    {
      $people[] = $row["NAME"]." ". $row["SURNAME"];//limone salmone
      $id[] = $row["ID"];//1
    }

Я хотел бы, чтобы в выводе в HTML было выбрано имя и фамилия выбранного человека и Идентификатор человека, выбранного при переходе на другую страницу. У меня есть этот код ниже, который работает довольно хорошо, но с этим решением у меня есть на другой странице только значение $people. Это проблема, потому что в базе данных может быть более одного человека с одинаковыми именем и фамилией.

    <label class="control-label" for="NCPersona">Seleziona il nome della persona</label>
        <select name="NCPersona" id="validationDefaultUsername" class="form-control" required>
          <?php
          foreach($people as $value) { ?>
          <option value="<?= $value?>"><?= $value?></option>
          <?php
      } ?>
        </select>

Так что я подумал, что лучше всего пропустить идентификатор этого человека через страницы. Как я могу это сделать? Может быть, используя идентификатор в ценностном лагере? Спасибо всем! :)

Пример моего кода выше

        <label for="NCPersona">Select the person's name</label>
            <select name="NCPersona" required>
              <option value="limone salmone">limone salmone</option>
              <option value="john bobbino">john bobbino</option>
            </select>

Ответы [ 3 ]

1 голос
/ 24 апреля 2020

Что вам нужно сделать, это получить данные таблицы и создать массив значений, подобных этому:

$queryN = "SELECT * FROM `t_people`";
$sql = mysqli_query($con , $queryN);
$people = array();
$id = array();
while($row = $sql -> fetch_array(MYSQLI_ASSOC)) {
  $people[] = array(
    'id' => $row["ID"],
    'name' => $row["NAME"]." ". $row["SURNAME"],
  );
}

Затем, после того, как массив будет готов, вы можете создать поле выбора с идентификатором ID в качестве значения, подобного этому. :

<label class="control-label" for="NCPersona">Seleziona il nome della persona</label>
<select name="NCPersona" id="validationDefaultUsername" class="form-control" required>
  <?php
  foreach($people as $value) { ?>
  <option value="<?= $value['id'] ?>"><?= $value['name'] ?></option>
  <?php } ?>
</select>

Тогда любой пользовательский запрос c должен искать по предоставленному идентификатору, а не по имени.

$id = 'user id here';
$queryN = sprintf("SELECT `ID`,`NAME`,`SURNAME` FROM `t_people` WHERE %d", $id);
0 голосов
/ 24 апреля 2020

Если вы хотите передать идентификатор и имя, вы не должны разделять их. Вы можете попробовать этот код

$queryN = "SELECT `ID`,`NAME`,`SURNAME` FROM `t_people` WHERE id=1";
$sql = mysqli_query($con , $queryN);
$people = array();
while($row = mysqli_fetch_object($sql)) {
    $people[] = $row;
}

и для выпадающего списка

<label class="control-label" for="NCPersona">Seleziona il nome della persona</label>
    <select name="NCPersona" id="validationDefaultUsername" class="form-control" required>
      <?php
          foreach($people as $value) { ?>
          <option value="<?= $value->id ?>"><?= $value->name." ".$value->surname ?></option>
      <?php
          } 
      ?>
    </select>
0 голосов
/ 24 апреля 2020

Ваш sql запрос, как это работает? Это должно быть так:

"SELECT `ID`,`NAME`,`SURNAME` FROM `t_people` WHERE `id`=1"

у вас нет id

Где ваш идентификатор здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...