一個簡單的HTML+PHP+MySQL的交互頁面(輸入框內容查詢,HTML頁面顯示)

寫得很詳細了,如果有問題留言再問哈!!!

一開始初學網頁製作的時候,空餘時間比較少,拿來代碼就用,只要能實現功能就好
我那時候以爲 HTML 和 PHP 之間的數據交互只能新開一個 PHP 網頁,也就是簡單在HTML頁面用一下表單 (from) ,然後在 PHP 頁面用一下變量接受,然後後面就寫跟 MySQL 交互的代碼。

<form action="login.php" method="POST">
	<input  type="text" name="name" placeholder="請輸入用戶名"/>
	<input  type="password" name="password" placeholder="請輸入密碼"/>
    <input name="login" type="button" value="登錄" onclick=submit() />
</form>
$name = $_POST["name"];
$pwd = $_POST["password"];

action 指定的是接收表單數據的 PHP 文件,method有兩種模式 post 和 get,這裏就不贅述了,學習網址:https://www.runoob.com/php/php-get.html
PHP的變量形式就是 $+名字,method = post 的表單(from)的數據只用 $_POST 來接受,get的話就用 $_GET 來接受
-----------------------------==---------------------------------------------------------------------------------------------------------

下面進入正文

如果是需要頻繁的和數據庫交互顯示的話,上面的這種方法不斷跳轉頁面會很煩人,於是我在菜鳥教程那裏想找有沒有不需要跳轉頁面顯示的方法,當我看到了這個 【AJAX數據庫實例】的時候,我笑了,嘻嘻嘻,這就是我要找的。
在這裏插入圖片描述
在菜鳥教程裏面的例程是通過下拉菜單選擇來進行與數據庫的交互,而我要實現的是輸入框的內容和數據庫的交互,於是我需要按找我的思路對代碼進行了整改,交互的核心都離不開這個函數

<script>
function showSite(str)
{
    if (str=="")
    {
        document.getElementById("txtHint").innerHTML="";
        return;
    } 
    if (window.XMLHttpRequest)
    {
        // IE7+, Firefox, Chrome, Opera, Safari 瀏覽器執行代碼
        xmlhttp=new XMLHttpRequest();
    }
    else
    {
        // IE6, IE5 瀏覽器執行代碼
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET","getsite_mysql.php?q="+str,true);
    xmlhttp.send();
}
</script>

那些 xmlhttp 什麼的我一臉懵逼,看半天沒搞懂,於是我決定,先用再說,這我覺得是個學習語言的技巧來的,可以借鑑一下,嘻嘻嘻

js(javascript) 寫的函數前面都要加個function,約定俗成,function showSite(str) 括號裏面的 str 顯然就是參數了,if (str=="")這個判斷也就是說參數爲空的時候就 return 出來,中間那一大段跟參數 str 沒啥關係就不理了,最後面那個 xmlhttp.open(“GET”,“getsite_mysql.php?q=”+str,true) 裏面有 str 需要留心關注一下,那個 getsite_mysql.php.php 顯然就是接受數據,移植函數的話要注意更改,那個 true 好像說是設置異步什麼的,不太明白,簡單瞭解了函數,直接複製黏貼就OK啦

先展示一下效果圖

文本框空白點擊【搜索
在這裏插入圖片描述
文本框輸入【報紙】點擊【搜索】(數據庫有報紙的信息)
在這裏插入圖片描述
文本框輸入【啦啦啦】點擊【搜索】(數據庫沒有啦啦啦的信息)
在這裏插入圖片描述

在文本框輸入【報紙】,然後點擊搜索按鈕就可以在下面看到一個表格,表格顯示的【ID】【可回收垃圾】內容是要查詢數據庫後得出來的,如果文本框輸入的東西數據庫裏面沒有,那就顯示【不知道】

下面就是直接看代碼了

HTML全部代碼

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>簡單交互</title> //這裏就是上網時候的標籤頁的名字
<script>
function showSite(str)
{
    if (str=="")
    {
        document.getElementById("txtHint").innerHTML="無輸入";//這裏小改,參數爲空顯示【無輸入】
        return;
    } 
    if (window.XMLHttpRequest)
    {
        // IE7+, Firefox, Chrome, Opera, Safari 瀏覽器執行代碼
        xmlhttp=new XMLHttpRequest();
    }
    else
    {
        // IE6, IE5 瀏覽器執行代碼
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET","mysql.php?q="+str,true);
    xmlhttp.send();
}
</script>
</head>
<body>
	<label for="rec"><strong>我要查詢</strong></label>//laber其實有沒有都不差,聽說是方便人點擊用的
	<br>//換行操作,屢試不爽
    <input id="litter" type="text"  placeholder="報紙"/>
    //id 這個很關鍵,後面函數調用的參數要用到, placeholder 就是文本框爲空時顯示的東西
	<input type="submit" value="搜索" onclick="showSite(litter.value)"/>
	//onclick 點擊觸發函數運行,通過【.litter】指定 id="litter" 的文本框,【.value】指定文本框的輸入內容
    <br>
    <div id="txtHint"><b>網站信息顯示在這裏……</b></div> 
    //這裏也很關鍵,這裏是 HTML 顯示數據表格的地方,函數裏面用到
</body>
</html>

PHP全部代碼

<?php
$gett = $_GET["q"];
//獲取數據,那個q寫在函數xmlhttp.open("GET","mysql.php?q="+str,true)這裏面,我驚呆了,根本不像話
 
$con = mysqli_connect('192.168.x.xxx:3306','yonghu','mima');
//這裏是數據庫操作基本的語句,連接MySQL數據庫,需要寫數據庫地址,管理數據庫的賬號和密碼
//這裏提一個醒,如果是MySQL聽說是密碼賬戶加密了,當初在ubantu上安裝時設置的賬號密碼不能用
//我只能設置一個遠程的賬戶,給所有權限,參考網址:https://bbs.csdn.net/topics/340186098
if (!$con)
{
    die('Could not connect: ' . mysqli_error($con));
}

// 選擇數據庫
mysqli_select_db($con,"mydb");

// 設置編碼,防止中文亂碼
mysqli_set_charset($con, "utf8");

// 這裏講一下,litter_classify是數據表(table)名字,where的就是找litter_name=【報紙】的那一行
//直接寫 '$get' 也可以的,加兩個點我要幹哈
$sql="SELECT * FROM litter_classify WHERE litter_name = '".$gett."'";
 
//這是MySQL執行語句,很important的,敲黑板!!!
//可以採用變量 $sql 形式
//也可以直接MySQL語句直接幹"SELECT * FROM litter_classify WHERE litter_name = '報紙'"
$result = mysqli_query($con,$sql);
 
 //php的 echo 語句功能非常的強大,可以寫HTML語句,加個class id 的還能設置css樣式,amazing!!!
 //html 的table 是表格 ,tr是表格的一行,th是表頭,td是表的單元格
 //注意用 echo 要把HTML語句打完整,有頭有尾</table></table>,注意一下
 //border=“1” 是設置表的邊框
echo "<table border='1'>
<tr>
<th>ID</th>
<th>垃圾</th>
<th>分類</th>
</tr>";
 
//這個 while 循環很精髓,打印表格必備  $row[]括號裏面寫的是數據庫的列名,需要哪一列寫哪一列
//那個格式要寫對,不要漏點,漏引號之類的
while($row = mysqli_fetch_array($result))
{
    echo "<tr>";
    echo "<td>" . $row['litter_id'] . "</td>";
    echo "<td>" . $row['litter_name'] . "</td>";
    echo "<td>" . $row['litter_style'] . "</td>";
    echo "</tr>";
}
echo "</table>";
 
mysqli_close($con);//有始有終,又開有關,釋放資源
?>

數據庫方面
在這裏插入圖片描述
代碼裏面有解析,講得很詳細了哈,HTML文件和PHP文件要放在同一個目錄下,這個不需要我說了吧,要不然的話,函數那個PHP路徑也要改,./ …/ 上級目錄,上上級目錄這些之類的不講了

安裝MySQL,數據庫建表,插入數據什麼這一類的,還有MySQL語句啥的應該不需要我了吧,那太多東西了,見好就收哈,有問題可以問,本人水平那就那樣,能解答就解答
-----------------------===--------------------------------------------------------------------------------------------------------------

如果以上有哪裏不對,或者有錯的歡迎指正,emmmmm

最後推薦一下
學習製作網頁的話,我覺得三個網站比較不錯,菜鳥教程, w3school ,PHP中文網,很多幹貨,希望對你們學習有幫助,嘻嘻嘻

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章