2017-02-04 4 views
1

私は2つの形態とそのそれぞれのフォームIDPHPフォームIDがどのように機能するのですか、私のマッピングは正しいですか?

<form id="form1" action="controller.php" method="post"> 
<input name="email" type="email" placeholder="email" /> 
<input name="act" type="submit" value="adding" /> 
<!-- form1. --> 
</form> 
<form id="form2" action="controller.php" method="post"> 
<input name="name" type="text" placeholder="name" /> 
<input name="act" type="submit" value="editing" /> 
<!-- form2. --> 
</form> 

でPHPページを作成していると

<?php 
include('includes/connect.php'); 
if(isset($_POST['act'])) 
{ 
    if($_POST['act']=='form1') 
    { 
     $email=$_POST['email']; 
     $date=date('y-m-d'); 
     $query="insert into identity(name,email,password,post_date) values((''),('$email'),(''),('$date'));"; 
     $run=mysqli_query($con,$query); 
     if($run) 
     { 
      echo "<h3><center>email inserted</center></h3>"; 
     } 
     else 
     { 
      echo "<h3><center>not done</center></h3>"; 
     } 
     header("Location:formtest.php"); 
    } 
    else if($_POST['act']=='form2') 
    { 
     $name=$_POST['name']; 
     $date=date('y-m-d'); 
     $query="insert into identity(name,email,password,post_date) values(('$name'),(''),(''),('$date'))"; 
     $run=mysqli_query($con,$query); 
     if($run) 
     { 
      echo "<h3><center>name inserted</center></h3>"; 
     } 
     else 
     { 
      echo "<h3><center>not done for name</h3></center>"; 
     } 
     header("Location:formtest.php");  
    } 
} 
?> 

しかし、それぞれのIDでフォームを送信することができませんでし書を提出したときに、それは別のphpフォームにリダイレクトし、それはですリダイレクトページでスタックし、Mysqlデータベースにデータを挿入しません!フォームを識別するために

+1

IDがサーバーに渡されませんようにあなたは、隠された変数としてフォームIDを追加することができます。 'Print_r($ _ POST)' –

+0

以前にDBでSQLを直接使ったことはありますか?リクエストは現在どこに行きますか?また、SQLインジェクションにもオープンしており、パスワードをハッシングする必要があります。 – chris85

答えて

0

は、次の2つのオプションがあります:

  1. を提出ボタン
  2. の名前を読んで名前と値を持つ隠しフィールドを追加し、それをお読みください。

フォームの「名前」はサーバーに渡されません。

0

私は本当にあなたがIDの求めているものを理解することはできませんが、あなたがここで間違った値をチェックしていることは明らかである:ここ

if($_POST['act']=='form1') 

と:のように

if($_POST['act']=='form2') 

フォームの値は、それぞれアーカンソー:

<input name="act" type="submit" value="adding" /> 

<input name="act" type="submit" value="editing" /> 

このようにそれを修正してください:

if($_POST['act']=='adding') 
if($_POST['act']=='editing') 

と、あなたのコードが正しく実行されます。

+0

送信ボタンではなくフォーム全体をIDでマップし、それをcontroller.php(リダイレクトページ)で呼び出す必要がありますか? – Angad

0

<form id="form1" action="controller.php" method="post"> 
<input name="email" type="email" placeholder="email" /> 
<input name="act" type="submit" value="adding" /> 
<input name="formid" type="hidden" value="1" /> 
<!-- form1. --> 
</form> 
<form id="form2" action="controller.php" method="post"> 
<input name="name" type="text" placeholder="name" /> 
<input name="act" type="submit" value="editing" /> 
<input name="formid" type="hidden" value="2" /> 
<!-- form2. --> 
</form> 
+0

別の隠しフィールドではなく、フォーム全体をidでマップする必要がありますか? – Angad

関連する問題