2015-09-30 63 views
0

我试图使用三个部门显示MySQL结果(有和没有搜索)。 Div 1具有用于选择查看结果的单选按钮。 Div 2有一个文本说明所有成员都显示,名称的文本搜索框和类型的下拉菜单。搜索结果显示在Div 3中。无法在不同的div中显示来自搜索的Mysql搜索结果

选择所有成员后,文本“显示所有成员”显示在Div 2中,正确的数据显示在Div 3中(正常工作)。当选择名称单选按钮正确的文本搜索框显示Div 2,但我收到以下错误Div 3:

警告:mysqli_query():无法获取/ home /上线/member_dir_test2.php 171

警告:mysqli_error()期望的是1个参数,0在/home/desgar20/elrenochamber.com/member_dir_test2.php给定线173 无法访问数据库:

如果我在搜索框中输入文字并提交Div 2和Div 3去空白

我是使用JavaScript来显示/隐藏搜索的分部和php。

我已经搜索了答案,但还没有找到任何解决此问题的方法。我不知道我错过了什么。需要帮助的建议。

 <style type="text/css"> 
      .box { 
       display: none; 
      } 
     </style> 

     <script type="text/javascript"> 
      //Show or application part based on selection 
      $(document).ready(function(){ 
       $('input[type="radio"]').click(function(){ 
        if($(this).attr("value")=="all"){ 
         $(".box").not(".all").hide(); 
         $(".all").show(); 
         $(".all_listing").show(); 
        } 
        if($(this).attr("value")=="name"){ 
         $(".box").not(".name").hide(); 
         $(".name").show(); 
         $(".all_name").show(); 
        } 
        if($(this).attr("value")=="type"){ 
         $(".box").not(".type").hide(); 
         $(".type").show(); 
         $(".all_type").show(); 
        } 
       }); 
      }); 
     </script> 
    </head> 

    <body> 
     <?php 
      require_once 'php/dbconnect.php'; // Connect to database 
      $connection = db_connect(); 
     ?> 


     <div id="container"> 

      <div id="service"> 

       <div id="web"> 
        <img width="150px" src="images/search1.png" /> 
        <h3>Member <strong><span class="green">Directory</span></strong></h3> 
        <strong>View Members By:</strong><br /><br /> 
        <div id="sortOptions"> 
         <label><input type="radio" name="sortRadio" value="all"> All Members</label><br /> 
         <label><input type="radio" name="sortRadio" value="name"> Name</label><br /> 
         <label><input type="radio" name="sortRadio" value="type"> Type</label> 
        </div><!-- sortOptions --> 
       </div><!-- end web --> 

       <div id="vector"> 

        <div class="all box"> 
         <h3>Display <strong><span class="green">All Members</span></strong></h3> 
         <p>All Members Displayed</p> 
        </div><!-- all box --> 

        <div class="name box"> 
         <h3>Display by <strong><span class="green">Member Name</span></strong></h3> 
         <p><form name="namesearch" method="post" action="<?php echo htmlentities($_SERVER['PHP_SELF']);?>"> 
          Name:&nbsp;&nbsp;<input type="text" name="find"> 
          <input type="submit" name="search" value="Search Names"> 
         </form></p> 
        </div><!-- name box --> 

        <div class="type box"> 
         <h3>Display by <strong><span class="green">Member Type</span></strong></h3> 
         <p><form action="<?php echo htmlentities($_SERVER['PHP_SELF']);?>" method="post"> 
          Type:&nbsp;&nbsp;<select name="type" id="type"> 
          <option value="">-- Select A Type --</option> 
          <?php 
           $query = "SELECT * FROM select_type"; //create type drop-down menu 
           $result = mysqli_query($connection, $query); 
           while ($line = mysqli_fetch_array($result)) { 
           echo "<option value='". $line['type'] ."'>". $line['type']."</option>"; 
           } 
          ?> 
          </select> 
          <input type="submit" name="searchType" value="Search Types"> 
         </form> 
        </div><!-- type box --> 

       </div><!-- end vector --> 

      </div><!-- end service--> 

      <div id="media" class="group"> 

       <div class="all_listing box"> 
        <p>Directory Listing</p> 
        <!-- Start Directory Listing --> 
        <?php 
         $sql = "SELECT * FROM members ORDER BY name"; // Database query and results 
         $result = mysqli_query($connection, $sql); 
         while($row = mysqli_fetch_array($result)) { 
          // Check record for website 
          if ($row['web']!== "") { 
           echo "<a target=blank href=". $row['web'] . ">" .$row["name"] . "</a><br> " . 
           "". $row["type"] . "<br>" . 
           "Address: " . $row["physicaladdress"] . "<br>" . 
           "Phone: " . $row["phone"] . "<br>" . "<hr>"; 
          } 
          else { 
           echo $row["name"]. "<br> " . 
           "". $row["type"] . "<br>" . 
           "Address: " . $row["physicaladdress"] . "<br>" . 
           "Phone: " . $row["phone"] . "<br>" . "<hr>"; 
          } 
         } 
         $connection->close(); 
        ?> 
       </div><!-- all_listing box --> 

       <div class="all_name box"> 
        <p>Results based on Name Search</p> 
        <?php 
         if (isset($_POST['search'])) { // Has "Select Names button ben pushed 
          $find = $_POST['find']; 
          $sql = "SELECT * FROM members WHERE name LIKE '%" . $find . "%' "; 
          $result = mysqli_query($connection, $sql); 
          if(! $result) { 
           die ('Could not access database: ' . mysqli_error()); 
          } 
          while($row = mysqli_fetch_array($result)) { 
           // Check record for website 
           if ($row['web']!== "") { 
            echo "<a target=blank href=". $row['web'] . ">" .$row["name"] . "</a><br> " . 
            "". $row["type"] . "<br>" . 
            "Address: " . $row["physicaladdress"] . "<br>" . 
            "Phone: " . $row["phone"] . "<br>" . "<hr>"; 
           } 
           else { 
            echo $row["name"]. "<br> " . 
            "". $row["type"] . "<br>" . 
            "Address: " . $row["physicaladdress"] . "<br>" . 
            "Phone: " . $row["phone"] . "<br>" . "<hr>"; 
           } 
          } 
         } 
        ?> 
       </div><!-- all_name box --> 
    </body> 
</html> 

我修改了代码,作为建议,但仍收到上述相同的错误,提。下面是我有困难的地区:

这是划分(DIV 1)将在2区显示搜索选项:

<div id="web"> 
    <div id="sort_options"> 
     <label><input type="radio" name="sortRadio" value="name"> Name</label><br /> 
    </div><!-- sort_options --> 
</div><!-- end web --> 

这是2区的搜索功能:

<div class="name box"> 
    <form name="namesearch" method="post" action="<?php echo htmlentities($_SERVER['PHP_SELF']);?>"> 
     Name:&nbsp;&nbsp;<input type="text" name="find"> 
     <input type="submit" name="search" value="Search Names"> 
    </form></p> 
</div> 

这是PHP代码在DIV 3从DIV 2运行与输入的查询:

<div class="all_name box"> 
<?php 
if (isset($_POST['search'])) 
{ 
    $find = $_POST['find']; 
    $sql = "SELECT * FROM members WHERE name LIKE '%" . $find . "%' "; 
    $result = mysqli_query($connection, $sql); 

    if ($result == false) 
    { 
     echo ("Error description: " . mysqli_error($connection)); 
    } 
    else 
    { 
     while($row = mysqli_fetch_array($result)) 
     { 
      // Check record for website 
      if ($row['web']!== "") 
      { 
       echo "<a target=blank href=". $row['web'] .">" .$row["name"] . "</a><br> " . 
       "". $row["type"] . "<br>" . 
       "Address: " . $row["physicaladdress"] . "<br>" . 
       "Phone: " . $row["phone"] . "<br>" . "<hr>"; 
      } 
      else 
      { 
       echo $row["name"]. "<br> " . 
       "". $row["type"] . "<br>" . 
       "Address: " . $row["physicaladdress"] . "<br>" . 
       "Phone: " . $row["phone"] . "<br>" . "<hr>"; 
      } 
     } 
    } 
} 
    ?> 
</div> 

我在这里做错了什么?

+0

你真的应该把这段代码分成合适的层次...... – blackbird

+0

总是对学习更聪明地工作感兴趣。我会研究适当的图层。非常感谢 – Ron

回答

0

更改这个片段:

$sql = "SELECT * FROM members ORDER BY name"; // Database query and results 
$result = mysqli_query($connection, $sql); 
while($row = mysqli_fetch_array($result)) { 

至少

$sql = "SELECT * FROM members ORDER BY name"; // Database query and results 
$result = mysqli_query($connection, $sql); 
while($result !== false && $row = mysqli_fetch_array($result)) { 

原因:如果您的查询是错误的,$result将具有价值false这将导致给定的错误。

更好的代码会是这样的:

$sql = "SELECT * FROM members ORDER BY name"; // Database query and results 
$result = mysqli_query($connection, $sql); 

if ($result == false) 
{ 
     // handle error with mysqli_... functions 
} 
else 
{ 
    while($row = mysqli_fetch_array($result)) { 
    ... 

一如既往:把错误的标准,成功是个例外!

+0

作为错误消息,很显然'$ connection'不是一个有效的mysqli连接。我认为它甚至是未定义的。 –

+0

这是我首先想到的,但是其他连接成功使用了相同的连接(即“类型”下拉菜单和数据库中所有记录的完整列表)。我会继续努力。感谢您的输入。 – Ron