2013-11-26 32 views
0

對於下面的示例,當選中所有複選框時,所有內容都按預期工作。當一個或多個(但不是全部)被檢查時會發生問題。解決。在foreach表單中的複選框數組。將每個複選框與另一個變量相關聯

<form action="someaction" method="post"> 
<?php foreach ($fields as $field) { ?> 
    <input type="checkbox" name="checkpid[]" value="<?php echo $field['pid']; ?>"> 
    <input type="hidden" name="checkprice[]" value="<?php echo $field['price']; ?>"> 
    <input type="submit" name="submit" value="Submit"> 
<?php } ?> 
</form> 

<?php if (isset($_POST['checkpid'])) { ?> 
<?php 
    $checkpid = $_POST['checkpid']; 
    $checkprice = $_POST['checkprice']; 
?> 

    <?php foreach ($checkpid as $key => $checkpid) { ?> 
    <?php 
    $eachpid[] = $checkpid.",".$checkprice[$key];  
    ?> 
    <?php } ?> 

    <?php print_r($eachpid), ?> // the $checkpid is always as expected, but the $checkprice does not match its row. 
<?php } ?> 

憑我的知識,我懷疑它在$ key的聲明中是錯誤的,但我不知所措。這就是爲什麼我在這裏發佈這個問題,我確信它在PHP中是初級的,但我是一個begginer。

回答

0

這是我可以建議的。

而不是添加兩個輸入如何添加兩個數據的複選框輸入的值與|隔開。然後提交時只爆炸的價值和接收陣列1的ID和價格1。

<?php 
    if (isset($_POST['checkp'])) { 

    $checkp = $_POST['checkp']; 
    foreach ($checkp as $check) { 
     $c = explode("|", $check); 
     $eachpid[] = $c[0].",".$c[1];  
    } 

    print_r($eachpid); 
    } 
?> 

<form action="" method="post"> 
<?php foreach ($fields as $field) { ?> 
    <input type="checkbox" name="checkp[]" value="<?php echo $field['pid']; ?>|<?php echo $field['price']; ?>"> 
<?php } ?> 
<input type="submit" name="submit" value="Submit"> 
</form> 
+0

我不會考慮給複選框賦予兩個值。我喜歡這種方法。而且它可以幫助我獲得我想要的位置。非常感謝您的回答。 – Auto4x4Motor

+0

太糟糕了,我不能提高你的答案,因爲我低於15聲望:) – Auto4x4Motor

相關問題