如何使用PHP和&amp ;;在一个表中显示搜索结果MySQL的

时间:2015-12-16 15:12:58

标签: php

我有代码进行搜索。但搜索结果不在同一张表中。所有搜索结果都显示在不同的表格中。如何让它们出现在一个表格中?

screenshots :

    <?php if(isset($_POST['submit']))
    {
        if(empty($_POST['word'])){
        echo "<center>Title do not match. Please insert the correct title.</center>";}
    else {
        if(isset($_POST['word'])&& !empty($_POST['word']))
    {
    require 'config.php';   
    $word = $_POST['word'];
    $query="SELECT * FROM data WHERE word LIKE '%" . $word . "%'";
    $sql = $conn->query($query); ?>
    <?php if(!$sql)
    {
     echo "<center>No Record</center>";
     }
     ?>
    <table align="center" border="0" >
    <tr>
    <td width="900">
    <?php while($row = $sql->fetch_assoc()){
        $dataID = $row['dataID'];
        ?>                               
       <?php if($sql ==true){?> 


   <table class="table table-bordered table-hover table-striped">
      <tr>
        <td width="258" align="center" class="style5">TITLE</td>
        <td width="170" align="center" class="style5">MENTION</td>
        </tr>

      <tr>
       <td style="text-transform:uppercase" align="center"> <a href="admindisplay.php?id=<?php echo $row{'dataID'}?>"> <span style="text-transform:uppercase"><?php echo $row{'word'};?></span> </a></td>
        <td style="text-transform:uppercase" align="center"><span style="text-transform:uppercase"><?php echo $row{'mention'};?></span></td>

        </tr>
        <?php }}} ?>re

4 个答案:

答案 0 :(得分:1)

我们从哪里开始?

1。)尝试在html中避免样式化。它不是禁止的,但是当你使用CSS时,你的全局风格会更好。 http://www.w3schools.com/css/

例如:想象一下这条规则:

<td style="text-transform:uppercase" align="center"> <a href="admindisplay.php?id=<?php echo $row['dataID']?>"> <span style="text-transform:uppercase"><?php echo $row{'word']; ?></span> </a></td>

也可能是:

<td>
    <a href="admindisplay.php?id=<?php echo $row['dataID']; ?>">
          <?php echo $row['word'];?>
    </a>
</td>

2.)尝试缩进。使用IDE(记事本具有一些额外的突出显示功能和良好的缩进。通过结构化和整齐地放置括号“[] {}和()”,您可以使代码更具可读性,并且更容易调试您自己的代码。

3。)使用SQL时,您的输入应该总是被转义。也许我错了,你有一个DB类为你做这个。虽然,你应该始终注意这一点:这可能会阻止SQL注入,并可能有一天保护你的生命(或你的工作)。

转义:让您的查询安全,让它只做您想要它做的事情。 SQL INJECTION:向INPUT添加恶意字符和代码,以便QUERY执行除您想要的其他操作。

4。)尝试对你正在做的事情或你想要达到的目标进行构建。

<?php
Class DoSearch()
{
    protected $search_string;

    public function __construct()
    {
        if(!$this->verify())
            return $this->__html('<center>Title do not match. Please insert the correct title.</center>');

        $this->search()
    }

    public function verify()
    {
        if(isset($_POST['word']))
            return false;
        if(empty($_POST['word']))
            return false;

        global $conn;

        $this->search_string = $conn->escape($_POST['word']);
        return true;
    }

    public function search()
    {
        global $conn;
        $query = "SELECT * FROM data WHERE word LIKE '%" . $this->search_string . "%'";
        $sql = $conn->query($query);

        if(!$sql)
            return $this->__html('<center>No Record</center>');

        $table = array();
        $i = 0;

        $tableHtml = '  
        <table class="table table-bordered table-hover table-striped">
        <tr>
            <th width="258" align="center" class="style5">TITLE</th>
            <th width="170" align="center" class="style5">MENTION</th>
        </tr>';

        while($row = $sql->fetch_assoc())
        {
            $tableHtml .= '  
              <tr>
                 <td style="text-transform:uppercase" align="center"> <a href="admindisplay.php?id='.$row['dataID'].'"> <span style="text-transform:uppercase">'.$row['word'].'</span> </a></td>
                 <td style="text-transform:uppercase" align="center"><span style="text-transform:uppercase">'. $row['mention'].'</span></td>
              </tr>
            ';
        }
        $tableHtml .= '
        </table>
        ';

        return $this->__html($tableHtml);

    }

    public function __html($msg)
    {
        echo $msg;
    }

}

require_once 'config.php';
$search = new DoSearch();

答案 1 :(得分:0)

将表格代码移到循环之外,每次循环时只创建一个新行。每次循环时都在创建一个新表。

   <table class="table table-bordered table-hover table-striped">
      <tr>
        <td width="258" align="center" class="style5">TITLE</td>
        <td width="170" align="center" class="style5">MENTION</td>
        </tr>
 <?php while($row = $sql->fetch_assoc()){
        $dataID = $row['dataID'];
        ?>                               
       <?php if($sql ==true){?> 



      <tr>
       <td style="text-transform:uppercase" align="center"> <a href="admindisplay.php?id=<?php echo $row{'dataID'}?>"> <span style="text-transform:uppercase"><?php echo $row{'word'};?></span> </a></td>
        <td style="text-transform:uppercase" align="center"><span style="text-transform:uppercase"><?php echo $row{'mention'};?></span></td>

        </tr>
        <?php }}} ?>

答案 2 :(得分:0)

每次循环运行时都不要创建表。简单。

更新代码

multiprocessing.Pool().*map*

答案 3 :(得分:0)

如果仅在(未格式化的)表中发布结果,只需使用此函数:

function show_in_table($arr)
{
    $count = count($arr);
    $output = "";

    if($count>0)
    {
        reset($arr);
        $num = count(current($arr));

        $output.= '<table cellpadding="0" cellspacing="0">'."\n";
        $output.="<tr>\n";

        foreach(current($arr) as $key => $value)
        {
            $output.="<th>";
            $output.=$key."&nbsp;";
            $output.="</th>\n";
        }

        $output.="</tr>\n";

        while ($curr_row = current($arr))
        {
            $output.="<tr>\n";
            $col = 1;

            while (false !== ($curr_field = current($curr_row)))
            {
                $output.="<td>";
                $output.=$curr_field."&nbsp;";
                $output.="</td>\n";
                next($curr_row);
                $col++;
            }

            while($col <= $num)
            {
                $output.="<td>&nbsp;</td>\n";
                $col++;
            }

            $output.="</tr>\n";
            next($arr);
        }

        $output.="</table>\n";
    }

    return $output;
}