2012-01-05 186 views
0

(對不起,我的英語不好)Php單頁表單處理問題

嗯,我的代碼有3個錯誤。

錯誤的:

所有的
  1. 首先,它的顯示:注意:未定義指數:形式在C:\ XAMPP \ htdocs中\ evantechbd \的index.php上線461,當我運行這種形式。
  2. 如果有任何錯誤發現它顯示錯誤消息,好吧,但正確的字段是空的。例如:在這個表單中有4個字段。 a)上傳圖像,b)選擇討論c)主題和d)消息。假設你上傳圖片,選擇討論並寫出主題,但忘記寫信息。然後顯示「Message Required」,每個字段都是空的。我不希望空的領域是正確的。
  3. 成功提交表單後,顯示「討論已提交」。但之後,如果我刷新頁面,它將數據發送到數據庫。但我沒有點擊提交按鈕。爲什麼會發生?

這裏是我的代碼:

<?php 
if ($_POST['form'] == "Submit") { 
    $err  = array(); 
    $filed  = addslashes($_FILES['file']['tmp_name']); 
    $img_named = addslashes($_FILES['file']['name']); 
    $img_type = addslashes($_FILES['file']['type']); 
    @$imgd = addslashes(file_get_contents($_FILES['file']['tmp_name'])); 

    function getExtension($str) 
    { 
     $i = strrpos($str, "."); 
     if (!$i) { 
      return ""; 
     } 
     $l = strlen($str) - $i; 
     $ext = substr($str, $i + 1, $l); 
     return $ext; 
    } 
    $extension  = getExtension($img_named); 
    $extension  = strtolower($extension); 
    $image_named_uniq = uniqid() . '.' . $extension; 
    $upload_path_dis = 'user/manage/discussionimg/'; 

    $diss = $_POST['type']; 
    $sub = $_POST['sub']; 
    $msg = $_POST['msg']; 
    $date = "On " . date("F Y h:i:s A"); 

    if (!isset($_SESSION['uname'])) 
     $err[] = "You need to login"; 

    else { 
     $uname = $_SESSION['uname']; //session username 

     if (empty($sub) && empty($msg) && empty($filed)) 
      $err[] = "All field required"; 
     else { 
      if (empty($sub)) 
       $err[] = "Subject Requried"; 

      if (empty($msg)) 
       $err[] = "Message Requried"; 

      if (empty($filed)) 
       $err[] = "SORRY, you have to be upload a image"; 
     } 
    } 

    if (!empty($err)) { 
     foreach ($err as $er) { 
      echo "<font color=red>$er</font><br/>"; 
     } 
    } 

    else { 
     $sql = mysql_query("INSERT INTO discussion VALUES ('', '$imgd', '$image_named_uniq', 
'$diss', '$sub', '$msg', '$uname', '$date') "); 
     if (!$sql) 
      echo "Can't submit your discussion" . mysql_error(); 

     if (!move_uploaded_file($_FILES['file']['tmp_name'], $upload_path_dis . $image_named_uniq)) { 
      die('File Not Uploading'); 
     } else { 
      echo "Discussion was submitted"; 
     } 
    } 
} 
?> 

非常感謝您的幫助!
Kanta。

+0

你真的需要縮進。首先我看到這個'if($ _POST ['form'] ==「Submit」) {',wheres the end brace? – Matt 2012-01-05 08:38:40

+0

您在第261行報告錯誤 - 但您的代碼只有120行 - 哪一行報告錯誤? – ManseUK 2012-01-05 08:39:11

+0

格式化最好我可以...一個if語句中的函數是合法的嗎? – ManseUK 2012-01-05 08:44:23

回答

1
  1. 試着改變你的第一個,如果條件如下

    if (isset($_POST['submit']))

  2. 現在大多數網站的使用JavaScript使用客戶端驗證。你可以使用jquery框架來讓事情變得更簡單。但是,由於您已經在POST事件之後使用驗證。您必須按照以下代碼將值設置爲相關字段。它會設定主題的價值。

    <input type="text" name="sub" value="<?php if(isset($_POST["sub"])) echo $_POST["sub"]; ?>" size="46"/>

  3. 是,如果你刷新的代碼會再次這樣做後,並插入。你必須做一些控制。然而這些事情取決於你的數據。

a。在數據庫中製作唯一的密鑰索引

b。插入前檢查現有記錄。

c。一旦用戶看到成功的消息,幾秒鐘後將您的頁面重定向到同一頁面。

+0

謝謝你的建議。 – 2012-01-05 08:55:46

+0

有人請在我的第二點格式化HTML內容。 – 2012-01-05 08:57:04

+0

@ Umme。不用謝。 – 2012-01-05 08:57:52