2017-11-30 13 views
0

簡単に言うと、スクリプトには入力するイメージの数が入力されます。入力された値は入力されたイメージ値と同じ入力を持つフォームを表示するwhileループになります。 okey、私はループの外側にサブミットボタンを作った、私は今データベースに追加したい、私はフォームで行ったようにクエリをwhileループで再使用したが、最後のアイテムのみを挿入する。問題は?フォームをループした後に値をデータベースに挿入する

いくつかのこと、あなたはすべてのループを備えた新しいフォームを作成しているが、一度だけ、それを閉じる。..開発へ

if (isset($_POST["chooseimagen"])) { 
    $i=0; 
    $imgvl = $_POST["imgvl"]; 
    $cid = $_POST["cid"]; 
    while($i<$imgvl){ 

     echo '<form name="finalform" method="post" action=""> 
     id of content :<input type="text" name="idcontent" value="'.$cid.'"/><br><br> 
     Enter id of image :<input type="text" name="imgid" value=""/><br><br> 
     Enter name of image : <input type="text" name="imgname" value=""/><br><br> 
     -----------------------------------------------------------------------<br> 
     '; 
     $i++; 
    } 

    echo "<br><br><input type='hidden' name='imgvl' value='".$imgvl."'/><input type='submit' name='addto' value='insert images'/></form"; 
} 

    ?> 
<?php 
if(isset($_POST["addto"])){ 
    $imgvl = $_POST["imgvl"]; 
    $i=0; 
    while ($i < $imgvl){ 
    $idcontent = $_POST["idcontent"]; 
    $imgid = $_POST["imgid"]; 
    $imgname = $_POST["imgname"]; 
    $queryin = "insert into content_images values ('$imgid','$idcontent','$imgname','ok')"; 
    mysqli_query($con,$queryin); 
     $i++; 
    } 

} 


?> 
+2

あなたのコードはSQLインジェクションに対して脆弱です。代わりに[prepared statements](https://www.youtube.com/watch?v=nLinqtCfhKY)を使用する方法を学んでください。 –

+0

私はちょうどテストしていることを知っています –

+2

準備されたステートメントを使用して "テスト"する必要があります。 – Toastrackenigma

答えて

0

はまだ新しいが、私は知っていると思う:これは、スクリプトの一部です。また、>が欠けているので、技術的にはフォームを一切閉鎖していません。

while($i<$imgvl){ 

    echo '<form name="finalform" method="post" action=""> 

...

$i++; 
} 

echo "<br><br><input type='hidden' name='imgvl' value='".$imgvl."'/> 
<inputtype='submit' name='addto' value='insert images'/></form"; 

しかし、私は、あなたがこの問題を得ている理由は、あなたが入力のために同じ名前を持つ作成し、各フォームだと思います。あなたが挿入しているすべてのアイテムが最後の入力セットに過ぎないので、最後のアイテムを取得するだけです。

フォームにアクションがないため、すべてのフォームが基本的に結合されています。つまり、入力した入力名を区別する方法がないため、割り当てられた最後の値が使用されます。

希望します。

+0

いいえ入力名前を配列ex:user []としなければならないと思いますが、どのように行うかについての知識はありません。あなたが単純な例であなたが言ったことをテストすることができればどんな方法でも良いでしょう。 –

+0

あなたのためにそれを書くつもりはありません。しかし、あなたの利点をあなたのループを使用する場合、それは動作します。このname = "contentid '。$ i。'"のような名前をつけてください。これは自動的にunqiue idを各入力に割り当てます。次に、挿入機能で同じことをするだけです。 – LoveHateDevelopment

関連する問題