【问题标题】:How to change database values with dynamically created buttons in PHP如何在 PHP 中使用动态创建的按钮更改数据库值
【发布时间】:2016-11-28 23:04:22
【问题描述】:

我正在使用 PHP 动态创建 html 内容,我正在创建一个按钮,当单击该按钮时它应该调用一个 PHP 脚本,该脚本将更新数据库中特定行的列的值

这是我的代码:

<?php
    session_start();

    if(!isset($_SESSION['id'])){
        header("Location: login.php");
    }else{
        require_once("mysqli_connect.php");

        $query = "SELECT * FROM markeri WHERE odobreno ='F'";

        $response = @mysqli_query($dbc,$query);

        if($response){
            echo "<hr>";
            while($row = mysqli_fetch_assoc($response)){
                echo "<div align='center' id='markeri'><h3>Naziv: " . $row['naziv'] . "</h3>";
                echo "<h3>Ulica: " . $row['ulica'] . "</h3>";
                echo "<h3>Opis:</h3>" . "<p>" . $row['opis'] . "</p>";
                echo "<h4>Email: " . $row['email'] . "</h4>";
                echo "<img src='" . $row['link_slike'] . "' width='300px' /></br>";
                echo "<form action='update.php' method='POST'>";
                echo "<textarea rows='10' cols='30' maxlength='500' placeholder='Komentar' name='" . $row['marker_id'] . "'></textarea></br>";
                echo "<input type='button' value='Odobri' name='" . $row['marker_id'] . "b" . "' /></form><hr>";
            }
        }




    }


?>

我尝试了类似使 textarea 的名称等于我的数据库中的 marker_id 并将按钮的名称设置为 marker_id 的值 + 字符串“b”但我不知道如何在我的更新中调用它们.php 脚本。通常在正常情况下并且没有动态内容时我知道如何使用$_POST['name'];

编辑:

如您所说,我使用 AJAX 动态创建 HTML,但我遇到了另一个问题

<script>
    function page_loaded(){
        jQuery.ajax({
            method: "GET",
            url: "get_data_dashboard.php",
            success: function(data){
                var markers = JSON.parse(data);
                for(var i = 0; i < markers.length; i++){
                    var m = markers[i];
                    var markerHTML = "<div class='marker'>" +
                        "<span id='naziv'>Naziv zahtjeva: " + m.naziv + "</span></br>" + 
                        "<span id='ulica'>Ulica: " + m.ulica + "</span></br>" + 
                        "<p id='opis'>Opis:</br>" + m.opis + "</p></br>" + 
                        "<span id='email'>Email: " + m.email + "</span></br>" + 
                        "<img id='slika' src='" + m.link_slike + "' />" + "</br>" + 
                        "<textarea rows='5' cols='30' maxlength='500' id='t" + m.marker_id + "' placeholder='Komentar'>" + "</textarea></br>"
                        + "<div class='buttons'><a href='odobri_prijavu.php?id=" + m.marker_id + "'>Odobri</a>" +
                            "<a href='izbrisi_prijavu.php?id=" + m.marker_id + "'>Izbriši</a>"  + "</div>"  + 
                        "</div><hr>";

                    $('#content').append(markerHTML);
                }

            }
        })



    }
    $(document).ready(page_loaded());

</script>

我尝试使用按钮,但我不知道如何将事件处理程序添加到动态创建的按钮,这些按钮将通过 AJAX 将请求发布到某些 php 脚本,并将正确的 id 作为值和 textarea 的值。所以我使用了锚标签,我可以发送id,但是我不能发送textarea的值,因为我不知道如何引用它,即使我引用了它,它也会是NULL,因为它的值一开始就设置为锚标记,我想在文本区域中输入文本。

【问题讨论】:

  • 如果我对您的理解正确,您的 php 内容都是在点击或 javascript 发生之前运行的。您将不得不考虑使用 ajax 来更改内容。
  • @happymacarts 对于我数据库中的每一行,都会创建一个新表单,就像上面那样,并带有一个按钮。但是如何访问该按钮,以便我可以使用 JavaScript 在其上调用事件并获取 textarea 的值,然后使用 AJAX?
  • 我会在 php/html 标记中添加一个类并基于该类创建一个事件
  • 也避免在同一页面上为多个项目使用 ID,而是使用 css 类
  • 谢谢先生。我会试试的:D

标签: javascript php jquery html


【解决方案1】:

试试这个

$(".btn_class_nm").click(function(){
       $.ajax({
          type: "POST",
          url: "http://domain.com/phpscript_filenm.php",
         data: {
            val1:"val1",
            val2:"val1",
         },
          success: function(msg){
             alert( "record updated"); //Anything you want
          }
       });   


 });

【讨论】:

    【解决方案2】:

    首先,在动态生成按钮时为按钮指定一个类名,它们的数量可以根据查询返回的记录数而有所不同。像这样的东西:-

    echo "<input type='button' class='btn btn-primary btn-xs btn-block active view_data'  value='Odobri' name='" . $row['marker_id'] . "b" . "' /></form><hr>";
    

    请注意,我在类定义中添加了 view_data。这将有助于通过 jquery 捕获 onclick 事件。

    jquery 类似于

    $('.view_data').click(function(){   
        var yourvariable = JSON.stringify($(this).val()); //Gets Clicked button value   
    
     $.ajax({       
         url:"workstatus.php",          
             method:"post",         
             data:{yourvariable:yourvariable, anymoreyourvariables:anymoreyourvariables, ,  },          
             success:function(data){        
                 $('#htmldivID').html(data);//If you want result there.
                 alert( "record updated"); //Anything you want
             }          
     });    
    

    我希望这对你有帮助。

    【讨论】:

      猜你喜欢
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 2019-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-27
      相关资源
      最近更新 更多