这是我到目前为止所做的事情。我正在使用AJAX打印一些复选框和一些文本输入。 每个plauer的1个复选框和1个输入文本(来自DB)。
问题是当我将数据提交到另一个php文件时,我只看到两种情况。 下面是我将解释的代码。
由AJAX调用的PHP
if($_GET['function']=="chkplayers")
{
$sql=mysql_query("SELECT * FROM tbl_Player ORDER BY team_name")
or die(mysql_error());
$i = 1;
echo'Players : ';
echo '<br>';
while ($row = mysql_fetch_array($sql)) {
echo '<input type="checkbox" name="chk_player[]" value="'.$row['player_id'].'" /> '.$row['player_name'].' in team '.$row['team_name'];
echo '<input type="text" name="chk_target[]" placeholder="Target Name"/><br/>';
$i++;
}
}
PHP呼吁提交
if (isset($_POST['chk_player']) && isset($_POST['chk_player'])) {
$optionArray = $_POST['chk_player'];
$optionArrayTarget = $_POST['chk_target'];
for ($i=0; $i<count($optionArray); $i++) {
echo "i :";
echo $i;
echo "Player : ";
echo $optionArray[$i];
echo "Target : ";
echo $optionArrayTarget[$i];
echo '<br>';
}
}
如果我检查连续的每一个方框(不要在其间留下空的复选框),它显示正常。
示例:
i :0Player : 15Target : A1
i :1Player : 18Target : A2
i :2Player : 14Target : A3
如果我取消选中一个方框然后再检查一下,我会得到这个
i :0Player : 15Target : A2
i :1Player : 16Target :
无论如何我可以解决这个问题吗?
如果我找到$ optionArrayTarget,我会得到
i :0Player : 15Target : A1
i :1Player : 14Target :
i :2Player : 12Target : A2
i :3Player : 13Target :
i :4Player : Target : A3
i :5Player : Target : A4
i :6Player : Target :
i :7Player : Target :
答案 0 :(得分:0)
而不是循环直到$optionArray
循环直到optionArrayTarget
if (isset($_POST['chk_player']) && isset($_POST['chk_target'])) {
$optionArray = $_POST['chk_player'];
$optionArrayTarget = $_POST['chk_target'];
for ($i=0; $i<count($optionArrayTarget); $i++) {
if (isset($optionArrayTarget[$i]) || trim($optionArrayTarget[$i])!=''){
echo "i :";
echo $i;
echo "Player : ";
echo $optionArray[$i];
echo "Target : ";
echo $optionArrayTarget[$i];
echo '<br>';
}
}
}
因此,根据检查的值,您可以打印播放器和目标,否则对于索引“X”中出现的每个Player
,可能存在或不存在Target
。
已编辑:我观察到的另一件事,if (isset($_POST['chk_player']) && isset($_POST['chk_player'])) {
第二个条件应该是chk_target
而不是chk_player
快乐编码:)
答案 1 :(得分:0)
我设法搞清楚了。基本上我首先使用array_filter删除空值然后使用array_values重新排序它们和vuala。谢谢你的身份 -
if (isset($_POST['chk_player']) && isset($_POST['chk_target'])) {
$optionArray = $_POST['chk_player'];
$optionArrayTargetsB4 = array_filter($_POST['chk_target']);
$optionArrayTargets = array_values($optionArrayTargetsB4);
for ($i=0; $i<count($optionArray); $i++) {
.....
}
}
答案 2 :(得分:0)
我首先使用array_filter删除空值然后使用array_values重新排序它们和vuala。