从重复循环的php表单获取变量

时间:2013-12-20 18:16:30

标签: javascript php jquery

我在while循环中使用不同的id。

<?php
while($pet = $results->fetch(PDO::FETCH_ASSOC)){
         ?>
<form method="post" name="petForm" id="petForm">
            <ul id="listAvatars">
                <li>
                <input type='text' name='pet' id='pet' value='<?=$pet['PetId']?>' />
                <img src="<?=PET_AVATAR.$pet['Avatar']?>" class="listAvatar">
                <span onclick='setPet(<?=$pet['PetId']?>)' id="avatarName"><?=$pet['PetName']?></span>
                </li>
            </ul>
</form>
           <?php
    }
?>

我想在点击活动中获得不同的宠物ID。我通过此功能在点击名称上获得有效的宠物ID。

function setPet(petId){
    alert(petId);
    document.getElementById("petForm").submit();
}

PHP:

if(isset($_POST['pet'])){
    $petId = $_POST['pet'];
    print_r($petId);
}

通过提交此表单,我只获得第一个宠物的ID。我应该怎么做才能在选择中获得适当的宠物ID?

2 个答案:

答案 0 :(得分:2)

您的循环包裹在单独的form字段上。当您单击“提交”时,它只会提交相应的表单而不是其他表单。

您可能想要做的是将form字段移到循环之外,以便传递所有 petIds 。尽管如此,您需要将名称更新为类似pet[]的内容,以便PHP知道它是 petIds 的数组。

请参阅:Posting array from form

修改

看来真正的问题是:

  

当我点击petId时,如何将该petId发布到PHP脚本中   表格(不使用AJAX)。

HTML

<div id="pet-id-1" class="petid">Pet 1</div>
<div id="pet-id-2" class="petid">Pet 2</div>
<div id="pet-id-3" class="petid">Pet 3</div>

<form action="" method="post" id="pet_form">
    <input type="hidden" name="pet_id" id="pet_id" value="" />
</form>

Javascript

$(document).ready(function() {
    $('.petid').click(function() {
        var pet_id = $(this).attr('id');
        $("#pet_id").val(pet_id);
        $("#pet_form").submit();
    });
});

请参阅:http://jsfiddle.net/jwk2J/

答案 1 :(得分:0)

您需要在while循环之外移动<form method="post" name="petForm" id="petForm">

 <form method="post" name="petForm" id="petForm">
      <input type='hidden' name='pet' id='pet' value='' />
      <ul id="listAvatars">
 <?php
    while($pet = $results->fetch(PDO::FETCH_ASSOC)){
     ?>

            <li>

            <img src="<?=PET_AVATAR.$pet['Avatar']?>" class="listAvatar">
            <span onclick='setPet(<?=$pet['PetId']?>)' id="avatarName"><?=$pet['PetName']?></span>
            </li>

       <?php
    }
 ?>
        </ul>
</form>

使用Javascript:

function setPet(petId){
   alert(petId);
   document.getElementById("pet").value=petId;
   document.getElementById("petForm").submit();
 }