2

私はphpとmysqlの完全な初心者なので、皆さんが私を助けてくれることを願っています。ユーザーが一連の入力フィールドを動的に追加できるボタンのあるフォームがあります。私はフィールドを生成するためにappendを使用しています。私はそれについてのチュートリアルを読んでいたので、その部分を理解しました。これが私の追加スクリプトのベースとなったサイトです。ここにリンクしてください。私の問題は、そのWebサイトのような1つの入力フィールドだけでなく、一連のフィールドがある場合に、SQLクエリのforeachループをどのように構築するかです。これが私の追加の外観です(私は4つのフィールドを表示していますが、追加のセットごとに合計16のフィールドがあります)。投稿データをSQLデータベースにアップロードしたいと思います。私はサイトを検索してきましたが、私が持っているセットとは異なり、単一の入力フィールドのforeachループのサンプルしか表示されませんでした。

どうもありがとうございました。誰かがこれをどのように進めるかについてのアイデアを私に教えてくれることを願っています。

<script type="text/javascript">
    var count = 0;
    $(function(){
    $('p#add_field').click(function(){
    count += 1;
    $('#row-fluid').append(

        '<div class="span12" style="border-bottom:1px lightgray solid; padding:10px 0px;">'
            +'<div class="row-fluid"> '                         

                +'<div class="span1">'
                +'<label>&nbsp;</label>'
                +'<label class="radio"><input type="radio" id="process_where' + count + '" name="process_where[]' + '" value="Online" onClick="checkProcessType(this.value)" >Online</label>'   
                +'<label class="radio"><input type="radio" id="process_where' + count + '" name="process_where[]' + '" value="In-store" onClick="checkProcessType(this.value)" >In-store</label>'                       +'</div>'

                +'<div class="span1">'
                +'<label>&nbsp;</label>'
                +'<label class="radio"><input type="radio" id="status' + count + '" name="status[]' + '" value="Actual" onClick="checkStatus(this.value)" >Actual</label>   '
                +'<label class="radio"><input type="radio" id="status' + count + '" name="status[]' + '" value="Ghost" onClick="checkStatus(this.value)" >Ghost</label>'
                +'</div>'

                +'<div class="span1">'
                +'<label>Type</label>'
                +'<select id="upg' + count + '" name="upg[]' + '" onChange="checkExp(this.value)" class="input-small" >'
                +' <option value="" selected="&nbsp;" >&nbsp;</option>'
                +'<option value="Exp" >Exp</option>'
                +'<option value="Post" >Post</option>'
                +'<option value="Upgrade" >Upg</option>'
                +'<option value="Retail" >Retail</option>'
                +'</select>'
                +'</div>'

                +'<div id="upg' + count + '" class="span2">'
                +'<label>Full Date</label>'
                +'<input name="upg_date[]' + '" id="upg_date' + count + '" type="text" id="upg_date" placeholder="YYYY-MM-DD" class="input-small" />'
                +'<img id="jscalendar' + count + '" type="image" src="img/calendar.png" style="border-width:0px; width:16px; height:16px; background-color:#FFF; margin-bottom:-7px;" onclick="createPopCalendar3()">'
                +'</div>'
4

5 に答える 5

1

そして、次のようにphp送信ページを変更します。

if(is_array($_POST[counter]))
{
$count=count($_POST[counter]);

for($i=0;$i<=$count;$i++)
{


$process_where=$_POST["process_where".$i.""];
$status=$_POST["status".$i.""];
$upg=$_POST["upg".$i.""];
$upg_date=$_POST["upg_date".i.""];

if($process_where !="")
{
//Query Run Here
  $query="insert into tablename (process_where,status,upg,upg_date) values ('".$process_where."','".$status."','".$upg."','".$upg_date."')";
 mysql_query($query) or die(mysql_error());
}




}

}
于 2012-11-02T08:16:41.107 に答える
0

JavaScriptを次のように変更します。

<script type="text/javascript">
    var count = 0;
    $(function(){
    $('p#add_field').click(function(){
    count += 1;
    $('#row-fluid').append(

        '<div class="span12" style="border-bottom:1px lightgray solid; padding:10px 0px;">'
            +'<div class="row-fluid"> '                         

                +'<div class="span1">'
                +'<label>&nbsp;</label>'
                +'<label class="radio"><input type="radio" id="process_where' + count + '" name="process_where' + count +'" value="Online" onClick="checkProcessType(this.value)" >Online</label>'   
                +'<label class="radio"><input type="radio" id="process_where' + count + '" name="process_where' + count +'" value="In-store" onClick="checkProcessType(this.value)" >In-store</label>'                       +'</div>'

                +'<div class="span1">'
                +'<label>&nbsp;</label>'
                +'<label class="radio"><input type="radio" id="status' + count + '" name="status' + count +'" value="Actual" onClick="checkStatus(this.value)" >Actual</label>   '
                +'<label class="radio"><input type="radio" id="status' + count + '" name="status' + count +'" value="Ghost" onClick="checkStatus(this.value)" >Ghost</label>'
                +'</div>'

                +'<div class="span1">'
                +'<label>Type</label>'
                +'<select id="upg' + count + '" name="upg' + count +'" onChange="checkExp(this.value)" class="input-small" >'
                +' <option value="" selected="&nbsp;" >&nbsp;</option>'
                +'<option value="Exp" >Exp</option>'
                +'<option value="Post" >Post</option>'
                +'<option value="Upgrade" >Upg</option>'
                +'<option value="Retail" >Retail</option>'
                +'</select>'
                +'</div>'

                +'<div id="upg' + count + '" class="span2">'
                +'<label>Full Date</label>'
                +'<input name="upg_date' + count +'" id="upg_date' + count + '" type="text" id="upg_date" placeholder="YYYY-MM-DD" class="input-small" />'
                +'<img id="jscalendar' + count + '" type="image" src="img/calendar.png" style="border-width:0px; width:16px; height:16px; background-color:#FFF; margin-bottom:-7px;" onclick="createPopCalendar3()">'
                +'<input type="hidden" name="counter[]" value="1"></div>'

そして、次のようにphp送信ページを変更します。

if(is_array($_POST[counter]))
{


foreach($_POST[counter] as $key=>$val)
{


$process_where=$_POST["process_where".$key.""];
$status=$_POST["status".$key.""];
$upg=$_POST["upg".$key.""];
$upg_date=$_POST["upg_date".$key.""];

if($process_where !="")
{
//Query Run Here
  $query="insert into tablename (process_where,status,upg,upg_date) values ('".$process_where."','".$status."','".$upg."','".$upg_date."')";
 mysql_query($query) or die(mysql_error());
}




}

}
于 2012-11-02T06:36:14.633 に答える
0

あなたはこのようにすることができます。フォームの送信時にこのコードを確認してください:

if(is_array($_POST[process_where]))
{


foreach($_POST[process_where] as $key=>$val)
{

$process_where=$_POST[process_where][$key];
$status=$_POST[status][$key];
$upg=$_POST[upg][$key];
$upg_date=$_POST[upg_date][$key];

//Query Run Here
  $query="insert into tablename (process_where,status,upg,upg_date) values ('".$process_where."','".$status."','".$upg."','".$upg_date."')";
 mysql_query($query) or die(mysql_error());




}

}
于 2012-11-01T11:28:31.227 に答える
0

簡単にするために、これを行うと何も印刷されません。

if(is_array($_POST[counter]))
{
$count=count($_POST[counter]);
echo $count;

    for($i=0;$i<=$count;$i++)
{   

    echo "The number is " . $i . "<br />";

}

}

しかし、これを行うと、$countは問題なく出力されます。

if(is_array($_POST[counter]))
{
$count=count($_POST[counter]);
echo $count;

}

于 2012-11-02T15:39:17.457 に答える
0

提出後、編集したバージョンをアップロードしてください

if(is_array($_POST[counter]))
{
$count=count($_POST[counter]);

for($i=0;$i<=$count;$i++)
{


$process_where=$_POST["process_where".$i.""];
$status=$_POST["status".$i.""];
$upg=$_POST["upg".$i.""];
$upg_date=$_POST["upg_date".i.""];

if($process_where !="")
{
//Query Run Here
  $query="insert into tablename (process_where,status,upg,upg_date) values ('".$process_where."','".$status."','".$upg."','".$upg_date."')";
 mysql_query($query) or die(mysql_error());
}




}

}
于 2012-11-02T16:02:01.630 に答える