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());
 }

如果我只在表单中填写我的一个输入并点击提交,它会提交一个但还有 16 个空白记录,其中只有 playlist_id 和其他列为空白。如果我填写了 5 列,它会提交它们,但也会提交 11 个空白以及 fk_id

我的表格布局是这样的:

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

您需要做的是有一个 if 语句来验证您的表单,只要您有表单操作的 php 代码。您可以使用以下代码的一些变体。

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

$thisVar 是存储表单输入的数组,而 i 是数组中存储值的位置。

作为旁注,当您$size连续定义多次时,最后一个将是唯一的值。如果在这种情况下您需要另一个 for 循环,$j并且 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 回答