【问题标题】:How to execute mysql on button click [closed]如何在按钮单击时执行mysql [关闭]
【发布时间】:2013-05-15 15:15:13
【问题描述】:

PHP:
单击按钮时如何执行 SQL? 我会使用 JavaScript onClick() 函数还是其他方式? 我正在尝试在循环中执行此操作,并且仅在单击按钮的行上执行 sql ... 谢谢!

@PHPnoOb 的代码可提供帮助: 好的,所以现在我已经把所有这些都整理好了,但是当单击按钮时,它会为每一行执行一次……而不仅仅是单击按钮的那一行!我只想查询单击按钮的行...我的代码:

while($row = mysqli_fetch_array($result)) {

//FAULTY CODE!!! EXECUTES ONCE FOR EACH ROW!
//I WANT IT TO ONLY EXECUTE FOR THE ROW THE
//BUTTON WAS CLICKED ON

if(isset($_POST['delete'])){
echo "You clicked on: ".$row['subject'];
//eventually i will have sql query up here
}
//echo all the results into a table... messy
echo"

<tr><td><div align='center'><font color='grey'>".$row['date']."</font></div></td><td><div align='center'> ".$row['sender']."</div></td><td><div align='center'> ".$row['subject']."</div></td><td><div align='center'><input type='button' value='open' onClick='window.alert(\"On ".$row['date']." ".$row['sender']." wrote:\\n".$row['message']."\")'/></div></td><td><div align='center'><form  method='post'><input type='submit' value='delete' name='delete'/></form></div></td></tr>

";

}

echo '</table>'; //ends the table.

【问题讨论】:

  • stackoverflow.com/questions/12166494/… 没有帮助,我不想提交整个表单...
  • 您需要发送一个 HTTP POST/GET 请求,以便能够在单击按钮时通知 PHP 服务器,并让 PHP 调用任何数据库函数。大多数情况下,这是使用 HTML 表单实现的,但不一定。
  • 为什么关闭?不难理解

标签: php button onclick


【解决方案1】:

您可以执行类似的操作来保存输入/提交 btn 中的值。

<!-- your html form -->
<form action="POST">
    <input type='text' name='username' />
    <input type='text' value='submit' />
</form>



<?php 

// your php code

if($_POST && isset($_POST['username'])){

    $db = new \PDO('......'); // enter your db details

    $stmt = $db->prepare("INSERT INTO table (username) VALUES (?)");
    $result = $stmt->execute(array($_POST['username']);

    echo $result->rowCount() ? 'Username saved in db' : 'Unknown error occured'; 

}

【讨论】:

  • 哦!看起来不错!谢谢,现在测试!
  • 这与按钮在同一页面上工作,对吗?
  • @pattyd 只要您的按钮名称是submit 是的,它会的,只需尝试在该字段中写入任何内容并在 if(isset) 中回显它
  • 好的,在按钮上方还是下方?
  • @pattyd 检查我的另一个答案,为了清楚起见,我已经做了另一个。我希望它能给你一些想法,如果没有,你可以使用代码重新询问,一些 SO 专家会帮助你。只要确保发布明确的问题
【解决方案2】:

使用an AJAX library 向执行查询的服务器端脚本发出请求。把它作为你在 Javascript 中的 onClick() 处理程序,然后,Bob 是你的叔叔!

【讨论】:

    【解决方案3】:

    Update: 2017

    此答案已过时,请使用更好的库,如PDO 来完成以下功能。


    好的,只需将整个代码复制/粘贴到纯 PHP 文本中即可。有效,我刚才试了一下。 您所需要的只是一个名为test 的表格,文件为id,username,或者您可以根据自己的喜好定制脚本。并且不要忘记更改数据库密码,用户名详细信息..

    <form action='' method='POST'>
    <?php
    
    mysql_connect('localhost', 'root', '');
    mysql_select_db('test');
    $query  = "SELECT * FROM users";
    $result = mysql_query($query);
    
    while ($row = mysql_fetch_array($result)) {
        echo "  To delete user   <b>" . $row['username'] . "</b>  Click on the number <input type='submit' name='delete' value='" . $row['id'] . "' /><br/>";
    }
    
    if (isset($_POST['delete'])) {
        $user = $_POST['delete'];
        $delet_query = mysql_query("DELETE FROM users WHERE id = $user ") or die(mysql_error());
    
        if ($delet_query) {
            echo 'user with id ' . $user . ' is removed from your table, to refresh your page, click' . '<a href=' . $_SERVER["PHP_SELF"] . ' > here </a>';
        }
    }
    ?>
    </form>
    

    【讨论】:

    • 非常感谢!这正是我的意思!我还没有测试过,但它看起来不错!谢谢!
    • testing now....你的代码有一些错误:现在把eles改成else,把mysq改成mysql testing,...
    • 好的,很抱歉。
    • @pattyd 好的,我只记得大概 10 分钟前,并在睡觉前测试了这个脚本。它可以工作,但是,我可能会构建更好的东西,并且明天可以与 Javascript/Ajax 一起使用,如果你仍然感兴趣,我会给你。因为,我喜欢制作那些小脚本。
    • 很高兴它对你有用 :),尝试添加一条消息,说“你确定要删除这个/那个用户”的功能,这会很好,我在 @ 有一个空房间987654322@ :( 如果需要,请给我留言
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2022-08-05
    • 1970-01-01
    • 2023-01-05
    • 2021-07-06
    • 1970-01-01
    相关资源
    最近更新 更多