Возникли проблемы с получением из MySQL для заполнения формы - PullRequest
0 голосов
/ 01 января 2019

У меня проблемы с получением результата из моей базы данных mysql и получением его в популярной форме.По сути, я создаю базу данных предметов, где игроки могут отправлять детали предметов из игры и просматривать базу данных, чтобы получить информацию для каждого предмета.У меня все работает, вплоть до добавления элементов в базу данных и просмотра базы данных.Теперь я пытаюсь закодировать страницу редактирования элемента.Я в основном повторно использовал свою форму со страницы additem, поэтому она показывает ту же форму.В верхней части моей страницы редактирования у меня есть php-код, чтобы вытащить номер элемента из URL, поскольку номера элементов уникальны.Поэтому я использую подготовленный оператор для извлечения номера элемента, затем пытаюсь извлечь остальную информацию из базы данных, затем устанавливаю каждую информацию в переменную.Что-то происходит с моим кодом, но я не могу найти никаких ошибок.Я ввел несколько вызовов заголовков для отладки, поместив информацию в строку URL ... Но заголовки даже не вызываются в определенных местах, и я не получаю никаких ошибок.

В форме я использовал такие вещи, как

<input name="itemname" type="text" value="<?php $edit_itemname?>"> 

, и в текстовом поле ничего не отображается.Я довольно новичок в php, и мне кажется, что его гораздо сложнее отлаживать, чем другие языки, с которыми я работал.Я также разместил свой php-код ниже, если вы, ребята, видите что-то не так ... У меня не должно быть проблем так просто!Я вырываю свои волосы, лол.

Спасибо, ребята!

<?php
require 'dbh.php';
if (!isset($_GET['itemnumber'])) {
  header("Location: itemdb.php");
  exit();
}else{

  $sql = "SELECT * FROM itemdb WHERE id = ?";
  $stmt = mysqli_stmt_init($conn);
  if (!mysqli_stmt_prepare($stmt, $sql)) {
    header("Location: edititem.php?error=sqlerror");
    exit();
  }else{
    $getid = $_GET['itemnumber'];
    mysqli_stmt_bind_param($stmt, "i", $getid);
    mysqli_stmt_execute($stmt);
    $result = mysqli_stmt_get_result($stmt);

    //Make sure an item is selected
    if ($result == 0) {
      $message = "You must select an item to edit!";
      header("Location: edititem.php?Noresults");
      exit();
    }else{
      while ($row = mysqli_fetch_assoc($stmt)) {
        $edit_itemname = $row['name'];
        $edit_itemkeywords = $row['type'];
        $edit_itemego = $row['ego'];
        $edit_itemweight = $row['weight'];
        $edit_itemacordmg = $row['acordmg'];
        $edit_itemtags = $row['tags'];
        $edit_itemworn = $row['worn'];
        $edit_itemaffects = $row['affects'];
        $edit_itemloads = $row['loads'];
        $edit_itemarea = $row['area'];
        $edit_itemcomments = $row['comments'];
          header("Location: edititem.php?testing");
      }
    }
  }

  }


 ?>

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Ваш код должен быть изменен на более читаемую форму, и вы должны добавить вывод - я бы не рекомендовал использовать <?= - и вам нужно выбрать, что вы собираетесь делать со своими строками - возможно <input>, <table> - или что-то еще?

<?php
require 'dbh.php';
if (!isset($_GET['itemnumber'])) {
   header("Location: itemdb.php");
   exit();
} // no else needed -> exit()

$sql = "SELECT * FROM itemdb WHERE id = ?";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
   header("Location: edititem.php?error=sqlerror");
   exit();
} // no else needed -> exit()

$getid = $_GET['itemnumber'];
mysqli_stmt_bind_param($stmt, "i", $getid);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);

//Make sure an item is selected
if ($result == 0) {
   $message = "You must select an item to edit!";
   header("Location: edititem.php?Noresults");
   exit();
} // no else needed -> exit()

while ($row = mysqli_fetch_assoc($stmt)) {
  $edit_itemname = $row['name'];
  $edit_itemkeywords = $row['type'];
  $edit_itemego = $row['ego'];
  $edit_itemweight = $row['weight'];
  $edit_itemacordmg = $row['acordmg'];
  $edit_itemtags = $row['tags'];
  $edit_itemworn = $row['worn'];
  $edit_itemaffects = $row['affects'];
  $edit_itemloads = $row['loads'];
  $edit_itemarea = $row['area'];
  $edit_itemcomments = $row['comments'];
  // does not make sense here: header("Location: edititem.php?testing");
  // show your data (need to edited):
  echo "Name: " + $edit_itemname + "<br/>";
  echo "Area: " + $edit_itemarea + "<br/>";
  echo "Comment: " + $edit_itemcomments + "<br/>";
  // end of current row
  echo "<hr><br/>"
}
?>
0 голосов
/ 01 января 2019

Чтобы получить значение $edit_itemname на выходе, вы должны использовать <?=, а не <?php.Говоря <?php, мы запустим код, так что в основном это просто строка с переменной в нем.Вы не приказываете напечатать значение в переменной.

Если вся ваша строка выглядит так:

<input name="itemname" type="text" value="<?= $edit_itemname?>">

Это должно дать вам то, что вы ищете.<?= эквивалентно высказыванию echo $edit_itemname;

Если вам не нравится использование <?=, вы можете альтернативно сказать

<input name="itemname" type="text" value="<?php echo $edit_itemname; ?>">

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