2016-09-22 16 views
0

私は、ユーザーが「別のチケットを追加」ボタンを使って単一のフォームに3-4のチケットを追加する小さなアプリを持っています。これらのテキストボックスはJquery .append()によって生成され、各チケットには5つの入力ボックスがあります。私は、[送信]ボタンを打ったときforeach出力を使ってmysqlに複数のレコードを挿入するには?

<form action="ticket-addcode.php" method="post" enctype="multipart/form-data" class="my-form"> 
 
<span id="tixmegaform"> 
 
<input type="hidden" name="Eventid" value="<?php echo $eventid; ?>" /> 
 
<div class="AddRow"> 
 
<label>Package Name</label> 
 
\t <input class="requierd" type="text" name="ticketgroup" placeholder="Enter the Package Name. Most Preferably Event name" id="EN" value="<?php echo $ticketgroup; ?>"> 
 
</div> 
 
<h5>Ticket 1</h5> 
 
<div class="AddRow"> 
 
<label>Ticket Title</label> 
 
\t <input class="requierd" type="text" name="tname[]" placeholder="Enter the Package Name. Most Preferably Event name" id="EN"> 
 
</div> 
 
<div class="AddRow"> 
 
<label>Ticket Desc</label> 
 
\t <input class="requierd" type="text" name="tdesc[]" placeholder="Enter the Details" id="EN"> 
 
</div> 
 
<div class="AddRow"> 
 
<label>Ticket Cost</label> 
 
\t <input class="requierd" type="text" name="tprice[]" placeholder="Enter the ticket Cost in Numbers. No Currency" id="EN"> 
 
</div> 
 
<div class="AddRow"> 
 
<label>Ticket Book URL</label> 
 
\t <input class="requierd" type="text" name="turl[]" placeholder="Enter the URL without http" id="EN"> 
 
</div> 
 

 
<div class="AddRow"> 
 
<label>Time</label> 
 
\t <input type="text" class="left requierd" name="eventTime[]" id="timeformatExample1" placeholder="Start"> 
 
</div> 
 

 
<div class="AddRow"> 
 
<label>Date</label> 
 
\t <input class="requierd" type="text" name="tdate[]" placeholder="Enter the Package Name. Most Preferably Event name" id="from"> 
 
</div> 
 

 

 
</span> 
 
<input type="submit" name="submit" class="add_field_button_submit"> 
 
</form> 
 
</div> 
 

 
</div> 
 

 
</div> 
 
<a href="#"><div class="add_field_button">Add Another Ticket</div></a> 
 
</div>
ので

、以下のコードは、ネストされたforeachのは、送信ボタンによって生成された配列を介して実行されます。私は配列から値をフェッチすることができますが、何とか出力は私にとって有用ではありません。以下はforeachの&私はINSERT文を使用しようとした出力

Output 
 

 
**tname-----VIP tix 
 
tdesc-----Early Bird Desc 
 
tdesc-----VIP Desc Tix 
 
tprice-----5000 
 
tprice-----10000 
 
turl-----google.com 
 
turl-----yahoo.com 
 
eventTime-----00:30:00 
 
eventTime-----00:00:45 
 
tdate-----2-2-2016 
 
tdate-----3-3-2016**

foreach ($_POST as $pos => $newarr) { 
 
foreach($newarr as $res => $final){ 
 
echo $pos.'-----'.$final.'<br>'; 
 

 

 
} 
 
}
ですが、それだけでは動作しません。私のforeachがサブ配列(tname配列)と外側配列を解決しているようです。私のforeachが、ちょうどサブアレイ全体ではなく、異なるキーの値をフェッチすることができるならば、レコードをdbに挿入することができます。

これを達成する方法とINSERTステートメントをどこに置くべきかについて教えてください。

+0

申し訳ありませんが、本当にあなたの質問をキャッチすることはできません。あなたの 'foreachループ'はあなたに期待する配列を与えることができません(1つのtnameがありませんか?)、または 'INSERT'文を書く方法が分かりませんか? –

+0

また、javascriptの追加コードを投稿してください。 –

答えて

0

あなたがしたように私は$_POSTをループしているとは思わないでしょう。あなたの情報がどのように出てくるのが難しいのでしょうか?

代わりに、配列フィールドのいずれかを選択して、最初に所有しているチケットの数を判断してください。次に、チケットの数を使用して各チケットを反復処理します。これにより、関連情報の各グループ(チケット)のインデックスを一緒に取得できます。インデックスを使用すると、グループに関するすべての情報を取得できます。

一度必要な情報を取得したら、一度に1つの挿入を実行するか、1つの大きな挿入を実行して、各情報を保存することができます。わかりやすくするために、私たちは以前のアプローチ(PDOを使用)を使用します。

以下は、それがどのように見えるかのラフと未検証スケッチです:

try { 
    $dbh = new PDO($dsn, $user, $password); 
    // prepare your SQL statement 
    $sth = $dbh->prepare("INSERT INTO table (title, desc, price, url) VALUES(?, ?, ?, ?)"); 
    // loop over each ticket information 
    for ($i = 0, $numTickets = count($_POST['tname']); $i < $numTickets; $i++) { 
     $title = $_POST['tname'][$i]; 
     $desc = $_POST['tdesc'][$i]; 
     $price = $_POST['tprice'][$i]; 
     $url = $_POST['turl'][$i]; 
     // insert information into database 
     $sth->execute(array($title, $desc, $price, $url)); 
    } 
} catch (PDOException $e) { 
    // if something goes wrong, add some logic 
} 

詳細についてはPDOには、documentationをお読みください。挿入のためのSQLの形式以下

0

使用: 例:tbl_nameを INTO INSERT(A、B、C) VALUE(7,8,9)。

コード通り: $ sql01 = "INSERT INTO tbl_name(tname、tdesc、tprice、turl)VALUES"; foreachの($ _POSTとして$ POS => $ newarr){ $ SQL01 = "(";。 $ SQL01 = ISSET($ _ POST [ 'TNAME'])array_merge($ _ POST [ 'TNAME']、」。? ($ _ POST ['tdesc']);$ sql01。= isset($ _ POST ['tdesc']);$ issql($ _ POST ['tdesc']) ['tprice'])array_merge($ _ POST ['tprice'])?array_merge($ _ POST ['tprice']) 、 "、"): ""; $ sql01。= ")"; }

mysql_query($sql01); 
関連する問題