Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Введение двух DIV в один ECHO

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
AlexNewaro
Отправлено: 17 Января, 2015 - 14:48:19
Post Id



Новичок


Покинул форум
Сообщений всего: 29
Дата рег-ции: Янв. 2015  


Помог: 0 раз(а)




Привет!
Поиском пользовался, может из-за неопытности посиделок именно на этом форуме (обычно пользовался им как настольным справочником) - не нашел ответа на свой вопрос.

Встал перед неожиданной сложностью, надеюсь на помощь.
CODE (htmlphp):
скопировать код в буфер обмена
  1. ...
  2.  
  3. $sql = "SELECT * FROM sled_hotels WHERE town=4 ".$str;  
  4.         $result = mysql_query($sql);
  5.         $num = mysql_num_rows($result);
  6.         if ( $num > 0) {
  7.           $row = mysql_fetch_assoc($result);
  8.  
  9.           echo  '<div class="HOTELRESULTS">По вашему запросу найдено отелей:'.$num.' </div>';
  10.  
  11.           do {
  12.  
  13.                 echo $row['name'].'</br>';
  14.                
  15.           } while ($row = mysql_fetch_assoc($result));
  16.  
  17. ...


Хочу оформить в div каждую выбранную из базы строку.
HOTELRESULTS - блок с аобсолютным позиционированием. работает отлично. выводит в заранее заданном место общее количество найденного.

Далее беру еще один блок allresults (позиционирование absolute), располагаю под HOTELRESULTS, в него вставляю еще блок eachresult, (уже позиционирование relative),в надежде, что каждая строка выборки (row name) будет иметь оформление блока relative.
Никак не выходит.

Опыты:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. echo '<div class="allresult"><div class="eachresult">'.$row['name'].'</div></div>';


Расположение блока где должны выводиться построчно отели - правильное. Сами же отели схлопнулись в один блок.

CODE (htmlphp):
скопировать код в буфер обмена
  1. echo '<div class="eachresult">'.$row['name'].'</div>';


Отели идут положенным рядком, но совершенно не в том месте сайта, где нужно.

CODE (htmlphp):
скопировать код в буфер обмена
  1. $print .= '<div class="allresult">';
  2. $print .= '<div class="eachresult">'.$row['name'].'</div>';
  3. $print .= '</div>';
  4.  
  5. echo $print


Расположение блока где должны выводиться построчно отели - правильное. Сами же отели схлопнулись в один блок.



Вобщем понимаю, что два подряд дива эхо не принимает. А как быть тогда?

UPD:

CODE (htmlphp):
скопировать код в буфер обмена
  1. do {?>
  2.                
  3.                 <div class="allresult">
  4.                        
  5.                         <?= '<div class="eachresult">'.$row['name'].'</div>' ?>
  6.                        
  7.                 </div>
  8.                 <?


Расположение блока где должны выводиться построчно отели - правильное. Сами же отели схлопнулись в один блок.

CODE (htmlphp):
скопировать код в буфер обмена
  1. do {?>
  2.            
  3.         <div class="allresult">
  4.             <div class="eachresult">
  5.             <?=$row['name'] ?>
  6.                 </div>
  7.             </div>
  8.         <?


Расположение блока где должны выводиться построчно отели - правильное. Сами же отели схлопнулись в один блок.

(На картинке - объяснение что такое "схлопнулись в один блок")
Прикреплено изображение (Нажмите для увеличения)
1.jpg
 
 Top
kotyara1979
Отправлено: 17 Января, 2015 - 15:27:55
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


Помог: 7 раз(а)




У вас скорее проблема не с echo, а с css и html.
php абсолютно все равно, что вы выводите. Это, разумеется, при отсутствии ошибок при выполнении кода.
Единственно, зачем вам do...while вместо обычного while?

Приведите результирующий html-код выведенной страницы и правила css для используемых блоков.

Там уже видно будет, что и как поправить.

(Отредактировано автором: 17 Января, 2015 - 15:28:27)



-----
Сделать можно все. Главное одеть каску.
 
 Top
AlexNewaro
Отправлено: 17 Января, 2015 - 15:34:41
Post Id



Новичок


Покинул форум
Сообщений всего: 29
Дата рег-ции: Янв. 2015  


Помог: 0 раз(а)




kotyara1979 Благодарю вас за желание помочь.

Вот исходный код формы и результата.

CODE (html):
скопировать код в буфер обмена
  1. <div class="hotelsearchform">
  2.         <form name="form" id="form" method="post" action="">
  3.         <div class="search4hoteltype">
  4.         <input type="checkbox" name="type[]" value="25">&nbsp;&nbsp;Отель<br>
  5.         <input type="checkbox" name="type[]" value="26">&nbsp;&nbsp;Мини-гостиница<br>
  6.         <input type="checkbox" name="type[]" value="28">&nbsp;&nbsp;Санаторий<br>
  7.         <input type="checkbox" name="type[]" value="27">&nbsp;&nbsp;Пансионат<br>
  8.         </div>
  9.         <div class="search4hotelrating">
  10.         <input type="checkbox" name="rating[]" value="<18">&nbsp;&nbsp;2*<br>
  11.         <input type="checkbox" name="rating[]" value="19">&nbsp;&nbsp;3*<br>
  12.         <input type="checkbox" name="rating[]" value="21">&nbsp;&nbsp;4*<br>
  13.         <input type="checkbox" name="rating[]" value="23">&nbsp;&nbsp;5*<br>
  14.         </div>
  15.         <div class="search4hotelplace">
  16.         <input type="checkbox" name="place[]" value="5">&nbsp;&nbsp;Центр<br>
  17.         <input type="checkbox" name="place[]" value="6">&nbsp;&nbsp;Хоста<br>
  18.         <input type="checkbox" name="place[]" value="7">&nbsp;&nbsp;Адлер<br>
  19.         <input type="checkbox" name="place[]" value="8">&nbsp;&nbsp;Красная Поляна<br>
  20.         <input type="checkbox" name="place[]" value="10">&nbsp;&nbsp;Дагомыс<br>
  21.         <input type="checkbox" name="place[]" value="9">&nbsp;&nbsp;Лазаревское<br>
  22.         </div>
  23.     <div class="search4hotelbuttons">
  24.         <input name="submit" value="ПОКАЗАТЬ ВЫБРАННОЕ" type="submit">
  25.         </div>
  26.         </form>
  27. </div><!-- hotelsearchform -->
  28.  
  29.  
  30. <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):
скопировать код в буфер обмена
  1. .allresult {
  2.         position:absolute;top:280px;left:30px;width:672px;height:100%;
  3. }
  4.  
  5. .eachresult {
  6.         position:relative;width:670px;height:160px;min-height:160px;margin-top:15px;background-color:#CCC;
  7. }


Вот весь код файла поиска:

PHP:
скопировать код в буфер обмена
  1. <div class="hotelsearchform">
  2.         <form name="form" id="form" method="post" action="">
  3.         <div class="search4hoteltype">
  4.         <input type="checkbox" name="type[]" value="25">&nbsp;&nbsp;Отель<br>
  5.         <input type="checkbox" name="type[]" value="26">&nbsp;&nbsp;Мини-гостиница<br>
  6.         <input type="checkbox" name="type[]" value="28">&nbsp;&nbsp;Санаторий<br>
  7.         <input type="checkbox" name="type[]" value="27">&nbsp;&nbsp;Пансионат<br>
  8.         </div>
  9.         <div class="search4hotelrating">
  10.         <input type="checkbox" name="rating[]" value="<18">&nbsp;&nbsp;2*<br>
  11.         <input type="checkbox" name="rating[]" value="19">&nbsp;&nbsp;3*<br>
  12.         <input type="checkbox" name="rating[]" value="21">&nbsp;&nbsp;4*<br>
  13.         <input type="checkbox" name="rating[]" value="23">&nbsp;&nbsp;5*<br>
  14.         </div>
  15.         <div class="search4hotelplace">
  16.         <input type="checkbox" name="place[]" value="5">&nbsp;&nbsp;Центр<br>
  17.         <input type="checkbox" name="place[]" value="6">&nbsp;&nbsp;Хоста<br>
  18.         <input type="checkbox" name="place[]" value="7">&nbsp;&nbsp;Адлер<br>
  19.         <input type="checkbox" name="place[]" value="8">&nbsp;&nbsp;Красная Поляна<br>
  20.         <input type="checkbox" name="place[]" value="10">&nbsp;&nbsp;Дагомыс<br>
  21.         <input type="checkbox" name="place[]" value="9">&nbsp;&nbsp;Лазаревское<br>
  22.         </div>
  23.     <div class="search4hotelbuttons">
  24.         <input name="submit" value="ПОКАЗАТЬ ВЫБРАННОЕ" type="submit">
  25.         </div>
  26.         </form>
  27. </div><!-- hotelsearchform -->
  28.  
  29.  
  30. <?
  31. function connectDB2 (){
  32. define('DB_HOST', '');
  33. define('DB_USER', '');
  34. define('DB_PASS', '');
  35. define('DB_NAME', '');
  36.  
  37. $dbconn = mysql_connect(DB_HOST, DB_USER, DB_PASS)
  38.   or die("Ошибка соединения с базой данных! " . mysql_error());
  39. mysql_select_db(DB_NAME);
  40. mysql_query('SET NAMES utf8');
  41. return $dbconn;
  42. }
  43.  
  44. function closeDB2($dbconn){
  45. mysql_close($dbconn);
  46. }
  47.  
  48. if(isset($_REQUEST['submit']))
  49. {      
  50. $connect = connectDB2();
  51. if( count($_POST['type']) > 0 )
  52. {      
  53. $type = implode(',',$_POST['type']);
  54. $str.= ' AND type IN('.$type.')';
  55. }
  56. if( count($_POST['place']) > 0 )
  57. {      
  58. $place = implode(',',$_POST['place']);
  59. $str.= ' AND place IN('.$place.')';
  60. }
  61. if( count($_POST['rating']) > 0 )
  62. {      
  63. $rating = implode(',',$_POST['rating']);
  64. $str.= ' AND rating IN('.$rating.')';
  65. }
  66. $sql = "SELECT * FROM sled_hotels WHERE town=4 ".$str; 
  67.         $result = mysql_query($sql);
  68.     $num = mysql_num_rows($result);
  69.         if ( $num > 0) {
  70.       $row = mysql_fetch_assoc($result);
  71.       echo  '<div class="hotelsearchresults">По вашему запросу найдено отелей:'.$num.' </div>';
  72.       do {
  73.                 echo '<div class="allresult"><div class="eachresult">'.$row['name'].'</div></div>';
  74.       } while ($row = mysql_fetch_assoc($result));
  75.     } else {
  76.       echo '<p>По вашему запросу ничего не найдено.</p>';
  77.     }
  78. }
  79.   closeDB2 ($connect);
  80. ?>
 
 Top
kotyara1979
Отправлено: 17 Января, 2015 - 15:42:13
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


Помог: 7 раз(а)




Ваш код для вывода отелей, начиная от запроса.

PHP:
скопировать код в буфер обмена
  1. $result = mysql_query($sql);
  2. if(mysql_num_rows($result)>0)
  3. {
  4.         echo '<div class="allresult">';
  5.         while($row = mysql_fetch_assoc($result))
  6.         {
  7.                 echo '<div class="eachresult">'.$row['name'].'</div>';
  8.         }
  9.         echo '</div>';
  10. }


Сравните результат с вашим, увидите ошибку.

PS. Переходите на mysqli. mysql - это устаревшее расширение.

(Отредактировано автором: 17 Января, 2015 - 15:45:01)



-----
Сделать можно все. Главное одеть каску.
 
 Top
skiphog
Отправлено: 17 Января, 2015 - 15:55:48
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Дек. 2014  
Откуда: Киров, Россия


Помог: 11 раз(а)




Если я правильно понял задачу.

Для вывода записей в блоках eachresult внутри блока allresult вам и фечить нужно внутри этого блока. Т.е. что получается.
PHP:
скопировать код в буфер обмена
  1.  
  2. //Сделаем запрос
  3. $sql = "SELECT * FROM sled_hotels WHERE town=4 ".$str;  
  4. $result = mysql_query($sql);
  5. $num = mysql_num_rows($result);
  6. /*
  7. И не делаем тут никаких условий, т.к. вам в любом случае нужно вывести количество, даже если это будет ноль. Поэтому сразу выводите результат.
  8. */
  9. echo  '<div class="HOTELRESULTS">По вашему запросу найдено отелей:'.$num.' </div>';
  10. //Далее Сначала откроем блок allresult
  11.  echo '<div class="allresult">';
  12. //И вот тут проверяйте, есть ли что то в $result, и если есть то фетчите его
  13. // цкл doWile в вашем случае не нужен
  14. if($num) {
  15.   while($row = mysql_fetch_assoc($result)) {
  16.     echo '<div class="eachresult">'.$row['name'].'</div>';
  17.   }
  18. }else{
  19.   echo '<p>По вашему запросу ничего не найдено.</p>';
  20. }
  21. // закрываем allresult
  22. echo '</div>';
  23.  
 
My status
 Top
AlexNewaro
Отправлено: 17 Января, 2015 - 19:38:44
Post Id



Новичок


Покинул форум
Сообщений всего: 29
Дата рег-ции: Янв. 2015  


Помог: 0 раз(а)




kotyara1979skiphog,
спасибо вам огромное, друзья.
Mission accomplished! Ниндзя

PS - пока не имею права на форуме ставить "Спасибо". Если дадут возможность - вернусь и поставлю обязательно.
(Добавление)
А не подскажите, каким образом можно сразу подтянуть фотографии объектов по hotel_id из отдельной таблицы, где саккумулированы ссылки на фотографии на сервере?
Я понимаю, как вывести, не понимаю пока формата запросов...
То есть сначала сделана выборка по чекбоксам, потом вдогонку на основе отобранных hotel_id нужно сделать выборку ссылок на фото из соседней таблицы и все разом вывести...
Как собрать данные - не соображу.

(Отредактировано автором: 17 Января, 2015 - 20:42:33)

 
 Top
kotyara1979
Отправлено: 18 Января, 2015 - 07:20:03
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


Помог: 7 раз(а)




Почитайте.
http://kreker[dot]org/items/5

Для вас подойдет "LEFT JOIN".


-----
Сделать можно все. Главное одеть каску.
 
 Top
AlexNewaro
Отправлено: 18 Января, 2015 - 12:55:19
Post Id



Новичок


Покинул форум
Сообщений всего: 29
Дата рег-ции: Янв. 2015  


Помог: 0 раз(а)




kotyara1979 пишет:
Почитайте.
http://kreker[dot]org/items/5

Для вас подойдет "LEFT JOIN".


Спасибо огромное!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB