Показать сообщение отдельно
  #1 (permalink)  
Старый 13.06.2017, 16:34
Интересующийся
Отправить личное сообщение для Шалун Посмотреть профиль Найти все сообщения от Шалун
 
Регистрация: 22.05.2017
Сообщений: 10

Поиск на сайте и Masonry - PHP, JAVASCRIPT
Помогите, пожалуйста! Не могу разобраться почему при поиске на сайте Masonry не работает; хотя данные, которые были вбиты в поиске выводит. Если же поиск не использовать, то Masonry работает:


1.php
<form name="search" method="post" action="search.php" class="search">
    <input type="search" name="query" placeholder="Поиск" class="input">
    <button type="submit" class="ax">Найти</button> 
</form>




search.php
<!DOCTYPE html>
 <HTML>
 <head>
  <title> </title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <script src="/js/masonry.pkgd.min.js"></script>
  <?php include("bd/Ho_bd.php"); ?>
 
 </head>
 
<body>
<?php 
define('DB_HOST', 'localhost');
define('DB_USER', 'WOW');
define('DB_PASS', '');
define('DB_NAME', 'WOW');
 
if (!mysql_connect(DB_HOST, DB_USER, DB_PASS)) {
    exit('Cannot connect to server');
}
if (!mysql_select_db(DB_NAME)) {
    exit('Cannot select database');
}
 
mysql_query('SET NAMES utf8');
 
function search ($query) 
{ 
    $query = trim($query); 
    $query = mysql_real_escape_string($query);
    $query = htmlspecialchars($query);
 
    if (!empty($query)) 
    { 
        if (strlen($query) < 3) {
            $text = '<p>Слишком короткий поисковый запрос.</p>';
        } else if (strlen($query) > 128) {
            $text = '<p>Слишком длинный поисковый запрос.</p>';
        } else { 
            $q = "SELECT * FROM Ho WHERE 
                 `images` LIKE '%$query%' OR `title` LIKE '%$query%'
                  ";                      
 
            $result = mysql_query($q) or die(mysql_error());
 
            if (mysql_affected_rows() > 0) { 
                $row = mysql_fetch_assoc($result); 
                $num = mysql_num_rows($result);
 
                $text = '<p>По запросу <b>'.$query.'</b> найдено совпадений: '.$num.'</p>';
                
                 
        while($row=mysql_fetch_array($result))      
                {               
echo 
 
'
<div id="container" class="container">
 
<?php
$Ho = get_Ho ();
 
foreach($Ho as $row) : ?>
 
<div class="item">
      <a href="#" class="im"><img src="'.$row['images'].'"</a>
      <div class="title"><a href="#" class="title">'.$row['title'].' </a></div>
</div>
    
<?php endforeach;?>    
  </div>
';
 
}
            } else {
                $text = '<p>По вашему запросу ничего не найдено.</p>';
            }
        } 
    } else {
        $text = '<p>Задан пустой поисковый запрос.</p>';
    }
 
    return $text; 
} 
?>
 
<?php 
if (!empty($_POST['query'])) { 
    $search_result = search ($_POST['query']); 
    echo $search_result; 
}
?>

<script type="text/javascript">
 
  var container = document.querySelector('#container');
  var msnry = new Masonry(container, {
    columnWidth: 325,
    itemSelector: '.item',
    gutter: 20
  });
</script>
</body>
</html>




Ho_bd.php
<?php
 
function db_connect()
{
$host = 'localhost';
$user = 'WOW';
$pswd = '';
$db = 'WOW';
 
$connection = mysql_connect ($host, $user, $pswd);
if(!$connection || !mysql_select_db($db, $connection))
{
 return false;
}
return $connection;
}
 
 function db_result_to_array($result)
{
$res_array = array();
$count=0;
while ($row = mysql_fetch_array($result))
 
{
$res_array[$count] = $row;
$count++;
}
return $res_array;
}
 
 
  function get_Ho ()
  { 
 
    db_connect();
    $query = "SELECT * FROM Ho";
    $result = mysql_query($query);
    $result = db_result_to_array($result);
    return $result;
    }
?>





Понимаю, что Masonry будет работать при таком коде:
<a href="#" class="im"><img src="<?= $row['images']?>"  /></a>

Но в echo все выводит (Masonry в нем не работает почему-то), когда код записан так:
<a href="#" class="im"><img src="'.$row['images'].'"</a>



Помогите, пожалуйста, чтобы Masonry тоже заработал при поиске
Ответить с цитированием