需要了解Web进程背后的过程与HTML, PHP, Javascript,通过现有的HTML按钮到PHP函数问题


Need to Understand Process behind Web Processes with HTML, PHP, Javascript, through existing HTML Button to PHP function Issue

注意:我不是在寻求解决方案,而是在寻求帮助。我知道这个问题可能是基本的和重复的,但我更遗憾的是,我对其他网站解释得太少感到沮丧。

我绝对肯定这个问题已经被问过无数次了,因为我已经查了很多次了,但问题是我已经查了多少次了,每次我都不明白我在做什么。我敢肯定我已经把这个桶刮干净了。

我有一个进程,我正在运行调用几个查询SQL数据库,我在PHP做他们。问题是,当页面打开时,它们都是自动运行的,这让我感到恶心,一点也不好笑。我试图使一个按钮,不重定向到另一个页面调用这个过程,无论是由功能或什么你。我试着把这些都写在一页纸上。虽然我不反对多写几页。

我试图避免使用JQuery。我可用的工具有:JavaScript、PHP和HTML。如果需要,我愿意将所有8或9个查询转换为JavaScript,以便通过按钮甚至AJAX运行,但如果可以的话,我希望将其保留在PHP中。我知道PHP和HTML的运行方式不同,但这就是我困惑的地方,如何最好地将它们结合起来,如何使用JavaScript,何时使用JavaScript, get、POST和SUBMIT与PHP有什么关系,等等。我想知道最好的方法和"你可以用你已经做过的事情做到这一点",以及为什么一个比另一个更好,如果可能的话。

我确信90%的问题是超级重复的,但提前感谢您的耐心。我讨厌不理解。

编辑:我被要求提供我的代码,我可以给出一个基本的想法,但不能给出代码本身:

<?php
mysql_pconnect ('host', 'username', 'password');
mysql_select_db('database'); 
// the company I work for has so far refused to let me upgrade our website, so I
// am trying to keep it the same so that half of it isn't new and the other
// super outdated. Believe me, I'm pushing.
$query0 = "TRUNCATE table templateTable;";
$query1 = "INSERT INTO templateTable
(item1, item2, item3, item4...)
SELECT
table1.itemA, table2.itemB, table1.itemC, table2.itemD...
FROM table1, table2
WHERE table1.itemA = table2.itemQ;";
// there are a LOT of items in this query, like 100
$query2 = "UPDATE templateTable, table1
SET templateTable.itemX = '"thing'",
CASE
WHEN table1.itemAB = 1
THEN itemX = 'THING1';";
$query3 = "UPDATE templateTable, table2, table1
SET templateTable.itemY = 
CASE
WHEN table2.modelNumber = table1.modelNumber
THEN itemY = table2.modelNumber
ELSE
itemY = table1.otherInformation;";
// these queries are using data from two tables to fill an inventory 
// template table that will only be filled and edited through queries. there 
// is no manual editing of this table- just queries.
/*
I'm hoping you get the gist of this because there's 5 other queries even 
longer and more complicated @.@ I have a procedure in MySQL to do this but my 
coworkers are nervous about running the procedure, so I'm trying to make it more 
friendly by allowing it through the website. This was requested of me
*/
?>

长话短说:我试图通过一个按钮在HTML的同一页面上运行一个PHP函数,PHP有8个查询正在运行到MySQL数据库,我真的不明白这一点。

我正在尝试运行PHP函数[…]通过按钮[…]),不重定向[或重新加载]

首先你需要了解什么时候执行PHP,什么时候渲染HTML,什么时候执行Javascript。
在Internet上查找"客户端和服务器端之间的区别",您会找到很好的解释。对于初学者来说,这似乎是一件大事,但一旦你理解了这一点,就很容易知道什么时候必须使用PHP,什么时候必须使用Javascript,以及哪个是最准确的。

简而言之:

PHP是一个服务器端语言。当你加载一个网页时,你的浏览器(客户端)向服务器发送一个请求。服务器执行PHP代码,生成一些HTML(在我们的示例中),并将此HTML发送回浏览器。

HTML呈现在客户端。这是读取和呈现HTML的浏览器。

Javascript是客户端语言。 Javascript代码与从服务器发送到浏览器的HTML一起使用。浏览器能够执行Javascript。


为了在点击按钮时执行PHP代码,有两种解决方案:

  • 这个按钮是一个链接,或者是form的一部分。当你点击它时,页面被重新加载(你可以发送它GETPOST参数如果需要),然后你的PHP代码可以执行。
  • 您可以使用Javascript和AJAX,并且不需要重新加载当前页面。使用Javascript的浏览器将向服务器发送另一个请求"在后面"*,服务器将能够运行一些PHP代码,而无需重新加载任何内容。
    *(寻找一个我不知道的英语表达)

关于jQuery的简短介绍:jQuery仍然是Javascript。jQuery是一个Javascript库,基本上可以让你有一些更干净,更清晰,更容易编写的代码(IMO)。但是,正如一半在评论中提到的那样,您并不是每次都需要它。其他库也存在,有时,对于您需要的,"纯"Javascript就足够了。

如果您将按钮放置在一个带有隐藏字段的表单中,如:

<form>
    <button type="submit">Run Queries</button>
    <input type="hidden" name="submitted" value="1">
</form>

并在查询中使用And IF语句:

if ($_GET['submitted'] === '1') {
    // Run queries
}

你得到了你想要的结果。

非常简化:在初始页面加载时,查询将被IF语句绕过,IF语句检查提交的 get参数。当您按下按钮(提交表单)时,提交的参数将变成1