Сбой PHP-скрипта при обновлении веб-формы

#php

#php

Вопрос:

Спасибо всем, кто помог мне с предыдущей проблемой. У меня работают мои скрипты, поэтому я могу добавлять и отображать записи. Теперь я следил за этим руководством, чтобы обновить записи, но при запуске я получаю эту ошибку на странице: ! ) Обратите внимание: неопределенный индекс: идентификатор в /var/www/inventory/update.php в стеке вызовов строки 21

Местоположение функции временной памяти

1 0.0000 229608 {main}() ../update.php:0 Код выглядит следующим образом:

  <?php
    ini_set("display_errors","on");

    $dsn='mysql:host=localhost;dbname=inventory_form';
    $username="***";
    $password="****";
    $database="inventory_form";


    try
        {
        $link=new PDO($dsn, $username,$password);
        echo 'Connected to MySQL Server';
        }
    catch (PDOException $e)
        {
        $error_message=$e->getMessage();
        echo "<h1>An error occurred: $error_message</h1>";
        }

    $id=$_POST['id'];
    $query="SELECT * FROM Inventory WHERE id='$id'";
    $result=$link->query($query);

    while ($row = $result->fetch()) { 
        echo '<b><i><center><font size=5>'. $row['FName'] .'</font></b></i></center><br /n>';
        echo '<b><i><center><font size=5>'. $row['LName'] .'</font></b></i></center><br /n>';
        echo '<b><i><center><font size=5>'. $row['Eqpmnt_Brwd'] .'</font></b></i></center><br /n>';
        echo '<b><i><center><font size=5>'. $row['Service_Tag'] .'</font></b></i></center>';
        echo '<b><i><center><font size=5>'. $row['Date_Taken'] .'</font></b></i></center>';
        echo '<b><i><font size=5>'. $row['Comments'] .'</font></b></i>';

      }

    ?>

    <form action="updated.php" method="post">
    <input type="hidden" name="ud_id" value="<? echo "$id"; ?>">
    <font size=5>First Name:</font><input type="text" name="ud_first" maxlength="12" 
size="12" />
    <font size=5>Last Name:</font><input type="text" name="ud_last" maxlength="36" size="12" />
    <font size=5>Equipment Borrowed:</font><input type="text" name="ud_Equipment_Borrowed" maxlength="60" size="14" /><br />
    <font size=5>Service Tag:</font><input type="text" name="ud_Service_Tag" maxlength="6" size="6" /><br />
    <font size=5>Date Taken:</font><input type="text" name="ud_Date_Taken" /><br />
    <font size=5>Additional Comments:</font><br /> 
        <textarea name="ud_Comments" maxlength="150" cols="50" rows="3"></textarea> <br /> <br />
    <input type="Submit" value="Update">
    </form>
    ?/
 

И затем я получаю кучу ошибок из updated.php сценарий:
Обратите внимание: неопределенная переменная: ud_first в /var/www/inventory/updated.php в строке 19
Стек вызовов

Местоположение функции временной памяти

1 0.0002 231664 {main}() ../обновлено.php:0

( ! ) Обратите внимание: неопределенная переменная: ud_last в /var/www/inventory/updated.php в стеке вызовов строки 19

Местоположение функции временной памяти

1 0.0002 231664 {main}() ../обновлено.php:0

( ! ) Обратите внимание: неопределенная переменная: ud_Equipmnt_borrowed в /var/www/inventory/updated.php в строке 19 и т.д. для всех переменных. Этот скрипт:

 <?php
ini_set("display_errors","on");
$dsn='mysql:host=localhost;dbname=inventory_form';
$username="***";
$password="****";
$database="inventory_form";

try
    {
    $link=new PDO($dsn, $username,$password);
    echo 'Record added succesfully';
    }
catch (PDOException $e)
    {
    $error_message=$e->getMessage();
    echo "<h1>An error occurred: $error_message</h1>";
    }

$query="UPDATE contacts SET FName='$ud_first', LName='$ud_last', Eqmnt_Brwd='$ud_Equipmnt_borrowed', Service_Tag='$ud_Service_Tag', Date_Taken='$ud_Date_Taken', Comments='$ud_Comments' WHERE id='$ud_id'";

echo "Record Updated";

?>
 

Любая помощь очень ценится. Я немного запутался в том, как поле id используется для того, чтобы все это работало. Согласно руководству, у меня должна быть заполненная форма, готовая к редактированию для конкретной записи.Заранее спасибо

Обновить. Вот код:

 <?php
ini_set("display_errors","on");

$dsn='mysql:host=localhost;dbname=inventory_form';
$username="***";
$password="*****";
$database="inventory_form";


try
    {
    $link=new PDO($dsn, $username,$password);
    echo 'Connected to MySQL Server';
    }
catch (PDOException $e)
    {
    $error_message=$e->getMessage();
    echo "<h1>An error occurred: $error_message</h1>";
    }

$id=htmlspecialchars($_GET['id']);

$query="SELECT * FROM Inventory WHERE id='$id'";
$result=$link->query($query);

while ($row = $result->fetch()) { 
    echo '<b><i><center><font size=5>'. $row['FName'] .'</font></b></i></center><br /n>';
    echo '<b><i><center><font size=5>'. $row['LName'] .'</font></b></i></center><br /n>';
    echo '<b><i><center><font size=5>'. $row['Eqpmnt_Brwd'] .'</font></b></i></center><br /n>';
    echo '<b><i><center><font size=5>'. $row['Service_Tag'] .'</font></b></i></center>';
    echo '<b><i><center><font size=5>'. $row['Date_Taken'] .'</font></b></i></center>';
    echo '<b><i><font size=5>'. $row['Comments'] .'</font></b></i>';

  }

?>

<form action="updated.php" method="post">
<input type="hidden" name="ud_id" value="<? echo "$id"; ?>">
<font size=5>First Name:</font><input type="text" name="ud_first" maxlength="12" size="12" />
<font size=5>Last Name:</font><input type="text" name="ud_last" maxlength="36" size="12" />
<font size=5>Equipment Borrowed:</font><input type="text" name="ud_Equipment_Borrowed" maxlength="60" size="14" /><br />
<font size=5>Service Tag:</font><input type="text" name="ud_Service_Tag" maxlength="6" size="6" /><br />
<font size=5>Date Taken:</font><input type="text" name="ud_Date_Taken" /><br />
<font size=5>Additional Comments:</font><br /> 
    <textarea name="ud_Comments" maxlength="150" cols="50" rows="3"></textarea> <br /> <br />
<input type="Submit" value="Update">
</form>


?>
 

Комментарии:

1. Инициализированы ли переменные в вашем запросе?

2. Посмотрите! Вы извлекаете данные из таблицы инвентаризации и обновляете таблицу контактов. Что ты делаешь?

3. Вы правы! Остался от кода, который я просматривал. Изменил его на правильную базу данных, но если вы посмотрите ниже на скрипт сайта pastebin, по-прежнему отображается уведомление: неопределенный индекс: идентификатор в /var/www/inventory/update.php в строке 21 и обратите внимание: Неопределенная переменная: ud_id в /var/www/inventory/updated.php в строке 26 для updated.php сценарий, который вызывается

Ответ №1:

Первый: вы должны добавить что-то вроде ‘?id= NUMBER’ в конце URL-адреса (пример: update.php?id= 1′), чтобы использовать идентификатор

Для этого вы должны использовать:

 $id = htmlspecialchars($_GET['id'])
 

Второй: вы использовали $ud_last и т. Д., Но не определили их в своем коде, Вы должны сделать это следующим образом:

 $ud_last = $_POST['ud_last'];
 

Тогда он должен работать

Комментарии:

1. Извините, но я добавил строку: $id = htmlspecialchars($_GET[‘id’]) $id= $_POST[‘id’]; $query=»ВЫБРАТЬ * ИЗ инвентаря, ГДЕ id=’$id'»; $result= $link->query($query);И я просто получаю белую страницу. Я даже не получаю сообщение о подключении.

2. Вы определили $ id уже два раза, в этом случае вам не следует определять $ id с помощью $ _POST [‘id’] (вы должны определить эти ud_last и т. Д., Используя это)

3. Это все еще получало белую страницу:

4. Странно, он должен, по крайней мере, выдавать ошибки; Можете ли вы поместить весь обновленный код в свой пост или @ jsfiddle.net ?

5. Получение сообщения об ошибке:! ) Обратите внимание: неопределенный индекс: идентификатор в /var/www/inventory/update.php в строке 21 Стек вызовов # Местоположение функции временной памяти 1 0.0004 232088 {main}() ../update.php:0 код выглядит так:$id=htmlspecialchars($_GET[‘id’]); $query=»ВЫБРАТЬ * ИЗ инвентаряГДЕ id=’$id'»; $result=$link->запрос ($query);