2013-03-13 39 views
-3

當我刪除它時工作正常。 當我取消它也可以正常工作。 但是,當我編輯並點擊保存編輯後,我收到消息「未定義的索引:搜索」。 雖然數據被保存。 我該如何解決這個問題。保存編輯表格時在PHP中未定義的索引

代碼是:

<html> 
    <head> 
    </head> 
<body> 
<?php 
    $page='search.php'; 
    mysql_connect("localhost","root","") or die (mysql_error()); 
    mysql_select_db("list") or die (mysql_error()); 

    if(empty($_POST) === false) 
    { 

     if ($_POST['search'] == 'search') 
     { 

      $data=$_POST['criteria']; 
      if (empty($data) === true) 
      { 
       echo 'Please enter some text!!<br/>'; 
      } 
      else 
      { 
       $get=mysql_query("SELECT SRNO, fname, lname, phone, email, address, comments from names where fname='" . mysql_real_escape_string($data) . "'"); 
       if (mysql_num_rows($get)==0) 
        { 
         echo 'There are no search results!!'; 
        } 
         else 
        { 
         echo '<table border=0 cellspacing=25 cellpadding=1>'; 
         echo'<tr><th>Sr. No</th><th>First Name</th><th>Last Name</th><th>Phone No</th><th>E-mail</th><th>Address</th><th>Comments!!</th><th>Modify</th><th>Delete!</th></tr>';  
         while($get_row=mysql_fetch_assoc($get)) 
          { 
           echo '<tr><td>'.$get_row['SRNO'].'</td><td>'.$get_row['fname'].'</td><td>'.$get_row['lname'].'</td><td>'.$get_row['phone'].'</td><td>'.$get_row['email'].'</td><td>'.$get_row['address'].'</td><td>'.$get_row['comments'].'</td><td><a href="search.php?edit='.$get_row['SRNO'].'">Edit</a></td><td><a href="search.php?delete='.$get_row['SRNO'].'">Delete</a></td></tr>'; 

          } 
         echo '</table>'; 

        } 
      } 
     } 

     else if ($_POST['save']== 'save') 
     { 

      $count=0; 
      $fname= $_POST['fname']; 
      $lname= $_POST['lname']; 
      $srno= $_POST['SRNO']; 
      $address=$_POST['address']; 
      $comments=$_POST['comments']; 
      $email=$_POST['email']; 
      $phone=$_POST['phone']; 

       if (empty($lname) === true || empty($fname) === true || empty($address) === true || empty($comments) === true || empty($email) === true || empty($phone) === true) 
       { 
        echo '<h3>All fields are mandatory</h3>'; 

       } 
       else 
       { 
         if (filter_var($email,FILTER_VALIDATE_EMAIL) === false) 
         { 
          echo '<h3>This is not a valid e-mail address.</h3><br />'; 
          $count=$count+1; 
         } 
         if (ctype_alpha($fname) === false || ctype_alpha($lname) === false) 
         { 
          echo '<h3>Name should contain character only!</h3><br />'; 
          $count=$count+1; 
         } 
         if(!is_numeric($phone)) 
         { 
           echo '<h3>Please enter a valid phone number</h3><br />'; 
           $count=$count+1; 
         } 
         if ($count==0) 
         { 
          if(isset($_GET['edit'])) 
           { 
            mysql_query('update names set fname="'.$fname.'", lname="'.$lname.'", address="'.$address.'", comments="'.$comments.'", email="'.$email.'", phone="'.$phone.'" where SRNO="'.$srno.'"'); 

           } 
           else if(isset($_GET['add'])) 
            { 
             mysql_query("INSERT INTO names (fname,lname,phone,email,comments,address) VALUES ('$fname', '$lname','$phone','$email','$comments','$address')"); 
            } 

          //header('Location:'.$page); 
         } 

       } 
     } 
    } 
      //else if 
     /* 
     if(mysql_num_rows($getf) == 0) 
     { 
      $getel=mysql_query('SELECT SRNO, fname, lname, phone, email, address, comments from names where lname='.$_GET['$data'])); 

     }*/ 



     if(isset($_GET['delete'])) 
     { 
      mysql_query('DELETE from names where SRNO='.mysql_real_escape_string((int)$_GET['delete'])); 

     } 

     if(isset($_GET['edit'])) 
     { 
      $getedit=mysql_query('SELECT SRNO, fname, lname, phone, email, address, comments from names where SRNO='.mysql_real_escape_string((int)$_GET['edit'])); 

      echo '<table border=0>'; 
      while ($get_row=mysql_fetch_assoc($getedit)) 
       { 
        echo '<form method="POST" action="">'; 

        echo '<tr><td>Sr.No:</td><td><input type="text" value='.$get_row['SRNO'].' name="SRNO" readonly="readonly"></td></tr>'; 
        echo '<tr><td>First Name:</td><td><input type="text" value='.$get_row['fname'].' name="fname"></td></tr>'; 
        echo '<tr><td>Last Name:</td><td><input type="text" value='.$get_row['lname'].' name="lname"></td></tr>'; 
        echo '<tr><td>Phone No:</td><td><input type="text" value='.$get_row['phone'].' name="phone"></td></tr>'; 
        echo '<tr><td>E-mail address:</td><td><input type="text" value='.$get_row['email'].' name="email"</td></tr>'; 
        echo '<tr><td>Address:</td><td><textarea name="address" rows=4>'.$get_row['address'].'</textarea></td></tr>'; 
        echo '<tr><td>Comments:</td><td><textarea name="comments" rows=4>'.$get_row['comments'].'</textarea></td></tr>'; 
        echo '<tr><td><input type="submit" name="save" value="save"></td><td><a href="search.php">Cancel</a></td></tr>'; 
        echo '</form>';         
       } 
      echo '</table>'; 

     } 

      echo '<form action="" method="post">'; 
      echo '<input type="text" name="criteria">'; 
      //echo '<input type="hidden" name="form" value="search">'; 
      echo '<input type="submit" value="search" name="search">'; 
      echo '</form>'; 

echo '<br /><a href="index.php">Home</a>'; 
?> 
</body> 
</html> 
+1

看着**相關的**,這個問題每天會被詢問多次。 – Peon 2013-03-13 10:04:06

+0

請注意,最好的/正確的方法來檢查它是否是POST請求(而不是GET); ($ _ SERVER ['REQUEST_METHOD'] =='POST') – 2013-03-13 10:09:18

+0

[Undefined index error PHP]可能的重複(http://stackoverflow.com/questions/10613570/undefined-index-error -php) – bummi 2014-09-15 09:30:39

回答

0

是一切工作正常首先它檢查當你發佈保存表單時,你$ _POST ['search']。其中不包含任何搜索表單字段。

JST全部更換$_POST['save']$_POST['search'](isset($_POST['save']) && $_POST['save']=='save')(isset($_POST['search']) && $_POST['search']=='search')

,你需要記住的東西是

  1. 如果您的查詢返回一個結果,然後不while循環 那裏使用。簡單地說就是resutl。
  2. 總是嘗試在表格之前/之前放置表格標籤。
  3. 在上面的結構中,您在while循環中重複同樣的名稱。
  4. 用isset檢查你的變量。

嘗試以上建議,然後嘗試。

+0

非常感謝Mukund。我會銘記在心。 – 2013-03-13 10:23:42

4

這是因爲search變量不被形式發送的這個時候。 如果您先檢查它是否已設置,那麼您將不會收到該警告。

改變這一行

if ($_POST['search'] == 'search') 

對於這一個:

if (isset($_POST['search']) && $_POST['search'] == 'search') 
+0

謝謝史蒂夫......它真的幫了我 – 2013-03-13 10:24:49

0

我認爲你必須檢查你的病情此類似

if (isset($_POST['search']) && $_POST['search'] == 'search') 
{ 
    // code here 
} 
else if(isset($_POST['save']) && $_POST['save']== 'save') 
{ 
    // code here 
} 
+0

其實在編輯的情況下。您的表單沒有字段名稱搜索。因此,根據您的條件代碼檢查搜索,但它不存在。嘗試這個。 – Nitin 2013-03-13 10:11:20