2013-12-20 54 views
0

我在具有不同id的while循环中有php表单。从重复循环的php表单中获取变量

<?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?

回答

0

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

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

我试过了..在这种情况下,我只得到最后一个值.. –

+0

@ user3067928更新了答案,请尝试 –

+0

在alert(petId)中,我得到了不同的宠物ID。但是,在表单提交中,我只获得最后一个元素。 –

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/

+0

如何为每个变量获取合适的值? –

+0

我尝试过使它成为数组。我得到所有的宠物身份证。但是,如何在php中识别哪一个被选中? –

+0

所以你想收到所有的宠物ID,但只关心一个?为什么不直接发送那个? – Julio