Тема: Відображення данних з таблиці в PHP

Доброго вечора, у мене є обробник для пошуку на сайті з використанням БД. Ось шматок коду, який відповідає за відображення інформації з таблиці на сайт:

$raw_results = mysql_query("SELECT * FROM articles
                        WHERE (`title` LIKE '%".$query."%') OR (`text` LIKE '%".$query."%') OR (`type` LIKE '%".$query."%') OR (`url` LIKE '%".$query."%')") or die(mysql_error());
             
        
         
                        if(mysql_num_rows($raw_results) > 0){ 
             
                        while($results = mysql_fetch_array($raw_results)){
            
                             echo "<p><h3>".$results['title']."</h3>".$results['text']."</p>";
                             
 
                             
 
               
                        }
             
                        }

Мені необхідно замість рядка:

echo "<p><h3>".$results['title']."</h3>".$results['text']."</p>";

Вставити ось цей фрагмент HTML:

<a class="blog-title-link w-inline-block" href=".$results['url']."><h1 class="blog-title">.$results['title']. </h1></a>
                                    <div class="post-info-wrapper">
    <a class="post-info when-link" href="#">.$results['type'].</a></div>
    <p class="post-summary">.$results['text'].</p>
                <a class="button-round w-button" href=".$results['url'].">Читати повністю >>></a>

Я знаю, що це буде приблизно щось накшталт цього:

echo "мій HTML код"

Але при спробі зробити це самостійно виникають проблеми і код не працює. Можливо проблема є також у цьому рядочку:

$raw_results = mysql_query("SELECT * FROM articles
                        WHERE (`title` LIKE '%".$query."%') OR (`text` LIKE '%".$query."%') OR (`type` LIKE '%".$query."%') OR (`url` LIKE '%".$query."%')") or die(mysql_error());

А також після цього усього php коду не відображується увесь інший контент, який знаходиться нижче цього коду, так як php влаштований в HTML.

Дякую за розуміння і сподіваюсь на оперативну допомогу! Буду дуже вдячний усім!

2 Востаннє редагувалося ostap34PHP (21.06.2019 01:40:45)

Re: Відображення данних з таблиці в PHP

залежить від помилок, треба більше деталей.

але щоб не писати html в echo, ви можете розірвати тег php:

//тут код
?>
тут html, <?=$results['title']?> і т.д.
<?php
//продовження коду

Також, рекомендую використовувати mysqli заміть mysql.

P.S бачу змінна $query вкладається в запит "напряму", для кращої безпеки (захист від sql ін'єкції) можна використати prepared statements - або фільтруйте змінну

Подякували: leofun011

3

Re: Відображення данних з таблиці в PHP

ostap34PHP написав:

залежить від помилок, треба більше деталей.

але щоб не писати html в echo, ви можете розірвати тег php:

//тут код
?>
тут html, <?=$results['title']?> і т.д.
<?php
//продовження коду

Також, рекомендую використовувати mysqli заміть mysql.

P.S бачу змінна $query вкладається в запит "напряму", для кращої безпеки (захист від sql ін'єкції) можна використати prepared statements - або фільтруйте змінну


Дякую за відповідь, ось повний обробник запиту на пошук:

<?php
mysql_set_charset('utf8');

    mysql_connect("localhost", "root", "") or die("Помилка: БД не існує".mysql_error());
     
    mysql_select_db("me4Sntarol") or die(mysql_error());
    
?>
<!DOCTYPE html>
<html class="no-js" lang="uk">
<head>
    <meta charset="utf-8">
    <title>Результати пошуку</title>

    ================================================== -->
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

    <!-- CSS
    ================================================== -->
    <link href="css/basestyle.css" rel="stylesheet" type="text/css">
    <!-- Java Script
    ================================================== -->
    <script src="js/webfont.js"></script>
    <link rel="stylesheet" href="js/css.js"><script type="text/javascript">WebFont.load({
    google: {
    families: ["Open Sans:300,300italic,400,400italic,600,600italic,700,700italic,800,800italic","Lato:100,100italic,300,300italic,400,400italic,700,700italic,900,900italic","Domine:regular,700"]
    }
    });</script>
    <script src="js/modernizr-2.7.1.js" type="text/javascript"></script>
    <!-- favicons
    ================================================== -->
    <link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon">

</head>

<body>
    <?php include_once("analyticstracking.php") ?>
    <div class="navigation-bar w-nav" data-animation="default" data-collapse="medium" data-contain="1" data-duration="400">
        <div class="w-container">
            <a class="site-name-link w-nav-brand" href="https://www.wholie.today">
                <div class="site-name">Уcі твори, які ти шукаєш!</div></a><nav class="navigation-menu w-nav-menu" role="navigation">
                    <a class="nav-link w-nav-link" href="all_essays.html" style="max-width: 940px;">1</a>
                    <a class="nav-link w-nav-link" href="zno_essays.html" style="max-width: 940px;">2</a>
                    <a class="nav-link w-nav-link" href="buy_essays.html" style="max-width: 940px;">3<font color="#28f559">4</font></a>
                    <a class="nav-link w-nav-link" href="#" style="max-width: 940px;">5
                <div class="menu-button w-nav-button">
                    <div class="w-icon-nav-menu">
                        
                    </div>
                </div>
            </div>
            <div class="w-nav-overlay" data-wf-ignore="">
                
            </div>
        </div>
        <div class="content-wrapper">
            <div class="w-container">
                <div class="w-dyn-list">
                    <div class="w-dyn-items">
                        <div class="w-dyn-item">
                            <div class="post-wrapper">
                                <div>
                                    <center><form action="search.php" method="post">
                                       <p><input class="text-field w-input" data-name="Name" id="Name" maxlength="256" name="themes" placeholder="Введіть запит" type="text">
                                       <input class="button w-button" data-wait="Please wait..." type="submit" value="Знайти"> 
                                       </p>
                                      </form></center>

        </div>
    </div>
</div>
</div>
</div>
        <?php
                        mysql_set_charset('utf8');

                        $query = $_GET['query']; 
    
     
                        $min_length = 3;
    
     
                        if(strlen($query) >= $min_length){ 
         
                        $query = htmlspecialchars($query); 
        
         
                        $query = mysql_real_escape_string($query);
        
         
                        $raw_results = mysql_query("SELECT * FROM articles
                        WHERE (`title` LIKE '%".$query."%'),(`text` LIKE '%".$query."%'),(`type` LIKE '%".$query."%'),(`url` LIKE '%".$query."%')") or die(mysql_error());
             
        
         
                        if(mysql_num_rows($raw_results) > 0){ 
             
                        while($results = mysql_fetch_array($raw_results)){

                            echo "<p><h3>".$results['title']."</h3>".$results['text']."</p>";

                                    
                           }
             
                        }
                    else{ 
                        $notfound = 'not_found.html';
                          header('Location: '.$notfound); 
                        exit();
                        }
         
                        }
                    else{ 
                        $notfound = 'not_found.html';
                          header('Location: '.$notfound); 
                        exit();
                    }
                    ?>

        <div class="button-wrapper">
            <a class="button w-button" href="https://wholie.today">На головну&nbsp;→</a>
        </div>
    </div>
</div>
        <footer class="footer">
            <div class="w-container">
                <div><div class="w-row"><div class="w-col w-col-8"><div class="social-link-group">
                    <center><a href="https://www.facebook.com"><img src="images/facebook.svg" width="40"></a>
                        <a href="https://t.me"><img src="images/telegram.svg" width="40"></a></center>
                    </br>
                    <div class = "authort">
                    <center><p><font color="#969696">© 2019-2019 </br>E-Mail адреса для зворотнього зв'язку: <a href="">example@mail.ua</a></font></p></center>
                    </div>
                </div>
            </div>
            <div class="align-content-right w-clearfix w-col w-col-4">
                
            </div>
        </div>
    </div>
</div>
</footer>
<script src="js/jquery.min.js" type="text/javascript"></script>
<script src="js/webflow.js" type="text/javascript"></script>
</body>

Проблема у тому, що я не можу розмістити результати пошуку у певному місці, за допомогою html, замість того рядка, що є + проблема може бути й у цьому рядочку:

$raw_results = mysql_query("SELECT * FROM articles
                        WHERE (`title` LIKE '%".$query."%'),(`text` LIKE '%".$query."%'),(`type` LIKE '%".$query."%'),(`url` LIKE '%".$query."%')") or die(mysql_error());

4

Re: Відображення данних з таблиці в PHP

Олег Романенко написав:

Проблема у тому, що я не можу розмістити результати пошуку у певному місці, за допомогою html, замість того рядка, що є + проблема може бути й у цьому рядочку:

$raw_results = mysql_query("SELECT * FROM articles
                        WHERE (`title` LIKE '%".$query."%'),(`text` LIKE '%".$query."%'),(`type` LIKE '%".$query."%'),(`url` LIKE '%".$query."%')") or die(mysql_error());

Подивіться чи запит успішно виконаний через

var_dump($raw_results);

Якщо воно щось знаходить, ви можете отримати дані через функцію mysqli_fetch_array, тобто:

$results = mysqli_fetch_array($raw_results, MYSQLI_ASSOC);

і, щоб переглянути дані:

var_dump($results);