在按钮';上运行PHP代码;s onclick事件,或者使用Ajax


Run a PHP code on button's onclick event possible or use Ajax?

Hi我的程序应该能够从某个表中绘制SQL计数,并为计数的数字生成文本框的数量。

我真正想要的是,根据我单击的字母表值按钮,显示以单击字母表按钮开始的项目的文本框数量。

<button type="submit" name="sort" id="S" value = "S" onclick="<?php $alphabet='S'; ?>">S</button>
<?php $query = "select count(*) from product where productname like '$alphabet%' ";
                $result = mysqli_query($dbconn,$query);
                while($row= mysqli_fetch_array($result)) {
                $count=$row['count(*)'];                    
                }
for($counter = 0; $counter < $count; $counter++){ //Create text boxes and add to cart buttons
                echo "<br>";
                echo "<br>";                  
                echo "<label>Product ID: </label><input readonly type='text' name='productname' id=''><br>";
                echo "<label>Product Name: </label><input readonly type='text' name='opening' id='' >"
                    ."<button type='button' class='deliver' id='' onclick=''>Add To Cart</button><br>"
                    ."<button type='submit' class='deliver' id='viewcart' onclick='window.location.href='BACart.php';'>View Cart</button><br>";                                      
                echo "<label>Quantity: </label>";
                echo "<button type='button' class='quantityaddsub' id='sub' onclick='quantitysub($counter)'>-</button>";
                echo "<input type='text' class='quantity' name='' id='quantity".$counter."' value=0>"; 
                echo "<button type='button' class='quantityaddsub' id='add' onclick='quantityadd($counter)'>+</button><br> ";
            }?>

我发现这样做真的很难。我的方法正确吗,或者有更简单的方法吗?或者,我必须使用AJAX以javascript调用我们的php函数,就像我在其他地方读到的那样。。?

您必须使用AJAX,因为PHP代码是在服务器上执行的,而javascript是在浏览器上执行的

浏览器通过请求响应(或websocket,但这是一种不同的技术)与服务器通信,促进这种通信的技术被称为AJAX(正如您所提到的)

仅用于完成Marcus的答案。

如果你使用jQuery,可以使用$.ajax来执行ajax代码,函数的文档就在这里。

否则,你可以使用纯javascript来完成这个请求,在w3schools中,我们发现了这个例子

答案

不,您不能在Javascript事件侦听器上运行PHP代码

为什么

PHP代码在Javascript代码进入DOM之前运行(更确切地说,在服务器向客户端浏览器发送HTML之前)。因此,可以放入PHP代码,以获得所述代码的输出。然而,一旦DOM被呈现给浏览器,PHP代码就100%不存在了(只留下故意输出的东西,比如echo)。最终用户(和他们的浏览器)永远不会看到你的PHP代码。

示例

var test = "<?php echo "HELLO!"; ?>";

在DOM/Source中,这个Javascript代码将简单地读作:

var test = "HELLO!";

可能的解决方案

如前所述,使用AJAX按需点击PHP脚本。

我设法解决了这个问题!我所做的只是从这个网站获取代码http://www.w3schools.com/php/php_ajax_database.asp在阅读了教程之后,我以某种方式理解了这一点,并修改了一些代码以适应我的按钮而不是下拉列表,并更改了sql语句。学习ajax并不像我想象的那么难,这要归功于W3的在线开源代码。甚至想过我想显示文本框,但html表似乎很好,所以我将就一下!

投票选出这个答案,这样无论谁想做我正在做的事情,都可以从中学习!感谢之前回答我问题的所有人:)