Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Из массива подставить в запрос, как сделать лучше?
Astin  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 24 дня
Карма: 7




Приветствую Форумчане!

Решил перенести все заголовки страниц, описание и ключевые слова в БД.

Создать таблицу примерно вот такую:
id - AUTO_INCREMENT
title - заголовок стр
description - описание
keywords - ключи
page - GET параметр страницы по которому буду определять,
к примеру страница "О нас" формирует вот такой GET index.php?rem=pages&pag=about
соответственно about я запишу в бд.

У каждых типов страниц есть свой роутер, ну и соответственно свой GET параметр

Если делать запрос к БД в каждом роутере то все нормально.

Вот к примеру вот так:

Роутер 1
<?php
// Массив переменных
$pags = array(
'about',
'zayvka',
'faq',
'kontacty',
'call'
);
///////////////////////////////////////////////////////////////////////
$pag = isset($_GET['pag'])?html($_GET['pag']):false;

if (!isset($_GET['pag']))
{
$pag = 'indx';
}
elseif (in_array($_GET['pag'], $pags))
{
$pag = $_GET['pag'];

} else {
header('HTTP/1.1 404 Not Found'); //редирект на страницу ушибки (404)
exit(file_get_contents(HOST.'meseng/notfound.html'));
}
///////////////////////////////////////////////////////////////////////
$query = mysql_query("SELECT * FROM `tit`
WHERE `page` = '"
.$pag."'");
if (mysql_num_rows($query) > 0){

$result = mysql_fetch_assoc($query);

}
echo $result['title'];


Роутер 2
<?php
// Массив переменных
$names = array(
'pownshops',
'avtolombard',
'lombard',
'mko',
'avtolombards',
'lombards',
'mkos'
);
///////////////////////////////////////////////////////////////////////
$nams = isset($_GET['nams'])?html($_GET['nams']):false;

if (!isset($_GET['nams']))
{
$nams = 'pownshops';
}
elseif (in_array($_GET['nams'], $names ))
{
$nams = $_GET['nams'];

} else {
header('HTTP/1.1 404 Not Found'); //редирект на страницу ушибки (404)
exit(file_get_contents(HOST.'meseng/notfound.html'));
}
/////////////////////////////////////////////////////////////////
$query = mysql_query("SELECT * FROM `tit`
WHERE `page` = '"
.$nams."'");
if (mysql_num_rows($query) > 0){

$result = mysql_fetch_assoc($query);

}
echo $result['title'];


echo я поставил так для проверки работает или нет

Вот такой вариант работает.

И вот теперь вопросы:

1) Будет ли такой вариант нагружать сервер или БД?

2) Хотелось бы вообще сделать один запрос и подставлять данные из массивов,
а все имеющиеся массивы страниц слить в один к примеру через array_merge().
Но вот как правильно сделать никак недогоняю, то есть как подставить значения
из общего массива?

Или если не будет особой нагрузки на сервер и БД то может оставить тот пример кода
который я привел?

Как надо и как лучше подскажите пожалуйста

_

Это сообщение отредактировал Astin - 9.05.2016 - 13:02
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 24 дня
Карма: 7




Если брать мой пример то можно еще и так написать запрос

<?php
// Массив переменных
$pags = array(
'about',
'zayvka',
'faq',
'kontacty',
'call'
);
///////////////////////////////////////////////////////////////////////
$pag = isset($_GET['pag'])?html($_GET['pag']):false;

if (!isset($_GET['pag']))
{
$pag = 'indx';
}
elseif (in_array($_GET['pag'], $pags))
{
$pag = $_GET['pag'];

$query = mysql_query("SELECT * FROM `tit`
WHERE `page` = '"
.$pag."'");
if (mysql_num_rows($query) > 0){

$result = mysql_fetch_assoc($query);

} else {
header('HTTP/1.1 404 Not Found'); //редирект на страницу ушибки (404)
exit(file_get_contents(HOST.'meseng/notfound.html'));
}

echo $result['title'];
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 24 дня
Карма: 7




Из выше приведенного кода решил попробовать написать функцию
и вот что получилось
<?php
function
getPages($gets, $data, $massiv, $templat)
{
global $results;

if (!isset($gets))
{
$data = $templat;
}
elseif (in_array($gets, $massiv))
{
$data = $gets;
$key = array_search($gets,$massiv);
$inser = $massiv[$key];

$res = mysql_query("SELECT * FROM `tit`
WHERE `gets` = '"
.$inser."'");
if (mysql_num_rows($res) > 0)
$results = mysql_fetch_assoc($res);

} else {
header('HTTP/1.1 404 Not Found');
exit(file_get_contents(HOST.'meseng/notfound.html'));
}
}


Теперь в роутере выводим вот так
<?php
// Массив переменных
$pags = array(
'about',
'zayvka',
'faq',
'kontacty',
'call'
);
///////////////////////////////////////////////////////////////////////
$pag = isset($_GET['pag'])?html($_GET['pag']):false;

getPages($_GET['pag'], $pag, $pags, 'indx');

// Ну и смотрим ради интереса что выходит
echo $result['title'];


Но это получается что для каждого роутера свой запрос к БД, а не единый. Хотя...

Если к примеру взять 100 юсеров которые зашли на сайт, то получается
при едином запросе получится от 100 юсеров 100 запросов к БД

А если взять код который я привел, то это в каждом роутере свой запрос
Теперь если 50 юсеров пойдут на 1роутер а 50 юсеров на 2роутер, то один
фиг получается 100 запросов.

Видимо не стоит заморачиваться для единого запроса я так думаю, если неправильно
думаю то пожалуйста поправьте

А вот теперь мне интересно, вообще правильно ли я написал функцию?

Работать то она работает, но может что не так в коде прописано
_




PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса