PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (2): « 1 [2]
Найдено сообщений: 29
AlexNewaro
Отправлено: 15 Марта, 2015 - 21:39:21 • Тема: Откладывание записи в базу на определенную дату • Форум: Вопросы новичков
Ответов: 6 Просмотров: 227
exlant пишет: AlexNewaro пишет: exlant пишет: для этого можно использовать утилиту - cron
а если объектов обновления - 160, вся информация для обновления - разная и сроки исполнения обновления - разные?
можно свой скрипт написать, например на c++...
если вы хотите именно средствами mysql, то я не слышал, что б такое было возможно!
вот триггеры можно вешать, но они будут срабатывать на какой-то определенное действие( вставка, удаление, обновление строки ), не совсем то что вам нужно!
В любом случае спасибо за желание помочь, буду искать дальше...
Буду рад, если еще кто-то выскажется
AlexNewaro
Отправлено: 15 Марта, 2015 - 20:39:38 • Тема: Откладывание записи в базу на определенную дату • Форум: Вопросы новичков
Ответов: 6 Просмотров: 227
Приветствую!
Есть такая задача - занести прайс торгового объекта в базу.
Сложность в том, что в течение года цены меняются (известны заранее сроки смены цен и сами новые цены), а объектов - 160 штук. И даты смены цен у каждого - свои.
Соответственно, если ставить себе задачей ручное обновление прайсов в соответствии с графиком смены цен, то весь год так и просидишь за постоянным обновлением.
Куда проще, как мне кажется, забить прайс, затем забить его же с новыми ценами, но установить срок, в который выполнится запрос в базу и данные обновятся.
Подскажите, пожалуйста, пару идей как это можно было бы организовать.
Заранее спасибо.
AlexNewaro
Отправлено: 11 Марта, 2015 - 13:13:48 • Тема: Вывод AJAX-запросов в разные DIV • Форум: JavaScript & VBScript
Ответов: 0 Просмотров: 584
Приветствую!
Есть такой вопрос, поиск и гугл пока ответа не дают, возможно у меня проблема с формулировкой
У меня на странице выполняется два запроса Ajax. Первый ajax ищет по отмеченным чекбоксам (все работает супер), по результатам выводит список новых чекбоксов. Там отмечаются желаемые и второй ajax выводит подробную информацию о выбранных чекбоксах (тоже работает все супер).
Функция Refresh, которая отвечает за вывод результата - у обоих ajax вынужденно одинаковая. Поэтому результаты второго запроса заменяют результаты первого. В качестве костылей продублировал первый запрос во втором, то есть при втором запросе еще раз выполняется первый и выводится оба результата. Проблему решило, но вносит косяк с версткой.
Посему вопрос - как разнести мне по разным блокам вывод результатов? Присвоение второму запросу иной функции вывода, например Refresh2 - не работает. Прописывание функции прямо в теле функции запроса - тоже ноль эмоций...
Хелп!
CODE (
htmlphp ):
скопировать код в буфер обмена
var req = Create();
function ge(id)
{
return document.getElementById(id);
}
function Create()
{
if(navigator.appName == "Microsoft Internet Explorer")
{
req = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
req = new XMLHttpRequest();
}
return req;
}
function Request2(query)
{
req.open('post', 'hotelsearchajax.php' , true );
req.onreadystatechange = Refresh;
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
req.send(query);
}
function Request3(query)
{
req.open('post', 'hotelselectajax.php' , true );
req.onreadystatechange = Refresh;
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
req.send(query);
}
function Refresh()
{
var a = req.readyState;
if( a == 4 )
{
var b = req.responseText;
document.getElementById('ajax').innerHTML = b;
}
else
{
document.getElementById('ajax').innerHTML = '< br> loading';
}
}
function Hotels()
{
var query;
var s = $('input:checked, #type, #rating, #place','form').serialize();
query = s;
Request2(query);
}
function selecthotel()
{
var query;
var numdays = encodeURIComponent(ge('numdays').value);
var s = $('input:checked, #type, #rating, #place, #hotel','form').serialize();
query = s+'&numdays='+numdays;
Request3(query);
}
AlexNewaro
Отправлено: 13 Февраля, 2015 - 14:25:39 • Тема: Вывод нескольких значений из ассоциативного массива • Форум: Вопросы новичков
Ответов: 2 Просмотров: 182
RickMan пишет:
замените на
И почитайте про isset. А еще советую менять логику скрипта и стиль написания кода.
И еще непонятно зачем нужно
Спасибо, учту. Чувствовал, что не по феншую...
Стиля пока нет, как такового. Подучиваю функции, компилирую чужие наработки в одну работающую конструкцию, какие-то вещи начинаю сам дописывать, но пока по мелочи.
Но вот по сабжу - прямо тупик тупиковый. Третий день убиваюсь. Просил бы помочь с этим.
AlexNewaro
Отправлено: 13 Февраля, 2015 - 14:05:51 • Тема: Вывод нескольких значений из ассоциативного массива • Форум: Вопросы новичков
Ответов: 2 Просмотров: 182
Навертел от души прекрасно работающую конструкцию - получение данных из чекбоксовой формы, формирование запроса в базу, параллельная отправка менеджеру письма с данными, что вводил и отмечал пользователь.
Доволен был как слон, пока не отметил больше одного чекбокса каждого типа. И вот тут грянул вселенский пук - вывод результатов отлично работает, а вот в письме вместо всех отмеченных юзером значений одного типа - пусто.
То бишь выбирает он два чекбокса type - в письме напротив графы "тип" - пусто. По одному - все отлично. Но нужно ровно столько прислать в письме, сколько отмечено юзером.
Вот и не могу никак объединить значения и через запятую их в письме написать.
Прошу помощи!
PHP:
скопировать код в буфер обмена
<?
if ( ! defined ( 'DATALIFEENGINE' ) ) { die ( "Hacking attempt!" ) ; } $tpl -> load_template ( 'hotels.tpl' ) ;
function connectDB ( ) {
return $dbconn ;
}
$site [ 'from_name' ] = 'Технический отдел' ; // from (от) имя
$site [ 'from_email' ] = 'it@mail' ;
$site [ 'smtp_mode' ] = 'disabled' ;
$site [ 'smtp_host' ] = null ;
$site [ 'smtp_port' ] = null ;
$site [ 'smtp_username' ] = null ;
if ( isset ( $_REQUEST [ 'submit' ] ) ) { $connect = connectDB( ) ;
if ( count ( $_GET [ 'type' ] ) > 0
) { $type = implode ( ',' , $_GET [ 'type' ] ) ; $str .= ' AND type IN(' . $type . ')' ; }
if ( count ( $_GET [ 'place' ] ) > 0
) { $place = implode ( ',' , $_GET [ 'place' ] ) ; $str .= ' AND place IN(' . $place . ')' ; }
if ( count ( $_GET [ 'rating' ] ) > 0
) { $rating = implode ( ',' , $_GET [ 'rating' ] ) ; $str .= ' AND rating IN(' . $rating . ')' ; }
if ( $_GET [ 'clientname' ] != null )
{ $cname = $_GET [ 'clientname' ] ; }
if ( $_GET [ 'clientemail' ] != null )
{ $cmail = $_GET [ 'clientemail' ] ; }
if ( $_GET [ 'clienttelephone' ] != null )
{ $ctel = $_GET [ 'clienttelephone' ] ; }
$typ [ '25,26' ] = 'ОТЕЛЬ' ;
$typ [ 28 ] = 'САНАТОРИЙ' ;
$typ [ 27 ] = 'ПАНСИОНАТ' ;
$rat [ 15 ] = '<img src="/templates/img/s1.png" border="0">' ;
$rat [ 17 ] = '<img src="/templates/img/s2.png" border="0">' ;
$rat [ 19 ] = '<img src="/templates/img/s3.png" border="0">' ;
$rat [ 21 ] = '<img src="/templates/img/s4.png" border="0">' ;
$rat [ 23 ] = '<img src="/templates/img/s5.png" border="0">' ;
$ratt [ 15 ] = '1*' ;
$ratt [ 17 ] = '2*' ;
$ratt [ 19 ] = '3*' ;
$ratt [ 21 ] = '4*' ;
$ratt [ 23 ] = '5*' ;
$pla [ 5 ] = 'ЦЕНТР' ;
$pla [ 6 ] = 'ХОСТА' ;
$pla [ 7 ] = 'АДЛЕР' ;
$pla [ 42 ] = 'ИМЕРЕТИНКА' ;
$pla [ 8 ] = 'КРАСНАЯ ПОЛЯНА' ;
$pla [ 9 ] = 'ЛАЗАРЕВСКОЕ' ;
$pla [ 10 ] = 'ДАГОМЫС' ;
if ( $_GET and $_GET [ 'clientemail' ] != null ) {
if ( filter_var ( $_GET [ 'clientemail' ] , FILTER_VALIDATE_EMAIL
) ) { require_once ( $_SERVER [ 'DOCUMENT_ROOT' ] . '/test/lib/MailClass.inc' ) ;
$mailer = new FreakMailer( ) ;
$mailer -> Subject = 'Клиент просит связаться по поводу размещения' ;
$mailer -> Body =
'Имя клиента: ' . $cname . '
email: ' . $cmail . '
телефон: ' . $ctel . '
Параметры его поиска:
Тип: ' . $typ [ $type ] . '
Класс: ' . $ratt [ $rating ] . '
Расположение: ' . $pla [ $place ] . '' ;
$mailer -> AddAddress ( '@gmail' , '' ) ;
if ( ! $mailer -> Send ( ) )
{
//echo 'Не могу отослать письмо!';
}
else
{
echo '<div style="display: none;">
<div class="box-modal" id="exampleModal">
<div class="box-modal_close arcticmodal-close">закрыть</div>
СПАСИБО ЗА ВАШУ ЗАЯВКУ, МЫ ОБЯЗАТЕЛЬНО СВЯЖЕМСЯ С ВАМИ В БЛИЖАЙШЕЕ ВРЕМЯ!
</div>
</div>' ;
}
$mailer -> ClearAddresses ( ) ;
$mailer -> ClearAttachments ( ) ;
}
else {
echo '<div style="display: none;">
<div class="box-modal" id="exampleModal">
<div class="box-modal_close arcticmodal-close">ЗАКРЫТЬ</div>
ВЫ НЕВЕРНО ВВЕЛИ АДРЕС СВОЕЙ ЭЛЕКТРОННОЙ ПОЧТЫ.<br>ВЫ МОЖЕТЕ ПРОДОЛЖИТЬ РАБОТАТЬ С ПОИСКОМ ПО ОТЕЛЯМ, НО ЕСЛИ ХОТИТЕ, ЧТОБЫ МЫ С ВАМИ СВЯЗАЛИСЬ - ВВЕДИТЕ СВОЙ ЭЛЕКТРОННЫЙ АДРЕС ПРАВИЛЬНО.<br>СПАСИБО!
</div>
</div>' ;
}
}
function resSQL( $s ) {
return $row [ 0] ;
else
return false ; }
$mpp = 9 ;
if ( empty ( $_GET [ 'page' ] ) || ( $_GET [ 'page' ] <= 0
) ) { $page = 1 ; } else { $page = ( int) $_GET [ 'page' ] ; }
$q = mysql_query ( 'select SQL_CALC_FOUND_ROWS `name`, `rating`, `key`, `address`, `desc`, `src` FROM `sled_hotels` WHERE town=4 ' . $str . ' limit ' . ( ( $page - 1
) * $mpp ) . ',' . $mpp ) ; $fr = resSQL( 'SELECT FOUND_ROWS()' ) ;
$num = '<div class="hotelsearchresults">По вашему запросу найдено объектов для размещения: ' . $fr . ' </div>' ;
if ( $type > 0 )
{ $typelink = '&type[]=' . $type ;
} else { $typelink = null ; }
if ( $rating > 0 )
{ $ratinglink = '&rating[]=' . $rating ;
} else { $ratinglink = null ; }
if ( $place > 0 )
{ $placelink = '&place[]=' . $place ;
} else { $placelink = null ; }
$pagi = 'страниц: ' ;
if ( $pc > 1)
{
$raz = '' ;
for ( $n = 1 ; $n <= $pc ; $n ++ )
{
$pagi .= $raz ;
if ( $page == $n )
$pagi .= $n ;
else
{
$pagi .= '<A HREF="/test/?do=hotels' ;
if ( $n > 0)
$pagi .= '&page=' . $n . $typelink . $ratinglink . $placelink . '&submit=ПОКАЗАТЬ+ВЫБРАННОЕ' ;
$pagi .= '">' . $n . '</A>' ;
}
$raz = '<span style="color:#999;"> | </span>' ;
} $pagi .= '</div>' ;
}
echo '</div>' ;
if ( $_GET [ 'submit' ] = 'ПОКАЗАТЬ+ВЫБРАННОЕ' )
{ $demo = '<div class="allresult">' ;
{
$demo .= '<div class="eachresult">
<div class="hotelnamewhiteline">
<div class="hotelrating">' . $rat [ $r [ 'rating' ] ] . '</div>
<div class="hotelname"><a href="/' . $r [ 'key' ] . '.html" target="_parent"> "' . $r [ 'name' ] . '" </a></div>
</div>
<div class="hoteladdress">' . $r [ 'address' ] . '</div>
<div class="hoteldescription"><a href="/' . $r [ 'key' ] . '.html" target="_parent">' . $r [ 'desc' ] . '</a></div>
<div class="hotelphoto"><a href="/' . $r [ 'key' ] . '.html" target="_parent"><img src="http://www.sgtours.ru' . $r [ 'src' ] . '" border="0" width="160" height="120" style="border: 7px solid rgb(255, 255, 255); box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.3); border-radius: 7px; margin: 0px 10px 0px 0px;"></a></div>
</div>' ;
}
echo '</div>' ;
} else { $demo .= null ; }
}
else
{ }
$tpl -> set ( '{demo}' , $demo ) ;
$tpl -> set ( '{num}' , $num ) ;
$tpl -> set ( '{pagi}' , $pagi ) ;
$tpl -> compile ( 'content' ) ;
$tpl -> clear ( ) ;
?>
Ошибки до выполнения скрипта.
PHP:
скопировать код в буфер обмена
Notice: Undefined variable: demo in / home/ site/ www/ test/ engine/ modules/ hotels. php on line 204
Notice: Undefined variable: num in / home/ site/ www/ test/ engine/ modules/ hotels. php on line 205
Notice: Undefined variable: pagi in / home/ site/ www/ test/ engine/ modules/ hotels. php on line 206
Ошибки после выполнения скрипта
PHP:
скопировать код в буфер обмена
Notice: Undefined variable: str in / home/ site/ www/ test/ engine/ modules/ hotels. php on line 35
Notice: Undefined variable: cname in / home/ site/ www/ www/ test/ engine/ modules/ hotels. php on line 88
Notice: Undefined variable: ctel in / home/ site/ www/ test/ engine/ modules/ hotels. php on line 90
AlexNewaro
Отправлено: 10 Февраля, 2015 - 00:15:39 • Тема: Запихнуть в выводную переменную целую ветку условий и функций • Форум: Вопросы новичков
Ответов: 1 Просмотров: 94
Привет! Прошу помощи!
Нужно организовать вывод через переменную ссылок пагинатора.
Вот всю эту историю нужно впихнуть в $demo .=
CODE (
htmlphp ):
скопировать код в буфер обмена
if ($pc>1)
{
$raz='';
for($n=1;$n<= $pc ; $n ++ )
{
echo $raz ;
if ( $page == $n )
echo $n ;
else
{
echo '<A HREF="/?do=hotels' ;
if ( $n > 0)
echo '&page=',$n,$typelink,$ratinglink,$placelink,'&submit=ПОКАЗАТЬ+ВЫБРАННОЕ';
echo '">',$n,'</ A> ';
}
$raz=' | ';
}
}
AlexNewaro
Отправлено: 07 Февраля, 2015 - 19:23:50 • Тема: В пагинаторе генерируются "пустые ссылки" на следующие страницы • Форум: Вопросы новичков
Ответов: 0 Просмотров: 461
Код работает на выборку и разделение на положенное количество результатов на страницу, но генерирует "пустые ссылки" в пагинаторе, которые никуда не ведут.
Открывается, к примеру, /customsearch.php&page=2, но там пусто, выборка по откорректированным LIMIT не происходит, видимо.
Подскажите, пожалуйста, в чем косяк.
CODE (
htmlphp ):
скопировать код в буфер обмена
< div class= "hotelsearchform" >
< form name= "form" id= "form" method= "post" action= "" >
< div class= "search4hoteltype" >
< input type= "checkbox" name= "type[]" value= "25" > Отель< br>
< input type= "checkbox" name= "type[]" value= "26" > Мини-гостиница< br>
< input type= "checkbox" name= "type[]" value= "28" > Санаторий< br>
< input type= "checkbox" name= "type[]" value= "27" > Пансионат< br>
</ div>
< div class= "search4hotelrating" >
< input type= "checkbox" name= "rating[]" value= "15,17" > 2*< br>
< input type= "checkbox" name= "rating[]" value= "19" > 3*< br>
< input type= "checkbox" name= "rating[]" value= "21" > 4*< br>
< input type= "checkbox" name= "rating[]" value= "23" > 5*< br>
</ div>
< div class= "search4hotelplace" >
< input type= "checkbox" name= "place[]" value= "5" > Центр< br>
< input type= "checkbox" name= "place[]" value= "6" > Хоста< br>
< input type= "checkbox" name= "place[]" value= "7" > Адлер< br>
< input type= "checkbox" name= "place[]" value= "42" > Имеретинка< br>
< input type= "checkbox" name= "place[]" value= "8" > Красная Поляна< br>
< input type= "checkbox" name= "place[]" value= "10" > Дагомыс< br>
< input type= "checkbox" name= "place[]" value= "9" > Лазаревское< br>
</ div>
< div class= "search4hotelbuttons" >
< input name= "submit" value= "ПОКАЗАТЬ ВЫБРАННОЕ" type= "submit" >
</ div>
</ form>
</ div> <!-- hotelsearchform -->
<?
function connectDB ( ) {
return $dbconn ;
}
function closeDB( $dbconn ) {
}
if ( isset ( $_REQUEST [ 'submit' ] ) ) {
$connect = connectDB( ) ;
if ( count ( $_POST [ 'type' ] ) > 0 ) {
$type = implode ( ',' , $_POST [ 'type' ] ) ; $str .= ' AND type IN(' . $type . ')' ;
}
if ( count ( $_POST [ 'place' ] ) > 0 ) {
$place = implode ( ',' , $_POST [ 'place' ] ) ; $str .= ' AND place IN(' . $place . ')' ;
}
if ( count ( $_POST [ 'rating' ] ) > 0 ) {
$rating = implode ( ',' , $_POST [ 'rating' ] ) ; $str .= ' AND rating IN(' . $rating . ')' ;
}
$rat [ 15 ] = '<img src="/templates/img/s1.png" border="0">' ;
$rat [ 17 ] = '<img src="/templates/img/s2.png" border="0">' ;
$rat [ 19 ] = '<img src="/templates/img/s3.png" border="0">' ;
$rat [ 21 ] = '<img src="/templates/img/s4.png" border="0">' ;
$rat [ 23 ] = '<img src="/templates/img/s5.png" border="0">' ;
function resSQL( $s ) {
return $row [ 0] ;
else
return false ;
}
$mpp = 5 ;
if ( isset ( $_GET [ 'page' ] ) ) { $page = intval ( $_GET [ 'page' ] ) ; if ( $page <= 0)
return ;
} else
$page = 1 ;
$q = mysql_query ( 'select SQL_CALC_FOUND_ROWS `name`, `rating`, `key`, `address`, `desc` FROM `sled_hotels` WHERE town=4 ' . $str . ' limit ' . ( ( $page - 1) * $mpp ) . ',' . $mpp ) ; $fr = resSQL( 'SELECT FOUND_ROWS()' ) ;
echo '<div class="allresult">' ;
{
echo '<div class="eachresult">
<div class="hotelnamewhiteline">
<div class="hotelrating">' . $rat [ $r [ 'rating' ] ] . '</div>
<div class="hotelname"><a href="/' . $r [ 'key' ] . '.html" target="_parent"> "' . $r [ 'name' ] . '" </a></div>
</div>
<div class="hoteladdress">' . $r [ 'address' ] . '</div>
<div class="hoteldescription"><a href="/' . $r [ 'key' ] . '.html" target="_parent">' . $r [ 'desc' ] . '</a></div>
</div>' ;
}
echo '</div>' ;
if ( $pc > 1)
{
$raz = '' ;
for ( $n = 1 ; $n <= $pc ; $n ++ )
{
echo $raz ;
if ( $page == $n )
echo $n ;
else
{
echo '<A HREF="' . $S_SERVER [ 'PHP_SELF' ] . '' ;
if ( $n > 1)
echo '?page=' , $n ;
echo '">' , $n , '</A>' ;
}
$raz = ' | ' ;
}
}
}
closeDB ( $connect ) ;
?>
AlexNewaro
Отправлено: 06 Февраля, 2015 - 00:39:28 • Тема: Пост лени, отсутствия времени и запрос о помощи. Постраничный вывод ОПЯТЬ! • Форум: Напишите за меня, пожалуйста
Ответов: 0 Просмотров: 25
Прошу помощи!
Использую DLE. Еле втер в систему этот модуль. И тут нате вам - вывод всех записей из базы кладет скрипт (а записей всего 166, хостинг постарался, на нормальном - все работает, но использовать - не вариант).
Решил, что мне поможет постраничный вывод.
И уперся рогом - никак его не могу вкрутить в уже готовый модуль...
Могу ли попросить о помощи? Завтра сдавать предварительные результаты, а тут такой пердимонокль
PS - заодно может кому понадобится (найдет через гугль-мугль) обработка формы с чекбоксами.
ЗАРАНЕЕ СПАСИБО!!!
CODE (
htmlphp ):
скопировать код в буфер обмена
< div class= "hotelsearchform" >
< form name= "form" id= "form" method= "post" action= "" >
< div class= "search4hoteltype" >
< input type= "checkbox" name= "type[]" value= "25" > Отель< br>
< input type= "checkbox" name= "type[]" value= "26" > Мини-гостиница< br>
< input type= "checkbox" name= "type[]" value= "28" > Санаторий< br>
< input type= "checkbox" name= "type[]" value= "27" > Пансионат< br>
</ div>
< div class= "search4hotelrating" >
< input type= "checkbox" name= "rating[]" value= "15,17" > 2*< br>
< input type= "checkbox" name= "rating[]" value= "19" > 3*< br>
< input type= "checkbox" name= "rating[]" value= "21" > 4*< br>
< input type= "checkbox" name= "rating[]" value= "23" > 5*< br>
</ div>
< div class= "search4hotelplace" >
< input type= "checkbox" name= "place[]" value= "5" > Центр< br>
< input type= "checkbox" name= "place[]" value= "6" > Хоста< br>
< input type= "checkbox" name= "place[]" value= "7" > Адлер< br>
< input type= "checkbox" name= "place[]" value= "42" > Имеретинка< br>
< input type= "checkbox" name= "place[]" value= "8" > Красная Поляна< br>
< input type= "checkbox" name= "place[]" value= "10" > Дагомыс< br>
< input type= "checkbox" name= "place[]" value= "9" > Лазаревское< br>
</ div>
< div class= "search4hotelbuttons" >
< input name= "submit" value= "ПОКАЗАТЬ ВЫБРАННОЕ" type= "submit" >
</ div>
</ form>
</ div> <!-- hotelsearchform -->
<?
function connectDB ( ) {
// Определяем константы для соединения с базой данных
//Пытаемся соединится с базой данных
//и выбрать таблицу
// Устанавливаем кодировку
//Возвращаем дескриптор соединения
return $dbconn ;
}
/*Закрываем соединение с базой данных*/
function closeDB( $dbconn ) {
}
if ( isset ( $_REQUEST [ 'submit' ] ) ) {
$connect = connectDB( ) ;
if ( count ( $_POST [ 'type' ] ) > 0 ) {
$type = implode ( ',' , $_POST [ 'type' ] ) ; $str .= ' AND type IN(' . $type . ')' ;
}
if ( count ( $_POST [ 'place' ] ) > 0 ) {
$place = implode ( ',' , $_POST [ 'place' ] ) ; $str .= ' AND place IN(' . $place . ')' ;
}
if ( count ( $_POST [ 'rating' ] ) > 0 ) {
$rating = implode ( ',' , $_POST [ 'rating' ] ) ; $str .= ' AND rating IN(' . $rating . ')' ;
}
$rat [ 15 ] = '<img src="/templates//img/s1.png" border="0">' ;
$rat [ 17 ] = '<img src="/templates//img/s2.png" border="0">' ;
$rat [ 19 ] = '<img src="/templates//img/s3.png" border="0">' ;
$rat [ 21 ] = '<img src="/templates//img/s4.png" border="0">' ;
$rat [ 23 ] = '<img src="/templates//img/s5.png" border="0">' ;
$sql = "SELECT `name`, `rating`, `key`, `address`, `desc` FROM sled_hotels WHERE town=4 " . $str ;
/*
И не делаем тут никаких условий, т.к. вам в любом случае нужно вывести количество, даже если это будет ноль. Поэтому сразу выводите результат.
*/
echo '<div class="hotelsearchresults">По вашему запросу найдено отелей: ' . $num . ' </div>' ;
//Далее Сначала откроем блок allresult
echo '<div class="allresult">' ;
//И вот тут проверяйте, есть ли что то в $result, и если есть то фетчите его
// цкл doWile в вашем случае не нужен
if ( $num ) {
echo '<div class="eachresult">
<div class="hotelnamewhiteline">
<div class="hotelrating">' . $rat [ $row [ 'rating' ] ] . '</div>
<div class="hotelname"><a href="/' . $row [ 'key' ] . '.html" target="_parent"> "' . $row [ 'name' ] . '" </a></div>
</div>
<div class="hoteladdress">' . $row [ 'address' ] . '</div>
<div class="hoteldescription"><a href="/' . $row [ 'key' ] . '.html" target="_parent">' . $row [ 'desc' ] . '</a></div>
<!-- <div class="hotelphoto"><a href="/' . $row [ 'key' ] . '.html" target="_parent"><img src="http://www.sgtours.ru' . $row [ 'preview' ] . '" border="0" height="80"></a></div> -->
</div>' ;
}
} else {
echo '' ;
}
// закрываем allresult
echo '</div>' ;
}
closeDB ( $connect ) ;
?>
AlexNewaro
Отправлено: 27 Января, 2015 - 20:35:52 • Тема: Вопрос про PHP и ресурсы сервера • Форум: Вопросы новичков
Ответов: 0 Просмотров: 81
Сидел на тестовом RU-CENTER (тариф 301, memory limit 64mb, UTF-8) с демо-версией Datalife Engine 10.3 UTF8.
Общими усилиями с членами форума написали модуль для выборки из базы по трем параметрам (checkbox) и вывода результатов на статическую страницу CMS в виде настраиваемых блоков. В базе всего 166 строк/объектов для поиска.
Все работало распрекрасно.
Сегодня перевез на тестовый поддомен уже на "рабочий" хостинг от masterhost'а (доцент 11, memory limit 128mb, CP1251).
Все работает как часы. Кроме одного - модуль перестал срабатывать, если результатов выборки больше 100 (ну, к примеру, если человек хочет посмотреть все доступные варианты). До 100 (примерно, плюс-минус) - вывод осуществляется. Больше 100 (примерно, плюс-минус) - пустая страница.
Сразу загрешил на хостинг, те ответили, что судя по логам сайт никаких перегрузов не создает в момент срабатывания скрипта.
Провел эксперимент - убрал в выводе результатов вывод текстового описания каждой найденной единицы, оставил только название. Все отлично сработало в полном объеме.
Итог: где-то есть "узкое бутылочное горлышко", в которое не пролезает такое количество информации.
Причем на РуЦентре все работает, а на МастерХосте - нет.
Не подскажите ли, может у кого какие мысли есть, что это может быть?
Debug показывает лишь:
CODE (
htmlphp ):
скопировать код в буфер обмена
< div class= "hotelsearchform" >
< form name= "form" id= "form" method= "post" action= "" >
< div class= "search4hoteltype" >
< input type= "checkbox" name= "type[]" value= "25" > Отель< br>
< input type= "checkbox" name= "type[]" value= "26" > Мини-гостиница< br>
< input type= "checkbox" name= "type[]" value= "28" > Санаторий< br>
< input type= "checkbox" name= "type[]" value= "27" > Пансионат< br>
</ div>
< div class= "search4hotelrating" >
< input type= "checkbox" name= "rating[]" value= "15,17" > 2*< br>
< input type= "checkbox" name= "rating[]" value= "19" > 3*< br>
< input type= "checkbox" name= "rating[]" value= "21" > 4*< br>
< input type= "checkbox" name= "rating[]" value= "23" > 5*< br>
</ div>
< div class= "search4hotelplace" >
< input type= "checkbox" name= "place[]" value= "5" > Центр< br>
< input type= "checkbox" name= "place[]" value= "6" > Хоста< br>
< input type= "checkbox" name= "place[]" value= "7" > Адлер< br>
< input type= "checkbox" name= "place[]" value= "8" > Красная Поляна< br>
< input type= "checkbox" name= "place[]" value= "10" > Дагомыс< br>
< input type= "checkbox" name= "place[]" value= "9" > Лазаревское< br>
</ div>
< div class= "search4hotelbuttons" >
< input name= "submit" value= "ПОКАЗАТЬ ВЫБРАННОЕ" type= "submit" >
</ div>
</ form>
</ div> <!-- hotelsearchform -->
<?
function connectDB ( ) {
// Определяем константы для соединения с базой данных
//Пытаемся соединится с базой данных
//и выбрать таблицу
// Устанавливаем кодировку
//Возвращаем дескриптор соединения
return $dbconn ;
}
/*Закрываем соединение с базой данных*/
function closeDB( $dbconn ) {
}
if ( isset ( $_REQUEST [ 'submit' ] ) ) {
$connect = connectDB( ) ;
if ( count ( $_POST [ 'type' ] ) > 0 ) {
$type = implode ( ',' , $_POST [ 'type' ] ) ; $str .= ' AND type IN(' . $type . ')' ;
}
if ( count ( $_POST [ 'place' ] ) > 0 ) {
$place = implode ( ',' , $_POST [ 'place' ] ) ; $str .= ' AND place IN(' . $place . ')' ;
}
if ( count ( $_POST [ 'rating' ] ) > 0 ) {
$rating = implode ( ',' , $_POST [ 'rating' ] ) ; $str .= ' AND rating IN(' . $rating . ')' ;
}
$rat [ 15 ] = '<img src="/templates/sgtours2/img/s1.png" border="0">' ;
$rat [ 17 ] = '<img src="/templates/sgtours2/img/s2.png" border="0">' ;
$rat [ 19 ] = '<img src="/templates/sgtours2/img/s3.png" border="0">' ;
$rat [ 21 ] = '<img src="/templates/sgtours2/img/s4.png" border="0">' ;
$rat [ 23 ] = '<img src="/templates/sgtours2/img/s5.png" border="0">' ;
$sql = "SELECT * FROM sled_hotels WHERE town=4 " . $str ;
/*
И не делаем тут никаких условий, т.к. вам в любом случае нужно вывести количество, даже если это будет ноль. Поэтому сразу выводите результат.
*/
echo '<div class="hotelsearchresults">По вашему запросу найдено отелей: ' . $num . ' </div>' ;
//Далее Сначала откроем блок allresult
echo '<div class="allresult">' ;
//И вот тут проверяйте, есть ли что то в $result, и если есть то фетчите его
// цкл doWile в вашем случае не нужен
if ( $num ) {
echo '<div class="eachresult">
<div class="hotelnamewhiteline">
<div class="hotelrating">' . $rat [ $row [ 'rating' ] ] . '</div>
<div class="hotelname"> "' . $row [ 'name' ] . '" </div>
</div>
<div class="hoteladdress">' . $row [ 'address' ] . '</div>
</div>' ;
}
} else {
echo '' ;
}
// закрываем allresult
echo '</div>' ;
}
closeDB ( $connect ) ;
?>
AlexNewaro
Отправлено: 17 Января, 2015 - 19:38:44 • Тема: Введение двух DIV в один ECHO • Форум: Вопросы новичков
Ответов: 7 Просмотров: 422
kotyara1979 skiphog ,
спасибо вам огромное, друзья.
Mission accomplished!
PS - пока не имею права на форуме ставить "Спасибо". Если дадут возможность - вернусь и поставлю обязательно.
(Добавление)
А не подскажите, каким образом можно сразу подтянуть фотографии объектов по hotel_id из отдельной таблицы, где саккумулированы ссылки на фотографии на сервере?
Я понимаю, как вывести, не понимаю пока формата запросов...
То есть сначала сделана выборка по чекбоксам, потом вдогонку на основе отобранных hotel_id нужно сделать выборку ссылок на фото из соседней таблицы и все разом вывести...
Как собрать данные - не соображу.
AlexNewaro
Отправлено: 17 Января, 2015 - 15:34:41 • Тема: Введение двух DIV в один ECHO • Форум: Вопросы новичков
Ответов: 7 Просмотров: 422
kotyara1979 Благодарю вас за желание помочь.
Вот исходный код формы и результата.
CODE (
html ):
скопировать код в буфер обмена
<div class = "hotelsearchform" >
<form name = "form" id = "form" method = "post" action = "" >
<div class = "search4hoteltype" >
<input type = "checkbox" name = "type[]" value = "25" > Отель<br >
<input type = "checkbox" name = "type[]" value = "26" > Мини-гостиница<br >
<input type = "checkbox" name = "type[]" value = "28" > Санаторий<br >
<input type = "checkbox" name = "type[]" value = "27" > Пансионат<br >
</ div >
<div class = "search4hotelrating" >
<input type = "checkbox" name = "rating[]" value = "<18" > 2*<br >
<input type = "checkbox" name = "rating[]" value = "19" > 3*<br >
<input type = "checkbox" name = "rating[]" value = "21" > 4*<br >
<input type = "checkbox" name = "rating[]" value = "23" > 5*<br >
</ div >
<div class = "search4hotelplace" >
<input type = "checkbox" name = "place[]" value = "5" > Центр<br >
<input type = "checkbox" name = "place[]" value = "6" > Хоста<br >
<input type = "checkbox" name = "place[]" value = "7" > Адлер<br >
<input type = "checkbox" name = "place[]" value = "8" > Красная Поляна<br >
<input type = "checkbox" name = "place[]" value = "10" > Дагомыс<br >
<input type = "checkbox" name = "place[]" value = "9" > Лазаревское<br >
</ div >
<div class = "search4hotelbuttons" >
<input name = "submit" value = "ПОКАЗАТЬ ВЫБРАННОЕ" type = "submit" >
</ div >
</ form >
</ div > <!-- hotelsearchform -->
<div class = "hotelsearchresults" > По вашему запросу найдено отелей:4 </ div ><div class = "allresult" ><div class = "eachresult" > РОДИНА Гранд Отель & SPA </div></div><div class="allresult"><div class="eachresult">SWISSOTEL SOCHI KAMELIA</div></div><div class="allresult"><div class="eachresult">HYATT REGENCY SOCHI</div></div><div class="allresult"><div class="eachresult">PULLMAN SOCHI CENTER</div></div>
Вот css блоков allresult и eachresult
CODE (
htmlphp ):
скопировать код в буфер обмена
. allresult {
position: absolute; top: 280px; left: 30px; width: 672px; height: 100%;
}
. eachresult {
position: relative; width: 670px; height: 160px; min- height: 160px; margin- top: 15px; background- color: #CCC;
}
Вот весь код файла поиска:
PHP:
скопировать код в буфер обмена
<div class="hotelsearchform">
<form name="form" id="form" method="post" action="">
<div class="search4hoteltype">
<input type="checkbox" name="type[]" value="25"> Отель<br>
<input type="checkbox" name="type[]" value="26"> Мини-гостиница<br>
<input type="checkbox" name="type[]" value="28"> Санаторий<br>
<input type="checkbox" name="type[]" value="27"> Пансионат<br>
</div>
<div class="search4hotelrating">
<input type="checkbox" name="rating[]" value="<18"> 2*<br>
<input type="checkbox" name="rating[]" value="19"> 3*<br>
<input type="checkbox" name="rating[]" value="21"> 4*<br>
<input type="checkbox" name="rating[]" value="23"> 5*<br>
</div>
<div class="search4hotelplace">
<input type="checkbox" name="place[]" value="5"> Центр<br>
<input type="checkbox" name="place[]" value="6"> Хоста<br>
<input type="checkbox" name="place[]" value="7"> Адлер<br>
<input type="checkbox" name="place[]" value="8"> Красная Поляна<br>
<input type="checkbox" name="place[]" value="10"> Дагомыс<br>
<input type="checkbox" name="place[]" value="9"> Лазаревское<br>
</div>
<div class="search4hotelbuttons">
<input name="submit" value="ПОКАЗАТЬ ВЫБРАННОЕ" type="submit">
</div>
</form>
</div><!-- hotelsearchform -->
<?
function connectDB2 ( ) {
return $dbconn ;
}
function closeDB2( $dbconn ) {
}
if ( isset ( $_REQUEST [ 'submit' ] ) ) {
$connect = connectDB2( ) ;
if ( count ( $_POST [ 'type' ] ) > 0
) {
$type = implode ( ',' , $_POST [ 'type' ] ) ; $str .= ' AND type IN(' . $type . ')' ;
}
if ( count ( $_POST [ 'place' ] ) > 0
) {
$place = implode ( ',' , $_POST [ 'place' ] ) ; $str .= ' AND place IN(' . $place . ')' ;
}
if ( count ( $_POST [ 'rating' ] ) > 0
) {
$rating = implode ( ',' , $_POST [ 'rating' ] ) ; $str .= ' AND rating IN(' . $rating . ')' ;
}
$sql = "SELECT * FROM sled_hotels WHERE town=4 " . $str ;
if ( $num > 0) {
echo '<div class="hotelsearchresults">По вашему запросу найдено отелей:' . $num . ' </div>' ;
do {
echo '<div class="allresult"><div class="eachresult">' . $row [ 'name' ] . '</div></div>' ;
} else {
echo '<p>По вашему запросу ничего не найдено.</p>' ;
}
}
closeDB2 ( $connect ) ;
?>
AlexNewaro
Отправлено: 17 Января, 2015 - 14:48:19 • Тема: Введение двух DIV в один ECHO • Форум: Вопросы новичков
Ответов: 7 Просмотров: 422
Привет!
Поиском пользовался, может из-за неопытности посиделок именно на этом форуме (обычно пользовался им как настольным справочником) - не нашел ответа на свой вопрос.
Встал перед неожиданной сложностью, надеюсь на помощь.
CODE (
htmlphp ):
скопировать код в буфер обмена
...
$sql = "SELECT * FROM sled_hotels WHERE town=4 ".$str;
$result = mysql_query($sql);
$num = mysql_num_rows($result);
if ( $num > 0) {
$row = mysql_fetch_assoc($result);
echo '< div class= "HOTELRESULTS" > По вашему запросу найдено отелей:'.$num.' </ div> ';
do {
echo $row['name'].'</ br> ';
} while ($row = mysql_fetch_assoc($result));
...
Хочу оформить в div каждую выбранную из базы строку.
HOTELRESULTS - блок с аобсолютным позиционированием. работает отлично. выводит в заранее заданном место общее количество найденного.
Далее беру еще один блок allresults (позиционирование absolute), располагаю под HOTELRESULTS, в него вставляю еще блок eachresult, (уже позиционирование relative),в надежде, что каждая строка выборки (row name) будет иметь оформление блока relative.
Никак не выходит.
Опыты:
Расположение блока где должны выводиться построчно отели - правильное. Сами же отели схлопнулись в один блок.
Отели идут положенным рядком, но совершенно не в том месте сайта, где нужно.
CODE (
htmlphp ):
скопировать код в буфер обмена
$print .= '< div class= "allresult" > ';
$print .= '< div class= "eachresult" > '.$row['name'].'</ div> ';
$print .= '</ div> ';
echo $print
Расположение блока где должны выводиться построчно отели - правильное. Сами же отели схлопнулись в один блок.
Вобщем понимаю, что два подряд дива эхо не принимает. А как быть тогда?
UPD:
Расположение блока где должны выводиться построчно отели - правильное. Сами же отели схлопнулись в один блок.
Расположение блока где должны выводиться построчно отели - правильное. Сами же отели схлопнулись в один блок.
(На картинке - объяснение что такое "схлопнулись в один блок")
Страниц (2): « 1 [2]
Powered by ExBB FM 1.0 RC1. InvisionExBB