Как распечатать все мои данные из второй таблицы - PullRequest
0 голосов
/ 06 мая 2019

У меня есть CRUD с двумя таблицами.

Я завершил CRUD до момента функции обновления.

Проблема в том, что я не могу получить данные из моей второй таблицы для правильной распечатки.

Я пытался использовать циклы for, цикл foreach, циклы while и все циклы, которые я могу себе представить, чтобы попытаться выполнить цикл через данные, но, похоже, ничего не работает.

if (isset($_GET['edit'])) {
    $id = $_GET['edit'];

    $result = $mysqli->query("SELECT * FROM personal where id=$id") or die($mysqli->error);

    while ($row = mysqli_fetch_assoc($result)) {

      $first_name = $row['first_name'];
      $last_name = $row['last_name'];
      $email = $row['email'];
      $phone_number = $row['phone_number'];

      $result2 = $mysqli->query("SELECT * FROM phone where user_id=$id") or die($mysqli->error);

    } while ($row2 = mysqli_fetch_assoc($result2)) {

      $phone_number2 = $row2['phone_number2'];
      var_dump($phone_number2);
    }
  }

var_dump в ситуации сбрасывает все данные в таблице, но когда я получаю те же данные на странице редактирования, я получаю только последний результат.

Страница редактирования

<form class="col-md-8 col-sm-8 col-8" id="userform" name="form" action="process.php" method="post">
      <div class="form-group">
        <label class="col-lg">Name *</label>
          <input type="text" id="first_name" name="first_name" class="form-control" value="<?php echo $first_name; ?>" placeholder="Enter your name">
      </div>

      <div class="form-group">
        <label class="col-lg">Last name *</label>
          <input type="text" id="last_name" name="last_name" class="form-control" value="<?php echo $last_name; ?>" placeholder="Enter your last name" >
      </div>

      <div class="form-group">
        <label class="col-lg">Email *</label>
          <input type="email" id="email" name="email" class="form-control" value="<?php echo $email; ?>" placeholder="Enter your email" >
      </div>

      <div id="tel_number" class="form-group">
        <table class="table">
          <tr>
              <label>Phone numbers *</label>
              <input type="tel" id="phone_number" name="phone_number" class="form-control col-md-12" value="<?php echo $phone_number; ?>" placeholder="Enter your phone number" >
          </tr>
        </table>
        <table class="table">
          <tr>
              <?php if ($phone_number2 > 1): ?>
                <?php var_dump($phone_number2); ?>
                  <input type="tel" id="phone_number2" name="phone_number2" class="form-control col-md-12" value="<?php echo $phone_number2; ?>" placeholder="Enter your phone number" >
              <?php endif ?>
          </tr>
        </table>
      </div>
      <input type="hidden" name="update_id" value="<?php echo $post['id']; ?>">
      <button type="submit" class="btn btn-outline-primary col-lg" name="update">Update</button>
      </form>

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

Результат, который я получаю, указан в ссылке ниже: https://www.dropbox.com/s/gt69ovv16r5lfh7/var_dump%28%24phone_number2%29.png?dl=0

Ответы [ 2 ]

0 голосов
/ 06 мая 2019

Проблема решена !!! Решение: Код, который проверяет наличие кнопки редактирования

$result = $mysqli->query("SELECT * FROM personal where id=$id") or die($mysqli->error);

    while ($row = mysqli_fetch_assoc($result)) {

      $first_name = $row['first_name'];
      $last_name = $row['last_name'];
      $email = $row['email'];
      $phone_number = $row['phone_number'];

      $result2 = $mysqli->query("SELECT phone.phone_number2 FROM phone where user_id=$id") or die($mysqli->error);

    } while ($row2 = mysqli_fetch_assoc($result2)) {

      $phone_number2 = $row2['phone_number2'];
    }
  }

Код, который печатает все данные из второй таблицы

<tr>
              <?php if ($phone_number >= 1): ?>
                <?php foreach ($result2 as $key => $value): ?>
                  <?php foreach ($value as $phone2 => $phone): ?>
                  <input type="tel" id="phone_number2" name="phone_number2" class="form-control col-md-12" value="<?php echo $phone; ?>" placeholder="Enter your phone number" >
                  <?php endforeach ?>
                <?php endforeach ?>
              <?php endif ?>
          </tr>
0 голосов
/ 06 мая 2019

Результат, который вы получаете, по порядку, потому что переменная $ result2, которая обрабатывается во втором цикле, оказывается последней пользователем первого цикла, чей user_id был запрошен. Чтобы отображать номера телефонов для каждого пользователя, второй цикл должен быть вложен в первый цикл сразу после установки переменной $ result2.

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