2016-09-08 25 views
0

を持ってWebsite interfaceが同じ名前

見 を持ってください、私は唯一の提出<button>のクリックの両方でこれらのデータを挿入することができます。 私は<button>を提出してこれらのデータを2回提出したいと思います。

ここに私のコードです。 uが見ることができるように、ユーザーが最初のフォームのいずれかにデータを提出することができますので、私forループここでは、この<form>

<?php 
for($x=1; $x<=2; $x++) 
    { 
?> 
<div class="col-lg-6"> 
<label>Passenger <?php echo $x ?> </label> 
<form role="form" method='post'> 
    <div class="form-group"> 
      <label>Title</label> 
      <label class="radio-inline"> 
     <input type="radio" name="gander" value="Mr" checked>Mr 
      </label> 
      <label class="radio-inline"> 
       <input type="radio" name="gander" value="Ms">Ms 
      </label> 
     </div> 
     <div class="form-group"> 
      <label>Enter name of Passenger</label> 
      <input class="form-control" name='name'> 
     </div> 
     <div class="form-group"> 
     <label>Enter Passenger Id <?php echo $x ?></label> 
    <input class="form-control" placeholder="960529-01-6925" name='ic'> 
    </div> 
    <button type="submit" class="btn btn-default" name="addbtn" method="post">Submit Button</button> 
    </form> 
    </div> 

    <?php 
    } 
    ?> 

はISSETボタンコード

<?php 
    if(isset($_POST["addbtn"])) 
     { 

$ganderphp = $_POST["gander"]; 
$namephp = $_POST["name"]; 
$icphp = $_POST["ic"]; 
$sql = "INSERT INTO `passenger_data`(`pass_gender`,`pass_name`,`pass_ic`,`Username`) VALUES ('$ganderphp','$namephp','$icphp','$username')"; 
if (mysqli_query($conn, $sql)) { 
    echo $sql; 
}else { 
    echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
} 
    } 

?> 

そのないユーザーフレンドリーです。 私はループから送信ボタンを外そうとしましたが、機能しません。 私はユーザーがこれらのすべてのデータに対して一度だけ提出できるようにするソリューションが必要です。

いくつかの研究では、配列[多分]とそれぞれがこれを行うことができますが、私はちょうどそれを使用する方法を知らない。

任意の回答をお待ちしております。

+0

入力を 'name =" gander [] "のような配列として送信し、送信ボタンをクリックすると入力をループすることができます。 –

+0

@PeterFeatherstone私はループから送信ボタンを移動した後、私はissetポスト 'for($ x = 1; $ x <= 2; $ x ++) { $ ganderphp = $ _POST [" gander [ "]; } 'が動作していませんが、データベースにサブミットしたときに値がSQLにありません –

+0

@CheeSengTeoフォーム処理中に' $ username'をどう取得していますか? –

答えて

1

まず、<form>を取り、forループの外で<button>要素を提出し、このようなname属性変更:

name="gander[<?php echo $x; ?>]" 
name='name[<?php echo $x; ?>]' 

name='ic[<?php echo $x; ?>]' 

だからあなたHTMLをフォームは次のようになります:

<div class="col-lg-6"> 
    <form role="form" method='post'> 
<?php 
    for($x=1; $x<=2; $x++){ 
?> 
    <label>Passenger <?php echo $x ?> </label> 
    <div class="form-group"> 
      <label>Title</label> 
      <label class="radio-inline"> 
     <input type="radio" name="gander[<?php echo $x; ?>]" value="Mr" checked>Mr 
      </label> 
      <label class="radio-inline"> 
       <input type="radio" name="gander[<?php echo $x; ?>]" value="Ms">Ms 
      </label> 
     </div> 
     <div class="form-group"> 
      <label>Enter name of Passenger</label> 
      <input class="form-control" name='name[<?php echo $x; ?>]'> 
     </div> 
     <div class="form-group"> 
     <label>Enter Passenger Id <?php echo $x ?></label> 
    <input class="form-control" placeholder="960529-01-6925" name='ic[<?php echo $x; ?>]'> 
    </div> 
    <?php 
    } 
    ?> 
    <button type="submit" class="btn btn-default" name="addbtn" method="post">Submit Button</button> 
    </form> 
</div> 
0123このような

そして提出した後、プロセスフォーム:

if(isset($_POST["addbtn"])){ 
    for($x = 1; $x <= 2; ++$x){ 
     $ganderphp = $_POST["gander"][$x]; 
     $namephp = $_POST["name"][$x]; 
     $icphp = $_POST["ic"][$x]; 

     // construct the query and execute it 

    } 
} 

追記は:今すぐあなたのクエリはSQLインジェクションの影響を受けやすいので、についてprepared statementsこちらをご覧ください。また、how you can prevent SQL injection in PHPを参照してください。

+0

その作業!あなたの答えをとても素早く評価してください!ありがとう。 –

+0

@CheeSengTeo大歓迎です! :-) –

+0

、私はSQLインジェクションについて注意しているので、実際にはこれについて大きな質問がありました。私はこれを防ぐためにDB_functionを使用していますが、 ''によってSQL注入に何も成功したことはありません。 DROP TABLE table; - 可能であれば、DB_functionがSQLインジェクションを防止するために働いているかどうかを調べるのに役立つでしょうか? –

関連する問題