2011-12-23 20 views
-2

私は3つのフィールドname,date,schoolを持つPHPフォームを持っています。それらに関連するものは、最大でcollege,coursetitle,coursenumberである。PHPを使用してMySQLに配列を挿入します

私は、挿入SQLになりたい:

INSERT INTO _some_table_ 
    (name, date, school, college, coursetitle, coursenumber) 
VALUES 
    (foo, 2011-12-23, UCLA, BizSchool, Accounting, XXX0000), 
    (foo, 2011-12-23, UCLA, BizSchool, Accounting, XXX0000), 
    (foo, 2011-12-23, UCLA, BizSchool, Accounting, XXX0000), 
    (foo, 2011-12-23, UCLA, BizSchool, Accounting, XXX0000), 
    (foo, 2011-12-23, UCLA, BizSchool, Accounting, XXX0000), 
    (foo, 2011-12-23, UCLA, BizSchool, Accounting, XXX0000); 

などと私はcoursetitleが空白の行を含める必要はありません。私は配列との厳しい時を過ごしています!

+0

大学情報はどこから来たのですか? 1回のフォーム提出ごとに40行を追加しますか?間違った抽象化のように聞こえる。 – Corubba

+0

テーブルを正規化する必要があります。名前、カレッジ、コース、それからすべてをリンクするテーブル用のテーブルがあります。あなたが持っているものにこだわりたいなら、あなたが作業しているデータの配列を表示できますか? –

+0

配列はどこですか? PHPコードを表示できますか? – ManseUK

答えて

0

これを配列として使用する場合は、セッションに配列値を格納するようにセッションと混合する必要があります。したがって、挿入クエリはループ内にあります。

コードをコピーできますか?あるいは、私が例をコード化したいのですか?

<?php 
$mysqli = new Mysqli('localhost','root','pass','db'); 

$stmt = $mysqli->prepare('INSERT INTO _some_table(name, date, school, college, coursetitle, coursenumber) VALUES(?, ?, ?, ?, ?, ?)'); 

/** 
* ITERATE VALUES, EACH KEY IN ARRAY CORRESPONDS TO A NEW ROW, THAT HAS TO BE INSERTED. 
*/ 
foreach($values as $arr) { 
    if (!empty($arr['coursetitle'])) { 
     extract($arr); 
     /* 
     * BIND THE VALUES TO BE INSERTED TO THE STATEMENT 
     */ 
     $stmt->bind_param('ssssss', $name, $date, $school, $college, $coursetitle, $coursenumber); 
     $stmt->execute(); // Execute statement 
    } 
} 

$stmt->close(); 
$mysqli->close(); 
?> 

このofcourseのは、あなたが列名に等しいキーを持つ連想配列を使用していると仮定されています。おかげで

+0

アレイを使用するにはセッションを使用する必要がありますか?ごめんなさい? – ManseUK

+0

どのようにあなたの値を動的な値として配列に追加できますか?私はソリューションを与え、ユーザーが既にデータベースのテーブルに値をコミットしたいときに配列とセッションの間でそれをミックスします。したがって、ユーザーはデータベースをコミットできます。簡単な例のトランザクションのように:)私はあなたが私の意味を持っていることを願って –

0

あなたはmysqliのを使用している場合は、それはこのようなものである可能性があります。

あなたは、あなただけの問題POSTの配列を取得をしている準備された文here

0

についての詳細を読むことができますか?あなたがHTMLを書くとき、あなたのような何かを行うことができます。

<table> 
    <tr> 
     <td>Course: </td><td><input type="text" name="coursetitle[]" value="" /></td> 
    </tr>   
    <tr> 
     <td>Course Number: </td><td><input type="text" name="coursenum[]" value="" /></td> 
    </tr> 
    <tr> 
     <td colspan="3"><h3>Add Another:</h3></td> 
    </tr> 
    <tr> 
     <td>College: </td><td><input type="text" name="college[]" value="" /></td> 
    </tr> 
    <tr> 
     <td>Course: </td><td><input type="text" name="coursetitle[]" value="" /></td> 
    </tr>   
    <tr> 
     <td>Course Number: </td><td><input type="text" name="coursenum[]" value="" /></td> 
    </tr> 
    <tr> 
     <td>College: </td><td><input type="text" name="college[]" value="" /></td> 
    </tr> 
</table> 

を、あなたが は次に、このようなPHPでそれを処理したいとそれらの多く作ることができます。

$i = 0; 
$complete = 0; 
$query = "INSERT INTO TABLE (name, date, school, college, coursetitle, coursenumber) VALUES "; 
foreach($_POST['coursetitle'] AS $course) { 
    $title = trim($course); 
    if (!empty($title)) { 
     $college = trim($_POST['college'][$i]); 
     $num = trim($_POST['coursenum'][$i]); 
     $query .= "('foo', '" . date("Y-m-d") . "', 'UCLA' '{$college}', '{$title}', '{$num}'),"; 
    $complete++; 
    } 

    $i++; 
} 

$query = substring($query, 0, strlen($query) - 1); // Removes last comma from query 
if ($complete == 0) { 
    echo "No colleges were posted, or none of the course titles were completed."; 
    exit; 
} else { 
    $query .= ";"; 
    mysql_query($query); 
} 

またはそのような何か:)

+0

ありがとう! foreach/if(空)を使用しています。 –

関連する問題