如何将PHP中的变量传递给我的html文本,以便根据值进行更改

时间:2017-03-19 19:20:34

标签: javascript php html

我对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 &#38;"> 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>

3 个答案:

答案 0 :(得分:1)

解决方案1:在这里你必须使用AJAX(异步JavaScript和XML - 你可以找到更多细节here)。这是在PHP和HTML文件中进行通信的基本方法。通过使用JavaScript,您可以将数据发送到PHP文件,然后Javascript将接收PHP中以echo形式打印的值(以字符串的形式),然后可以将其分配给&#34; book1&#34;标识。

结果代码将是: search.php中:

&#13;
&#13;
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;
&#13;
&#13;

searchpage.html:

&#13;
&#13;
<!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 &#38;"> 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;
&#13;
&#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>