我对PHP不是很熟悉,所以请原谅任何可能出现的错误。我正在尝试返回从SQL表中检索到的值。
这是我的search.php文件
include 'dbh.php';
$GENRE=$_GET['genre'];
$BOOKNAME=$_GET['bookname'];
$OFFER=$_GET['offertype'];
$PUB=$_GET['publisher'];
$sql="SELECT * FROM book WHERE
BOOKNAME LIKE '$BOOKNAME%' AND GENRE LIKE '$GENRE' AND PUBLISHER LIKE '$PUB%' ";
$result=$conn->query($sql);
while($row=mysqli_fetch_array($result))
{
echo " "."<br>";
echo $row['BOOKNAME'] ."<br>";
echo $row['GENRE'] ."<br>";
echo $row['AUTHOR'] ."<br>";
echo $row['PUBLISHER'] ."<br>";
}
这是我的searchpage.html文件。我正在尝试使用book1 id更改标记内的文本。
form id="browse" action="search.php" method="GET" >
<fieldset>
<select name="genre">
<option value="Genre" selected>Genre</option>
<option value="fantasy">fantasy</option>
<option value="Non-fiction">Non-fiction</option>
<option value="Science fiction">Science fiction</option>
<option value="Satire">Satire</option>
<option value="drama">Drama</option>
<option value="Action &"> Action and Adventure</option>
<option value="romance">Romance</option>
<option value="mystery">Mystery</option>
<option value="horror">Horror</option>
<option value="health">Health</option>
<option value="travel">Travel</option>
</select>
<input type="search" name ="bookname"placeholder="Browse Books">
<input type="submit" value="Search" >
</fieldset>
</header> <!-- End of main header tag -->
<div class="filt" >
<ul >
<li onclick="myFunction()" >Offer type</li>
<li id="myDIV">
<ul>
<li><input type="radio" checked="checked" name="offertype">all</input></li>
<li><input type="radio" value="free" name="offertype">free</input></li>
<li><input type="radio" value="trade"name="offertype">trade</input></li>
<li><input type="radio" value="sell" name="offertype">sell</input></li>
</ul>
</li>
</ul>
</div>
<div class="result" >
<ul>
<li><a href="#home" id="book1"> </a></li>
<li><a href="#">Book2</a></li>
<li><a href="#contact">Book3</a></li>
<li><a href="#about">Book4</a></li>
<li><a href="#about">Book5</a></li>
</ul>
</div>
</form>
答案 0 :(得分:1)
解决方案1:在这里你必须使用AJAX(异步JavaScript和XML - 你可以找到更多细节here)。这是在PHP和HTML文件中进行通信的基本方法。通过使用JavaScript,您可以将数据发送到PHP文件,然后Javascript将接收PHP中以echo形式打印的值(以字符串的形式),然后可以将其分配给&#34; book1&#34;标识。
结果代码将是: search.php中:
include 'dbh.php';
$GENRE=$_GET['genre'];
$BOOKNAME=$_GET['bookname'];
$OFFER=$_GET['offertype'];
$PUB=$_GET['publisher'];
$sql="SELECT * FROM book WHERE
BOOKNAME LIKE '$BOOKNAME%' AND GENRE LIKE '$GENRE' AND PUBLISHER LIKE '$PUB%' ";
$result=$conn->query($sql);
while($row=mysqli_fetch_array($result))
{
echo $row['BOOKNAME'];
}
&#13;
searchpage.html:
<!DOCTYPE html>
<html>
<body>
<h1>The XMLHttpRequest Object</h1>
<h3>Start typing a name in the input field below:</h3>
<p>Suggestions: <span id="txtHint"></span></p>
<script>
function Search()
{
var _genre, _bookName, _offerType, _url;
var doc = document.getElementsByName("genre")[0];
_genre = doc.options[doc.selectedIndex].value;
_bookName = document.getElementsByName("bookname")[0].value;
_offerType =document.getElementsByName("offertype")[0].value;
_url = "Search.php?genre=" + _genre + "&bookname=" + _bookName + "&offertype=" + _offerType ;
var xhttp;
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("book1").innerHTML = this.responseText;
}
};
xhttp.open("GET", _url, true);
xhttp.send();
}
</script>
<form id="browse" action="search.php" method="GET" >
<fieldset>
<select name="genre">
<option value="Genre" selected>Genre</option>
<option value="fantasy">fantasy</option>
<option value="Non-fiction">Non-fiction</option>
<option value="Science fiction">Science fiction</option>
<option value="Satire">Satire</option>
<option value="drama">Drama</option>
<option value="Action &"> Action and Adventure</option>
<option value="romance">Romance</option>
<option value="mystery">Mystery</option>
<option value="horror">Horror</option>
<option value="health">Health</option>
<option value="travel">Travel</option>
</select>
<input type="search" name ="bookname"placeholder="Browse Books">
<input type="button" value="Search" onClick = "Search()">
</fieldset>
<div class="filt" >
<ul >
<li onclick="myFunction()" >Offer type</li>
<li id="myDIV">
<ul>
<li><input type="radio" checked="checked" name="offertype">all</li>
<li><input type="radio" value="free" name="offertype">free</li>
<li><input type="radio" value="trade"name="offertype">trade</li>
<li><input type="radio" value="sell" name="offertype">sell</li>
</ul>
</li>
</ul>
</div>
<div class="result" >
<ul>
<li><a href="#home" id="book1"> </a></li>
<li><a href="#">Book2</a></li>
<li><a href="#contact">Book3</a></li>
<li><a href="#about">Book4</a></li>
<li><a href="#about">Book5</a></li>
</ul>
</div>
</form>
</body>
</html>
&#13;
答案 1 :(得分:0)
我认为你的代码在html中显示了这些变量。如果你在sql数据库中更改它们,那么html也会改变。
但是你的search.php会显示为白色网站,所以在你输入php之前,你可以放一些html来让它更好看。但是如果您想根据搜索结果更改某些内容,例如书籍“xyz”制作一些特殊容器,则可以使用if语句进行更改。
我希望,我回答了你的问题,如果没有,请告诉我,并提供一些有关问题的详细信息。
编辑: 您可以使用的代码段:
searchpage.php
<html>
Some html
<?php
require_once("search.php");
printResult();
?>
</html>
的search.php
<?php
function printResult(){
include 'dbh.php';
$GENRE=$_GET['genre'];
$BOOKNAME=$_GET['bookname'];
$OFFER=$_GET['offertype'];
$PUB=$_GET['publisher'];
$sql="SELECT * FROM book WHERE
BOOKNAME LIKE '$BOOKNAME%' AND GENRE LIKE '$GENRE' AND PUBLISHER LIKE '$PUB%' ";
$result=$conn->query($sql);
while($row=mysqli_fetch_array($result))
{
echo " "."<br>";
echo $row['BOOKNAME'] ."<br>";
echo $row['GENRE'] ."<br>";
echo $row['AUTHOR'] ."<br>";
echo $row['PUBLISHER'] ."<br>";
}
}
?>
答案 2 :(得分:0)
没有时间正确检查整个事情,但在“book1”结果上方的某处设置一个变量,该变量将包含来自数据库的内容。
$variable = 'whatever you decide this value to be'; //or in your case whatever comes from the database
向下显示html与提到的“book1”显示的位置,将其更改为此
<li><a href="#home" id="book1"> <?php echo '$variable'; ?> </a></li>