Поиск по сайту

Статус
Закрыто для дальнейших ответов.

Denis062

Новичок
Регистрация
19.10.2014
Сообщения
3
подскажите пожайлуста как к данному коду подключить вторую таблицу с названием " tabl_top_menu1 "при условии что строки таблицы совпадают полностью (т.е. изменено только название таблицы )
под "подключить вторую таблицу" я имею ввиду сделать выборку из еще одной таблицы

PHP:
<?php
require_once 'config.php';
session_start();
if( isset($_POST['submit_search']) ){
$search = mysql_real_escape_string($_POST['search']);
if(mb_strlen($search,'UTF-8') < 4){
$_SESSION['res'] = '<p class="src777"><b>Поисковый запрос должен содержать не менее 4-х символов</b></p>';
header("Location: {$_SERVER['PHP_SELF']}");
exit();
}else{
$res = mysql_query("SELECT `article_id`, `title`, `date`, `short_text`, `views` FROM
`articles` WHERE MATCH(title, short_text, content) AGAINST('{$search}') AND `visible`='1' ORDER
BY `title`") or die(mysql_error());
if(mysql_num_rows($res) > 0){
/* если что-то найдено */
while($row_search = mysql_fetch_assoc($res)){
$result[] = $row_search;
}
}else{
$_SESSION['res'] = '<p class="src777"><b>Ничего не найдено</b></p>';
header("Location: {$_SERVER['PHP_SELF']}");
exit();
}
}
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="Description" content="<?php echo $row_pag["description"] ;?>">
<meta name="keywords" content="<?php echo $row_pag["keywords"] ;?>">
<title>Результаты поиска</title>
<link href="css/stayle.css" rel="stylesheet" type="text/css">
<!--
[if lte IE 8]>
<link href="css/IE 6789.css" rel="stylesheet" type="text/css">
<![endif]-->

</head>
<body>
<?php
require_once 'phppages/gmenu.php';
require_once 'phppages/lbloc.php';
require_once 'phppages/rbloc.php';
?>
<div class="content1">
<div class="serch1">
<h2>Результаты поиска</h2></div>
<?php
echo $_SESSION['res'];
unset($_SESSION['res']);
if(count($result) > 0){
foreach($result as $item){ ?>
<div class="articles">
<h2><a href="<?php echo $site_url;?>view_artical.php?article_id=<?php echo $item['article_id']; ?>"> <?php echo htmlspecialchars($item['title']); ?></a></h2>
<?php echo $item['short_text']; ?>

<hr size="1" />
<div class="articles1"><p><strong>Дата:</strong> <?php echo $item['date']; ?> |
<strong>Просмотров:</strong><?php echo $item['views']; ?> </p> </div>
</div>
<?php }
}
?>
</div>
<div class="clear"></div>
<div class="indent"></div>
</div>
</div>

<?php require_once 'phppages/footer.php';?>
Помогите исправте не надо говорить как и что знаете переделайте я лузер и только учусь по отдельным урокам в инете зарание СПС
 

webdron

New Member
Регистрация
03.03.2010
Сообщения
8
Не очень понятет вопрос. Таблица tabl_top_menu1 имеет такую же структуру, что и articles? Просто в коде у вас выборка идет из articles...
Самый простой вариант - действительно, сделать еще одну выборку (будут две последовательные выборки из второй таблицы и добавить строки к массиву result. Ну то бишь, копируете код, который делает запрос и извлечение строк из таблицы, заменить в нем название таблицы, а затем в цикле добавляете к $result.

Очень важный момент. В этом коде используются устаревшие конструкции для работы с базой данной. Они в будущих версиях php будут удалены - см. http://php.net/manual/ru/function.mysql-query.php

Я посоветовал бы писать через PDO, примерно так. В запросе используется параметр :search, для передачи в него параметра из метода execute не нужно ничего экранировать, проверять на наличие кода для sql-инъекций и т.п. Все это PDO делается автоматически.
$sql = ""SELECT `article_id`, `title`, `date`, `short_text`, `views` FROM
`articles` WHERE MATCH(title, short_text, content) AGAINST('{:search}') AND `visible`='1' ORDER
BY `title`"";
$handle = $db->prepare($sql); // -> подготавливаем
$handle->execute(array(':search'=>$_POST['search'])); // -> исполняем, подставляем значение из $_POST в параметр
$handle->rowCount() // -> это число записей
$list = $handle->fetchall(\PDO::FETCH_ASSOC); // -> в $list полученные из таблицы данные

Инициализируется $db для доступа к данным так:

$db=new PDO('mysql:host=...;port=...;dbname=...', 'логин','пароль');
 

Denis062

Новичок
Регистрация
19.10.2014
Сообщения
3
Дудь добр переделай код я вдолгу не останусь в прямом смысле этого слова только свой wmz напиши в личку!

webdron сказал(а):
Не очень понятет вопрос. Таблица tabl_top_menu1 имеет такую же структуру, что и articles? Просто в коде у вас выборка идет из articles...
Самый простой вариант - действительно, сделать еще одну выборку (будут две последовательные выборки из второй таблицы и добавить строки к массиву result. Ну то бишь, копируете код, который делает запрос и извлечение строк из таблицы, заменить в нем название таблицы, а затем в цикле добавляете к $result.

Очень важный момент. В этом коде используются устаревшие конструкции для работы с базой данной. Они в будущих версиях php будут удалены - см. http://php.net/manual/ru/function.mysql-query.php

Я посоветовал бы писать через PDO, примерно так. В запросе используется параметр :search, для передачи в него параметра из метода execute не нужно ничего экранировать, проверять на наличие кода для sql-инъекций и т.п. Все это PDO делается автоматически.
$sql = ""SELECT `article_id`, `title`, `date`, `short_text`, `views` FROM
`articles` WHERE MATCH(title, short_text, content) AGAINST('{:search}') AND `visible`='1' ORDER
BY `title`"";
$handle = $db->prepare($sql); // -> подготавливаем
$handle->execute(array(':search'=>$_POST['search'])); // -> исполняем, подставляем значение из $_POST в параметр
$handle->rowCount() // -> это число записей
$list = $handle->fetchall(\PDO::FETCH_ASSOC); // -> в $list полученные из таблицы данные

Инициализируется $db для доступа к данным так:

$db=new PDO('mysql:host=...;port=...;dbname=...', 'логин','пароль');
Дудь добр переделай код я вдолгу не останусь в прямом смысле этого слова только свой wmz напиши в личку!
 

Denis062

Новичок
Регистрация
19.10.2014
Сообщения
3
Array ( [search] => 77777 [submit_search] => Отправить )
что это?!
 

webdron

New Member
Регистрация
03.03.2010
Сообщения
8
В каком смысле что? Это печать некоего массива конструкцией print_r. Вероятно, отладочный вывод массива $_POST, который заполняется при передаче данных из веб-формы на сервер.
 
Статус
Закрыто для дальнейших ответов.
Верх Низ