2011-01-26 8 views
0

CMSに同じフィールド名を使用するフォームをデータベースにアップロードしようとしています。

これは、フォーム(私はdivの製品ごとのオプションの数を乗算するjQueryのを使用している)である:

<form method="post" enctype="multipart/form-data" action="testing.php"> 
<div class="OptExtra1"> 
    <h3>Additional Option</h3> 
    <label for="RESAddType">File type (i.e. &ldquo;CD&rdquo; or &ldquo;Download&rdquo;)</label> 
    <input name="RESAddType[]" type="text" id="RESAddType" size="48" class="FW" /> 
    <label for="RESAddTitle">File title (i.e. &ldquo;Boxed Set of 4 CDs&rdquo;)</label> 
    <input name="RESAddTitle[]" type="text" id="RESAddTitle" size="48" class="FW" /> 
    <label for="RESAddFType">File format (As &ldquo;MP3&rdquo; // &ldquo;WORD&rdquo; // &ldquo;PDF&rdquo;)</label> 
    <input name="RESAddFType[]" type="text" id="RESAddFType" size="48" class="FW" /> 
    <label for="RESAddPrice">File price (Enter as &ldquo;6.99&rdquo; &ndash; <strong>NO &ldquo;&pound;&rdquo; SIGN!</strong>)</label> 
    <input name="RESAddPrice[]" type="text" id="RESAddPrice" size="48" class="FW" /> 
    <label for="RESAddFName">File name</label> 
    <input name="RESAddFName[]" type="text" id="RESAddFName" size="48" class="FW" /> 
    <label for="RESAddTxt">File text</label> 
    <textarea name="RESAddTxt[]" id="RESAddTxt" cols="70" rows="50" class="mceAdvanced"></textarea> 
    <label for="RESAddSample">File text</label> 
    <textarea name="RESAddSample[]" id="RESAddSample" cols="70" rows="50" class="mceVSimple"></textarea> 
<input type="button" value="Add another option" class="SubmitButton" onclick="inserter()" /> 
<hr /> 
</div> 
<p><input type="submit" name="submit" value="Add Resource" class="SubmitButton"/><input type="hidden" name="RESCatCode" value="2" /><input type="hidden" name="RESCatSubCode" value="5" /><input type="hidden" name="submitted" value="true" /></p> 

、これは私がPHP

if(isset($_POST['submitted'])){ 

$RESCode = 100; 
$RESAddType = $_POST['RESAddType']; 
$RESAddTitle = htmlentities($_POST['RESAddTitle'], ENT_QUOTES); 
$RESAddFType = $_POST['RESAddFType']; 
$RESAddPrice = $_POST['RESAddPrice']; 
$RESAddFName = $_POST['RESAddFName']; 
$RESAddTxt = mysql_real_escape_string($_POST['RESAddTxt']); 
$RESAddSample = mysql_real_escape_string($_POST['RESAddSample']); 


for ($i=0; $i < count($_POST['RESAddType']); $i++) { 
    $OptionQuery = mysql_query ("INSERT INTO ResAdd (RESAddCode, RESCode, RESAddType, RESAddTitle, RESAddFType, RESAddPrice, RESAddFName, RESAddTxt, RESAddSample) VALUES ('', '".$RESCode."', '".$RESAddType."', '".$RESAddTitle."', '".$RESAddFType."', '".$RESAddPrice."', '".$RESAddFName."', '".$RESAddTxt."', '".$RESAddSample."');"); 
} 

header("Location: welcome.php"); 
exit; 
} 

のために、これまで持っているものですこれはうまく機能しますが、データベースに "array"という単語を入れるだけです。また、htmlentitiesとmysql_real_escape_stringの投稿はデータベースに何もアップロードしません。

どのようなアイデアをお願いしますか?

+1

をループする必要があります。どのbtwがフォーム内で 'RESAdd [FType] []'と呼ばれる方が良いでしょうか。 – mario

答えて

1

あなたは、配列のエントリを含む**すべての**の値にmysql_real_escape_thingを適用する必要が

$cnt=count($_POST['RESAddType']); 

for ($counter=0; $counter < $cnt; $counter++) 
{ 
    $_POST['RESAddType'][$counter]// to access the value 
    $_POST['RESAddPrice'][$counter]// 
    //create your query here 
} 
+0

これはおかげで、両方とも動作するようですが、これは短くなりました:) – WOWDesign

2

あなたは上記のコードでは、これらすべての$iで:)

$OptionQuery = mysql_query ("INSERT INTO ResAdd (RESAddCode, RESCode, RESAddType, RESAddTitle, RESAddFType, RESAddPrice, RESAddFName, RESAddTxt, RESAddSample) VALUES ('', '".$RESCode[$i]."', '".$RESAddType[$i]."', '".$RESAddTitle[$i]."', '".$RESAddFType[$i]."', '".$RESAddPrice[$i]."', '".$RESAddFName[$i]."', '".$RESAddTxt[$i]."', '".$RESAddSample[$i]."');"); 

ルック何かを忘れてしまいました。それらを使用しない場合、スクリプトは配列全体を使用しようとします(配列を文字列として印刷または保存しようとすると、常に「配列」が出力されます)。

P.S.私の答えを編集しました。前の1つを申し訳ありません、私はコードを誤解し、間違った答えを投稿しました。

関連する問題