在按钮的onclick事件上运行PHP代码或使用Ajax?

时间:2016-05-02 14:53:32

标签: javascript php html

我的程序应该能够从某个表中绘制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函数,因为我已经在别处读过了吗??

4 个答案:

答案 0 :(得分:2)

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

浏览器通过请求响应(或websockets,但这是一种不同的技术)与服务器通信,并且促进此类通信的技术是叫AJAX(你也提到过)

答案 1 :(得分:0)

只有完成Marcus的答案。

如果你使用jQuery,可以使用$ .ajax来执行ajax代码,funciona的文档是here

否则,您可以使用纯JavaScript来执行此请求,在w3schools中,我们发现this example

答案 2 :(得分:0)

答案

不,您无法在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脚本。

答案 3 :(得分:-1)

我设法解决了这个问题!我所做的就是从这个网站http://www.w3schools.com/php/php_ajax_database.asp获取代码,在阅读完本教程后,我理解并改变了一些代码以适应我的按钮而不是下拉列表并更改了sql语句。学习ajax并不像我想的那么难,这一切都要归功于W3的在线开源代码。即使我想要显示文本框,但html表似乎很好,所以我会用它来做!

投票给这个答案,这样任何想做我正在做的事情的人都可以从中学习!感谢所有先前回答过我问题的人:)