while循环中的HTML输出语法错误PHP

时间:2017-12-02 09:07:38

标签: php

我正在创建一个搜索栏,用户可以使用post方法进行搜索。方法在这里并不重要,但我无法弄清楚如何在while循环中回显输出blackqoutes。如果我连接所有这些HTML,那么它看起来很丑,也显示错误。

$searchname = '';
        $last = '';


        if(isset($_POST['q'])) {
            $searchq = $_POST['q'];
            $searchq = preg_replace("#[^0-9a-z]#i", "", $searchq);
            $searchq = str_replace(' ', '', $searchq);

            $searchquery= mysqli_query($dbc, "SELECT * FROM test WHERE name LIKE '%$searchq%' OR last LIKE '%$searchq%'") or die ("Something went wrong! Search Again");

            $countsearch = mysqli_num_rows($searchquery);

            if (empty($_POST['q'])){
                $searchname = 'Sorry no results found!';
            }
            elseif($countsearch == 0) {
                $searchname =  'Sorry No results found';

            } else {
                while ($row = mysqli_fetch_array($searchquery)) {
                     $searchname = $row['q'];
                    $last = $row['q'];



                }
            }

        }

        ?>
        </head>
        <body>

            <blockquote class="blockquote">
                <p class="mb-0 web lead"><?php echo $searchname ?></p>
                <footer class="blockquote-footer lit"><?php echo $last; ?></footer>
              </blockquote>

1 个答案:

答案 0 :(得分:0)

未经测试但可能有所帮助。 sql查询的结果(如果有的话)被添加到一个数组($html)中,该数组稍后会在文档正文中打印到屏幕上。

<?php
    $html=array();
    if( $_SERVER['REQUEST_METHOD']=='POST' && !empty( $_POST['q'] ) ){

        $searchname = 'Sorry no results found!';
        $last = '';

        $searchq = str_replace(' ', '', preg_replace( "#[^0-9a-z]#i", "", $_POST['q'] ) );
        $sql="select * from test 
                where name like '%$searchq%' or last like '%$searchq%'";



        $result = mysqli_query( $dbc, $sql );
        $total  = $result ? mysqli_num_rows( $result ) : false;

        if( !$total > 0 ){

            /* simplified html */
            $html[]="
                <blockquote>
                    <p>Sorry No results found</p>
                    <footer></footer>
                </blockquote>";

        } else {
            while( $row = mysqli_fetch_array( $result ) ) {
                $html[]="
                <blockquote>
                    <p>{$row['q']}</p>
                    <footer>{$row['q']}</footer>
                </blockquote>
                ";
            }
        }
    }
?>

<html>
    <head>
        <title>mysqli query</title>
    </head>
    <body>
        <?php
            if( $_SERVER['REQUEST_METHOD']=='POST' ) echo implode( PHP_EOL, $html );
        ?>
    </body>
</html>