Примечание: неопределенный индекс, динамический сайт, подключенный к базе данных с помощью php

1

Я запускаю PHP-скрипт и продолжаю получать ошибки, например:

Примечание. Неопределенный индекс: ID в C:\wamp\www\test\updateHW3.php в строке 116.

Я использую mysql_connect() для обучения. Это мой код:

<?php
 // variables used in script
 if(isset($_POST[ "submit" ]))
 {
         $ID = isset($_POST[ "ID" ]) ? $_POST[ "ID" ] : "";
         $fname = isset($_POST[ "fname" ]) ? $_POST[ "fname" ] : "";
         $lname = isset($_POST[ "lname" ]) ? $_POST[ "lname" ] : "";
         $phone = isset($_POST[ "phone" ]) ? $_POST[ "phone" ] : "";
         $birthday = isset($_POST[ "birthday" ]) ? $_POST[ "birthday" ] : "";
         $deathday = isset($_POST[ "deathday" ]) ? $_POST[ "deathday" ] : "";
         $age = isset($_POST[ "age" ]) ? $_POST[ "age" ] : "";
         $gender = isset($_POST[ "gender" ]) ? $_POST[ "gender" ] : "";

          // build INSERT query
           $query = "UPDATE students SET firstname ='&fname',lastname='$lname',telephone='$phone',birthday='$birthday',deathday='$deathday',age='$age',gender='$gender' WHERE S_PK=$ID" ;
        //       echo $query."<br/>";
               // Connect to MySQL
               if ( !( $database = mysql_connect( "localhost", "root", "" ) ) )
                  die( "<p>Could not connect to database</p>" );

               // open MailingList database
               if ( !mysql_select_db( "webdatabase", $database ) )
                  die( "<p>Could not open MailingList database</p>" );

               // execute query in MailingList database
               if ( !( $result = mysql_query( $query, $database ) ) ) 
               {
                  print( "<p>Could not execute query!</p>" );
                  die( mysql_error() );
               } // end if

               mysql_close( $database );
               header("location:readHW3.php");
 }

?>

      <h1>Mailing List Contacts</h1>
      <table>
         <caption>Contacts stored in the database</caption>
         <tr>
            <th>Student_ID</th>
            <th>First Name</th>
            <th>Last Name</th>
            <th>phone</th>
            <th>birthday</th>
            <th>deathday</th>
            <th>age</th>
            <th>gender</th>

         </tr>
         <?php

         print( "<h1>Sample Update Form</h1>
            <p>Please fill in the fields you wish to update and click Register.</p>" );

         print( "<!-- post form data to dynamicForm.php -->
            <form method = 'post' action = ''>
            <h2>User Information</h2>

            <!-- create text boxes for user input -->" );
             // array of name values for the text input fields
         $inputlist = array( "ID" => "Student ID","fname" => "First Name",
            "lname" => "Last Name","phone" => "Phone","birthday" => "Birthday"
            ,"deathday" => "Deathday","age" => "Age");

             // array for gender
         $gender = array( "male",
            "female");

        $ID = isset($_GET[ "ID" ]) ? $_GET[ "ID" ] : "";
        if($ID != "")
        {
            $query = "SELECT * FROM students where S_PK = $ID";

         // Connect to MySQL
         if ( !( $database = mysql_connect( "localhost", "root", "" ) ) )
            die( "<p>Could not connect to database</p></body></html>" );

         // open MailingList database
         if ( !mysql_select_db( "webdatabase", $database ) )
            die( "<p>Could not open MailingList database</p>
               </body></html>" );

         // query MailingList database
         if ( !( $result = mysql_query( $query, $database ) ) ) 
         {
            print( "<p>Could not execute query!</p>" );
            die( mysql_error() . "</body></html>" );
         } // end if

        $row = mysql_fetch_assoc( $result );
        echo "<tr><td>".$ID."</td>";
         foreach ( $inputlist as $inputname => $inputalt)
         {

               echo "<td><input type = 'text' name = '$inputname' value = '" . $row["$inputname"] . "'></td>";



         } // end foreach

        print( "<td><select name = 'gender'>" );          
         foreach ( $gender as $currgender ) 
         {
            print( "<option" .  ($currgender == $row["gender"] ? " selected>" : ">") .  $currgender . "</option>" );
         } // end foreach

         print( "</select></td><td>");



         print( "<td/><tr/></table><!-- create a submit button -->
            <p class = 'head'>
            <input type='hidden' name='ID' value='$ID' />
            <input type = 'submit' name = 'submit'
            value = 'Register'/></p></form></body></html>" );


            mysql_close( $database );
            }
         ?>
  • 0
    В строке 116 произошла ошибка, так как кажется, что вы опубликовали только фрагмент файла, было бы полезно опубликовать строку 116 :)
  • 1
    $_GET[ "ID" ]!=$_POST['id']
Показать ещё 1 комментарий
Теги:
database

2 ответа

0
$row["$inputname"]

Это должно быть изменено на следующую вероятность.

$row[$inputname]

Вы, где объявляете строку вместо доступа к переменной. Посмотрите, исправляет ли этот код код

  • 0
    @ Сара это помогло?
0

Вы должны изменить код линии 116:

<input type='hidden' name='ID' value='$ID' />

Со следующей строкой кодов:

<input type='hidden' name='ID' value='".$ID."' />
  • 0
    @ Сара, это решит твою проблему?
  • 0
    до сих пор у меня такая же проблема. он говорит неопределенный индекс для идентификатора, имени, имени, телефона. но это не день рождения, день смерти, пол и год. я не знаю почему?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню