簡體   English   中英

通過href鏈接進行POST

[英]Make POST by href link

我正在嘗試通過href鏈接發布帖子。我正在使用包含這些鏈接的下拉菜單。 問題在於,無論單擊何處,我都將獲得與第一個相同的結果。 我希望每個鏈接都發布到從具有該ID的查詢中獲得的結果,而不是第一個。

<li>
  <?php  $rows=query("SELECT * FROM filmi") ?>
    <?php foreach($rows as $r):?>
      <form name="myform" method="post" action="description.php">
        <input type="hidden" name="id" value="
        <?=$r["id"]?>"/>
      </form>   
      <a href="description.php" onclick="document.forms['myform'].submit(); return false;">
        <?=$r["titulli"]?>
      </a>
  <?php endforeach?>    
</li>

每次運行Foreach循環時,您都會打開一個新表單。 您還為每個交互使用相同的輸入字段名稱。

嘗試這個:

<li>
    <?php  $rows=query("SELECT * FROM filmi") ?>
     // Your form is opened and closed outside of the Foreach() loop.
     // This means all of your hidden fields will print within the same form.
     <form name="myform" method="post" action="description.php">
     <?php foreach($rows as $r):?>
           //  If you're expecting more than one id, you'll need to 
           //  post your form using array syntax.  Each "id" will be posted
           //  to PHP in incremented fashion.
           <input type="hidden" name="id[]" value="<?=$r["id"]?>"/>                                           

      <a href="description.php" onclick="document.forms['myform'].submit(); return false;">   
    <?=$r["titulli"]?></a>                                          
    <?php endforeach?>  
        </form> 
    </li>

我得到與第一個相同的結果

那是因為您有多個具有相同名稱的表格。 因此,您對document.forms['myform']的JavaScript引用始終會找到該名稱的第一個。

嘗試使名稱更具動態性。 foreach循環中,將一些唯一的記錄值(記錄的ID應該很好)附加到name="myform" ,然后附加到對該元素的JavaScript引用。 這應該使表單名稱唯一,並允許JavaScript引用所需的特定表單。

出現這種情況是因為所有表單都具有相同的名稱,因此您需要做的就是使表單(標記名)動態化。 像這樣的名字:

<?php $i = 0;?>
<?php foreach($rows as $r):?>
    <form name="myform<?php print $i;?>" method="post" action="description.php">
       <input type="hidden" name="id" value="<?=$r["id"]?>"/>                                           
    </form> 
    <a href="description.php" onclick="document.forms['myform<?php print $i;?>'].submit(); 
return false;">
<?php $i++;?>

document.forms['myform'].submit()將提交名為“ myform”的表單。 您正在使用該名稱創建$rows表單,所以發生的是只有第一個表單被提交。

我建議以不同的方式命名每個名稱:(查看表單名稱和onclick事件)

<li>
  <?php  $rows=query("SELECT * FROM filmi") ?>
    <?php foreach($rows as $r):?>
      <form name="myform<?=$r["id"]?>" method="post" action="description.php">
        <input type="hidden" name="id" value="<?=$r["id"]?>" />
      </form><a href="description.php" onclick="document.forms['myform<?=$r["id"]?>'].submit(); return false;">
        <?=$r["titulli"]?>
      </a>
  <?php endforeach?>    
</li>

或者,如果它們總是一個接一個,則只需發布previousSibling。

<li>
  <?php  $rows=query("SELECT * FROM filmi") ?>
    <?php foreach($rows as $r):?>
      <form method="post" action="description.php">
        <input type="hidden" name="id" value="<?=$r["id"]?>" />
      </form><a href="description.php" onclick="this.previousSibling.submit(); return false;">
        <?=$r["titulli"]?>
      </a>
  <?php endforeach?>    
</li>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM