2012-01-05 18 views
0

(私の英語力がないため申し訳ありません)PHPシングルページフォーム処理の問題

まあ、私は自分のコードに3つの誤りがあります。

エラーの:注意:すべての

  1. まず、それはショーの未定義のインデックス:フォームCで:\ xamppの\ htdocsに\ evantechbd \ index.phpをライン461上の私は、このフォームを実行すると。
  2. エラーが表示された場合は、エラーメッセージが表示されますが、正しいフィールドは空です。例:このフォームには4つのフィールドがあります。 a)画像をアップロードする、b)ディスカッションを選択するc)サブジェクトおよびd)メッセージ。画像をアップロードし、ディスカッションを選択して件名を書きますが、メッセージを書くのを忘れたとします。次に、それは "メッセージが必要です"と表示され、すべてのフィールドは空です。私は正しい空欄を望まない。
  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"; 
     } 
    } 
} 
?> 

多くの感謝!
カンタ。

+0

本当にインデントが必要です。まず、この 'if($ _POST ['form'] ==" Submit ")を参照してください。 {'、末尾の中括弧は何ですか? – Matt

+0

261行目にエラーが報告されますが、コードには120行しかありません。どの行がエラーを報告していますか? – ManseUK

+0

フォーマット済みのベスト私はif文の関数が正当なのでしょうか? – ManseUK

答えて

1
  1. 今のウェブサイトのほとんどはJavaScriptを使用して、クライアント側の検証を使用しています

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

  2. を次のようにあなたの場合は最初の条件を変更してみてください。 jqueryフレームワークを使用すると、作業が簡単になります。ただし、POSTイベントの後ですでに検証を使用しているためです。あなたは、欄外のコードのような関連フィールドに値を設定する必要があります。それは被験者の価値を設定します。

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

  3. あなたは、コードを更新する場合は、[はい、それは再びポストを行うと、挿入します。いくつかのコントロールを行う必要があります。しかし、これらはあなたのデータに依存します。

a。データベース内で一意のキーインデックスを作成する

b。挿入の前に既存のレコードを確認してください。

c。ユーザーに成功したメッセージが表示されたら、数秒後にページを同じページにリダイレクトします。

+0

アドバイスありがとうございます。 –

+0

誰かが2番目のポイントでHTMLコンテンツをフォーマットしてください。 –

+0

@ Umme。どういたしまして。 –