2014-01-23 56 views
-1

这是我到目前为止所做的。我用AJAX打印一些复选框和一些文本输入。 1个复选框和1个输入文本(来自数据库)。带数组的输入类型文本

问题是当我将数据提交给另一个php文件时,我只能在某些情况下看到这两个文件。 下面是我会解释更多的代码。

PHP通过AJAX

称为
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

我用array_filter首先要删除空值,那么array_values重新排序和vuala。

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>'; 
    } 
    } 
} 

使基于该检查的值可以打印的球员和目标,否则为每个Player出现在索引'X'处可能有或可能不是Target

编辑:还有一件事我观察,if (isset($_POST['chk_player']) && isset($_POST['chk_player'])) {第二个条件本来应该的chk_target代替chk_player

编码快乐:)

+0

编辑我的问题。如果我循环optionArrayTarget我明白了。发生这种情况是因为chk_player获得了第一个选中状态,而不是选中哪一个被选中了我猜 – LefterisL

+0

@TerisL:我已经编辑了答案。 – dreamweiver

+0

不幸的是它也无法工作。我设法弄清楚了。 基本上我使用'array_filter'首先删除空值然后'array_values'重新排序他们和vuala。谢谢你的ime – LefterisL

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++) { 
    ..... 
    } 
}