1

私のコードに問題があります:

$size = count($_POST['tv_id']);
$size = count($_POST['Season']);
$size = count($_POST['EpisodeNumber']);
$size = count($_POST['EpisodeName']);

$i = 0;
while ($i < $size) {
    $Season = mysql_real_escape_string($_POST['tv_id'][$i]);
    $Season = mysql_real_escape_string($_POST['Season'][$i]);
    $EpisodeNumber= mysql_real_escape_string($_POST['EpisodeNumber'][$i]);
    $EpisodeName= mysql_real_escape_string($_POST['EpisodeName'][$i]);

    $sql="INSERT INTO tvshows SET fk_id = '".$fk_id."', tv_id ='".$tv_id."', Season ='".$Season."', EpisodeNumber='".$EpisodeNumber."', EpisodeName='".$EpisodeName."'";
    $query = mysql_query($sql) or die(mysql_error());
 }

フォームに入力の 1 つだけを入力して送信を押すと、その 1 つだけでなく、playlist_id と他の列が空白の 16 の空白レコードも送信されます。5列に入力すると、それらが送信されますが、fk_idだけで11個の空白も送信されます

私のテーブルレイアウトは次のようなものです:

echo '<tr>';
echo "<td><input type='hidden' name='tv_id[]' id='tv_id' value='' /></td>";
echo "<td><input type='text' name='Season[]' id='Season[]' value='' /></td>";
echo "<td><input type='text' name='EpisodeNumber[]' id='EpisodeNumber[]' value='' /></td>";
echo "<td><input type='text' name='EpisodeName[]' id='EpisodeName[]' value='' /></td>";
echo '</tr>';

echo '<tr>';
echo "<td><input type='hidden' name='tv_id[]' id='tv_id' value='' /></td>";
echo "<td><input type='text' name='Season[]' id='Season[]' value='' /></td>";
echo "<td><input type='text' name='EpisodeNumber[]' id='EpisodeNumber[]' value='' /></td>";
echo "<td><input type='text' name='EpisodeName[]' id='EpisodeName[]' value='' /></td>";
echo '</tr>';

echo '<tr>';
echo "<td><input type='hidden' name='tv_id[]' id='tv_id' value='' /></td>";
echo "<td><input type='text' name='Season[]' id='Season[]' value='' /></td>";
echo "<td><input type='text' name='EpisodeNumber[]' id='EpisodeNumber[]' value='' /></td>";
echo "<td><input type='text' name='EpisodeName[]' id='EpisodeName[]' value='' /></td>";
echo '</tr>';

echo '<tr>';
echo "<td><input type='hidden' name='tv_id[]' id='tv_id' value='' /></td>";
echo "<td><input type='text' name='Season[]' id='Season[]' value='' /></td>";
echo "<td><input type='text' name='EpisodeNumber[]' id='EpisodeNumber[]' value='' /></td>";
echo "<td><input type='text' name='EpisodeName[]' id='EpisodeName[]' value='' /></td>";
echo '</tr>';

さらに約10分間続けます。

4

2 に答える 2

1

あなたがする必要があるのは、フォームアクションのphpコードがある場所ならどこでも、フォームを検証するためのifステートメントを用意することです. 以下のコードのいくつかの変形を使用できます。

for($i = 0; $i < count($thisVar); $i++) {
    if(!empty($thisVar[$i])) {
        <insert query>
    }
}

$thisVar はフォームからの入力を格納する配列で、i は値が格納される配列内の場所です。

補足として、$size連続して複数回定義した場合、最後の値が唯一の値になります。$j別の for ループが必要で、if ステートメントがそこにある場合は、2D 配列を実行できます。$thisVar[$i][$j]

于 2012-12-04T23:56:19.083 に答える
1

すべてのカウントを同じ var サイズに入れている理由がわかりませんが、空のレコードの場合は、次のようにすることができます。

while ($i < $size) {
    $Season = mysql_real_escape_string($_POST['tv_id'][$i]);
    $Season = mysql_real_escape_string($_POST['Season'][$i]);
    $EpisodeNumber= mysql_real_escape_string($_POST['EpisodeNumber'][$i]);
    $EpisodeName= mysql_real_escape_string($_POST['EpisodeName'][$i]);
    //....
    if(!empty($Season) and !empty($EpisodeNumber) and ...)
    {
    $sql="INSERT INTO tvshows SET fk_id = '".$fk_id."', tv_id ='".$tv_id."', Season ='".$Season."', EpisodeNumber='".$EpisodeNumber."', EpisodeName='".$EpisodeName."'";
    $query = mysql_query($sql) or die(mysql_error());
    }
    $i++;  }
于 2012-12-05T00:00:16.150 に答える