2013-12-20 104 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