【问题标题】:onclick action not working as intended with radio buttonsonclick 操作无法使用单选按钮按预期工作
【发布时间】:2013-08-09 05:42:32
【问题描述】:

在过去的 4 个小时里,我一直在努力工作。我检查了 SO 和其他来源,但找不到与该主题相关的任何内容。代码如下:

<?php   
$email=$_SESSION['email'];
$query1="SELECT * FROM oferte WHERE  email='$email'";
$rez2=mysql_query($query1) or die (mysql_error());
if (mysql_num_rows($rez2)>0)
{
while ($oferta = mysql_fetch_assoc($rez2))
{   
    $id=$oferta['id_oferta'];

    echo "<input type='radio' name='selectie' value='$id' id='$id'>&nbsp;<a href='oferta.php?id={$oferta['id_oferta']}'>{$oferta['denumire_locatie']}</a>";
    echo "</br>";
}

echo "</br>";


//echo "<input type=\"button\" id=\"cauta\" value=\"Vizualizeaza\" onclick=\"window.location.href='oferta.php?id={$oferta['id_oferta']}'\" />";
//echo "&nbsp;<input type=\"button\" id=\"cauta\"value=\"Modifica\" onclick=\"window.location.href='modifica.php?id={$oferta['id_oferta']}'\" />";
echo "&nbsp;<input type=\"button\" id=\"sterge\" value=\"Sterge\" onclick=\"window.location.href='delete.php?id=$id'\" />";
echo "</form>";     
echo "</div>";  
}
else
{

}
?>          

while 从数据库中拖动所有用户的条目,并为每个条目创建一个单选按钮,其值和 id(因为我真的不知道需要哪一个)等于数据库中条目的 id .我回应了这一点,并按原样显示了 ID,因此那里没有问题。

删除脚本也可以正常工作,因此除非您告诉我,否则我不会附加它。一切都好,没有错误,直到我尝试删除一个条目。无论我从条目列表中选择什么,它都会删除最后一个。请注意,我还有另外两个输入回显,它们将是条目的“查看”和“修改”按钮。

我真的希望这与 JavaScript 无关,因为我不知道 JS。我认为这将对其他遇到此问题的人有很大帮助。如果我需要在降级之前编辑我的问题,请告诉我。谢谢!

修改后:

这是删除脚本,正如我之前所说,它可以正常工作。

<?php

if (isset($_GET['id']))
{
    $id = $_GET['id'];
    echo $id;
    require_once('mysql_connect.php');

    $query = "DELETE FROM oferte Where id_oferta = '$id'";
    mysql_query($query) or die(mysql_error());

    //header('Location: oferte.php');

}
 else

{
//header('Location: oferte.php');
}


?>      

会话也开始了,如下所示:

<?php
session_start(); 
?>  

【问题讨论】:

  • 链接中删除id的删除脚本,我们也不知道
  • 首先,您缺少session_start(); - 字面意思是“坚持”。把它放在$email=$_SESSION['email'];上方的顶部,然后再试一次。
  • 不缺少 session_start(),我有。我只是没有在这里显示。
  • 键位。为什么我总是为此而堕落,我永远不会知道。好的,session_start(); 就在里面,那么请在您的问题中包含它,以及我们可能需要了解的任何其他小信息。
  • 不要使用mysql_ 函数。它们已被弃用。请改用mysqli 或PDO

标签: php javascript onclick radio-button


【解决方案1】:

最后一个$id被删除的原因是因为这一行在while循环之外/之后:

echo "&nbsp;<input type=\"button\" id=\"sterge\" value=\"Sterge\" onclick=\"window.location.href='delete.php?id=$id'\" />";

您希望将此行移到循环内,以便您有一个按钮,可以为每个单选按钮执行删除。

更新:

拥有要删除的链接和

echo "<input type='radio' name='selectie' value='$id' id='$id'>&nbsp;"; 
echo "<a href='oferta.php?id={$oferta['id_oferta']}'>{$oferta['denumire_locatie']}</a>&nbsp;";
echo "<a href='delete.php?id=$id'>delete</a>";

此外,我认为这里根本不需要单选按钮,因为您实际上并没有用它做任何事情。您可以简单地呼出您选择的价值,并将这些链接如下:

echo $oferta['denumire_locatie'] . '&nbsp;'; // replace $oferta['denumire_locatie'] with something of your choice
echo "<a href='oferta.php?id={$oferta['id_oferta']}'>{$oferta['denumire_locatie']}</a>&nbsp;";
echo "<a href='delete.php?id=$id'>delete</a>";
echo "<br />";

【讨论】:

  • 确实,我试着把它移到里面,效果很好。但我希望整个条目列表只有 3 个按钮,因此用户可以简单地选择一个并删除/编辑或查看它,这并不是我真正想要的。
  • 在这种情况下,您需要向我们展示 javascript,以便我们提出一些答案。所以基本上你想要做的是,点击三个按钮之一,你想要抓住选中的单选按钮并传递所选单选按钮的 id。
  • 嗯...我知道我听起来像个彻头彻尾的白痴,但我没有任何 JavaScript 代码。如果我用基本的 html 链接替换 ​​onclick 怎么办?这行得通吗?
  • 只有在每个单选按钮都有“基本 html 链接”时才有效。
  • 不是我。您能否复制/粘贴和编辑单选按钮位,以向我展示每个收音机的基本 html 链接是什么意思?
【解决方案2】:

在这种情况下,问题与 JavaScript 相关,是的。我建议你做的是简单地为每个项目添加一个 Remove 链接。

echo "<a href='oferta.php?id={$oferta['id_oferta']}'>{$oferta['denumire_locatie']}</a>";
echo " - <a href='delete.php?id={$oferta['id_oferta']}'>Remove</a>";
echo "</br>";

【讨论】:

  • 我试过了,效果很好。感谢你的回答。这是一个解决方案,但它会有点搞乱我的设计,所以不幸的是,我走的是一条艰难的道路。
  • 所以,你将不得不使用 JS。我建议您同时使用 jQuery。如果你这样做了,在 onClick 上一个简单的window.location.href='delete.php?id=' + jQuery(':radio[name=selectie]:checked').val() 就可以完成这项工作。
  • 我修改了那行,现在看起来像这样: echo " ";如果我现在点击按钮,什么也不会发生。我有什么需要改变的吗?
  • 你在页面中添加了jquery吗?另外,如果您在 Chrome 上打开控制台,它会显示任何错误?
  • 正如我所说,当谈到 JS 或其任何框架时,我是一个完全的菜鸟。这是我第一次坦率地使用它。我应该在哪里将 JQuery 添加到页面以及如何添加?很抱歉这么麻烦。
【解决方案3】:

您的 $id 在您的 while() 循环之外。 最后一个将被删除,因为 $id 在退出循环时具有最后一个的值。

包括你所有的代码:

echo "</br>";


//echo "<input type=\"button\" id=\"cauta\" value=\"Vizualizeaza\" onclick=\"window.location.href='oferta.php?id={$oferta['id_oferta']}'\" />";
//echo "&nbsp;<input type=\"button\" id=\"cauta\"value=\"Modifica\" onclick=\"window.location.href='modifica.php?id={$oferta['id_oferta']}'\" />";
echo "&nbsp;<input type=\"button\" id=\"sterge\" value=\"Sterge\" onclick=\"window.location.href='delete.php?id=$id'\" />";

在你的 while 循环中。

【讨论】:

    【解决方案4】:

    当渲染的 html 到达浏览器时,会是这样的:

    <input type='radio' name='selectie' value='1' id='1'>&nbsp;<a href='oferta.php?id=1'>TEXT</a>
    <input type='radio' name='selectie' value='2' id='2'>&nbsp;<a href='oferta.php?id=2'>TEXT</a>
    <input type='radio' name='selectie' value='3' id='3'>&nbsp;<a href='oferta.php?id=3'>TEXT</a>
    <input type='radio' name='selectie' value='4' id='4'>&nbsp;<a href='oferta.php?id=4'>TEXT</a>
    <br/>
    <input type="button" id="sterge" value="Sterge" onclick="window.location.href='delete.php?id=5'" />
    

    使用此标记,您将无法完成您想要的操作,除非您在选择单选按钮时使用 javascript 更新 onclick 属性。

    另一方面,您可以使用按钮的默认行为,即提交表单,而不是使用客户端的 onclick 事件。

    你只需要设置 action 属性:

    <form method="post" action="http://myurl.php">
    

    并编写 myurl.php 页面,该页面将仅读取发布的变量 $_POST['selectie'] 并使用发布的 id 调用 delete 方法。

    【讨论】:

    • 我知道我可以这样做,但这不允许我取消注释其他两行代码。如果我这样做,表单将只有一个动作,而不是三个。
    • 那么javascript选项绝对是最好的。
    猜你喜欢
    • 2016-07-18
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    相关资源
    最近更新 更多