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
Форумы портала PHP.SU :: Версия для печати :: подгрузка контента в див
Форумы портала PHP.SU » » HTTP и PHP » подгрузка контента в див

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

1. broshurkaplus - 12 Сентября, 2011 - 16:35:17 - перейти к сообщению
как бы описать что не получается
(делаю чтобы пользователь например не лазил по сайту а мог просматривать последние изменения - мог просматривать материал в так сказать в поверхностном режиме , а если чото нравится смотрел подробней без полной перезагрузки страницы)
вобщем так
1
открываем, в страница грузится табличка в ней две кнопки назад и далее, затем див со своим ид, в него из бд берутся имена картинок и грузятся 5 превьюшек по всем темам т.е. последние 5

2 всё тоже самое, но теперь загружаются картинки по определённой теме т.е. фильтрую из базы

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

требуется чтобы при нажатии на картинку сылку напр "далее" в этот див внутри таблицы загружались следующие 5 превьюшек и тд

всё вроде работает превью подгружаются, но не могу понять как мне навесить на ссылку параметр, который бы передавал скрипту обработчику подгрузки ид превьюшки с которой нужно начать отбирать следующие 5 имен картинок с бд?
и если картинки подгрузились другие, то присвоить ссылке "далее" другой параметр , чтобы подгружать следующие 5 картинок
надеюсь понятно описал

код ссылки

PHP:
скопировать код в буфер обмена
  1. <a href="javascript:;" onclick="loadContent('.$page.','.$cont.')"><img src="dalee.png" border="0" alt="далее" title="следующие 5 картинок"></a>
  2.  
  3. $page="'ico.php?img=".$a1."&div=".$div."&tema=".$_GET['tema']."'";


тоесть типа как мне менять значение $a1, изначально причваиваем значение $a1 пр выполнении цикла
может укажете путь истинный
2. DeepVarvar - 12 Сентября, 2011 - 16:50:37 - перейти к сообщению
Для таких целей служит объектная модель в JS.
Вам нужно создать некий объект, который будет хранить в себе всю нужную вам информацию.
какая картинка является текущей, каких 5 следующих или предыдущих нужно будет показать.
Хотите, храните там прямые ссылки до картинок, хотите id картинок.
Структура - дело ваше.
3. broshurkaplus - 12 Сентября, 2011 - 17:11:10 - перейти к сообщению
то есть сделать поле или скрытый див со своими ид в таблице где например пишет картинки с "5" по "10" сдесь наши параметры изначально с чего отбирать

а потом функциеи JS менять например значения
document.getElementById((ид1 элемента в таблице)).innerHTML = new-ид ; -10
и
document.getElementById((ид2 элемента в таблице)).innerHTML = new-ид ; -15
и тд
правильно ли я понял?
если да то то на какое событие повесить функцию ? у нас onclick="loadContent...

у меня есть примерно такое для голосования

да я придумал сначала ми присваиваем отчего считать те с 0 для назад и с 5 для далее
PHP:
скопировать код в буфер обмена
  1. $pagedown="'list_ico.php?img=0'";
  2. $pageup="'list_ico.php?img=5'";
  3. <a href="javascript:;" onclick="loadContent('.$pageup.','.$cont.')"><img src="dalee.png" border="0" alt="далее" title="следующие 5 картинок"></a>


теперь задача стала как впихнуть значения 5 и 10 в эти ссылки, ведь они изначально сгенерены на пхп
4. DeepVarvar - 13 Сентября, 2011 - 01:22:43 - перейти к сообщению
Все не так.
CODE (html):
скопировать код в буфер обмена
  1. <html>
  2. <head>
  3. <script type="text/javascript">
  4.  
  5. var carousel = {
  6.         iprev: function() {
  7.                 this.current -= 1;
  8.                 this.islice();
  9.                 return false;
  10.                 },
  11.                 inext: function() {
  12.                 this.current += 1;
  13.                 this.islice();
  14.                 return false;
  15.                 },
  16.         islice: function() {
  17.                 this.target.innerHTML = this.current;
  18.                 },
  19.         init: function() {
  20.                 this.target = document.getElementById("tipakartinko");
  21.                 this.current = 0;
  22.                 this.islice();
  23.                 }
  24.         }
  25.  
  26. window.onload = function() {
  27.         carousel.init();
  28.         }
  29.  
  30. </script>
  31. </head>
  32. <body>
  33. <div id="tipakartinko"></div>
  34. <a href="#" onclick="return carousel.iprev();">prev</a> |
  35. <a href="#" onclick="return carousel.inext();">next</a>
  36. </body>
  37. </html>

Не проверял. Писал вот щас на коленке.
Принцип понятен?
(поправил чтоб работало)
5. broshurkaplus - 14 Сентября, 2011 - 11:47:55 - перейти к сообщению
понял так
при загрузке мы инициируем функцию, текущим становится ноль и хранится в диве, при нажатии на сылку мы запускаем соответствующий метод-функцию перем. карусель чем меняем текущее значение в диве
я типа так пробовал, тока не запихивал сразу все функции в одну перем.

но сёравно не могу понять как мне брать это значение


PHP:
скопировать код в буфер обмена
  1. $pageup="'list_ico.php?img=5'";
  2. $div="div_ico";
  3. $cont="'div_ico'";
  4. <a href="javascript:;" onclick="loadContent('.$pageup.','.$cont.')" onmouseup="return carousel.inext();"><img src="dalee.png" border="0" alt="далее" title="следующие 5 картинок"></a>


повесил вашу функцию на onmouseup моей сылки-картинки, те чтобы меняло значение после нажатия, ведь изначально оно уже установлено - 5
выглядит как
loadContent('list_ico.php?img=5','div_ico')

мы передаём значение обработчику с которого начинать отбор имён картинок ,изначально сгенереного пхп а меняем явой уже в браузере
простите мою малую образованность и знания, но не понимаю как мне потом брать изменённые значения из дива и вставлять в loadContent ? или в див записыват всю сылку? или сами сылки хранить в диве . но тода картинки нужно каждый раз перерисовывать...

пожалуйста объясните популярней...может сылку на стр.дать
6. DeepVarvar - 14 Сентября, 2011 - 12:55:10 - перейти к сообщению
не заморачивайтесь и возьмите готовую карусель на jquery, благо их море...
7. broshurkaplus - 14 Сентября, 2011 - 18:16:00 - перейти к сообщению
да я уже крутил много галерей чо то нето всё там примерно так
- предполагает изначальную загрузку превью а затем их листинг со всякими там эффектами
мне же надо постепенную подгрузгу (ну и выдумал же мам себе Огорчение )
не подходит по причине - планируется большое количество изображений например 5000 и это уже не катит

нашёл вроде който код ...
попробую прикрутить , потом напишу
8. DeepVarvar - 14 Сентября, 2011 - 18:22:45 - перейти к сообщению
Тогда вам нужен прелоад изображений, а принцип что я писал не меняется + ajax.
9. broshurkaplus - 14 Сентября, 2011 - 22:31:12 - перейти к сообщению
да я уже прикрутил на аякс квери всё работает
но тока для общих картинок
теперь надо получить значение из урл
например
?tema=33
и если оно есть то пост аякс добавляем передачу еще и этого параметра а если нет то так как есть
гуглил вроде скрипт есть но выдаёт арай
КАК получить 1 элемент - в урле 1параметр
10. broshurkaplus - 16 Сентября, 2011 - 16:48:06 - перейти к сообщению
всё, приделал!
спасибо DeepVarvar - натолкнул на мысль

итак общий алгоритм постепенной бесконечной прокрутки на 10 картинок
в диве для иконок циклом выводим табл с заданой высотой чтоб не искажалось первые 10 превью
над ним сылки назад далее
PHP:
скопировать код в буфер обмена
  1. <input type="image" src="nazad.png" id="but_nazad"  alt="обои на рабочий стол предпросмотр" title="нажмите на кнопку, чтобы загрузить предыдущие 10 картинок"/>
  2. <input type="image" src="dalee.png" id="but_dalee"  alt="обои на рабочий стол предпросмотр" title="нажмите на кнопку, чтобы загрузить следующие картинок"/>

долее див с прцессингом

PHP:
скопировать код в буфер обмена
  1.             <div id="loading" style="display: none">
  2.             <img src="indicator.gif" border=0 alt="loading...">
  3.             Идет загрузка...
  4.             </div>


в хеаде

CODE (javascript):
скопировать код в буфер обмена
  1. <script type="text/javascript" src="jquery-1.6.2.min.js"></script>
  2. <script language="javascript" type="text/javascript">
  3. $(document).ready(function(){
  4.  
  5. var dalee = 10;
  6. var nazad = -10;
  7. $('#but_dalee').click(function(){
  8. var cont = document.getElementById("div_ico");    -имя куда подгружать
  9. var loading = document.getElementById('loading');  -имя дива процесса
  10. cont.innerHTML = loading.innerHTML;
  11.     $.post('show.php',
  12.               {'dalee':dalee<?php if($_GET['tema']!="") {echo ",'tema':".$_GET['tema'];}?>},
  13.                function(data) { $('#div_ico').html(data); }
  14.     );
  15.     dalee = dalee + 10;
  16.     nazad = nazad + 10;
  17. })
  18. $('#but_nazad').click(function(){
  19. var cont = document.getElementById("div_ico");
  20. var loading = document.getElementById('loading');
  21. cont.innerHTML = loading.innerHTML;
  22.     $.post('more.php',
  23.               {'nazad':nazad<?php if($_GET['tema']!="") {echo ",'tema':".$_GET['tema'];//сразу хотел явай брать значение, но подумал, что проще при формировании стр на сервере исходя из есть-нету активной темы передавать параметр в пост}?>},
  24.                function(data) { $('#div_ico').html(data); }
  25.     );
  26.     dalee = dalee - 10;
  27.     nazad = nazad - 10;
  28. })
  29. })
  30. </script>


сразу был квери1 6 1 и на их сервере, но тормозит и я поставил в папку 1 6 2 и решил обработку запхать в один фойл

show.php

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include("config.php");
  3. //Необходимо подключиться к БД
  4. $link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)
  5. or die("Не могу подключиться" );
  6. // сделать $DB текущей базой данных
  7. mysql_select_db($DB, $link) or die ('Не могу выбрать БД');
  8. mysql_query ("SET NAMES cp1251");
  9. ?>
  10. <html>
  11. <head>
  12. <meta http-equiv="Content-Type" content="text/html; charset=WINDOWS-1251">
  13. </head>
  14. <body>
  15. <?PHP
  16. // ну тут панятно
  17. if ($_POST['dalee']!="") {$dalee = mysql_real_escape_string($_POST['dalee']);
  18.   if ($_POST['tema']) {$tema= mysql_real_escape_string($_POST['tema']);
  19.          $query_dalee = "SELECT * FROM блабла WHERE img_tema=$tema ORDER BY img_id DESC LIMIT $dalee, 10";
  20.          $sum_img=mysql_num_rows(mysql_query("SELECT * FROM блабла WHERE img_tema=$tema"));}
  21.   else{  $query_dalee = "SELECT * FROM блабла ORDER BY img_id DESC LIMIT $dalee, 10";
  22.          $sum_img=mysql_num_rows(mysql_query("SELECT * FROM блабла"));}
  23. $raw = mysql_query($query_dalee);
  24. $div_min="div_min";
  25. $cont_min="'div_min'";
  26.  
  27.  
  28. if ($raw AND $dalee<=$sum_img) {
  29. $s=0;
  30.    while ($row = mysql_fetch_array($raw)) {
  31.       $page_min="'min.php?img=".$row["img_id"]."&div=".$div_min."'";
  32.       if($s==5){echo '<br>';}
  33.           echo '
  34.          <a href="javascript:;" onclick="loadContent('.$page_min.','.$cont_min.')"><img src=".$row[2].'" border=0 width=120 height=120 alt="обои на рабочий стол предпросмотр" title="нажмите на кнопку, чтобы загрузить предпросмотр картинки"></a>';
  35. $s=$s+1;        
  36.   }
  37. }else{echo "<font class=text3><font color=red>Извините, предыдущие обои были последними.</font></font><br>";}
  38. }
  39. if ($_POST['nazad']!="") {$nazad= mysql_real_escape_string($_POST['nazad']);
  40.  if ($_POST['tema']) {$tema= mysql_real_escape_string($_POST['tema']);
  41.         $query_nazad = "SELECT * FROM блабла WHERE img_tema=$tema ORDER BY img_id DESC LIMIT $nazad, 10";}
  42.  else{  $query_nazad = "SELECT * FROM блабла ORDER BY img_id DESC LIMIT $nazad, 10";}
  43. $raw = mysql_query($query_nazad );
  44.  
  45. $div_min="div_min";
  46. $cont_min="'div_min'";
  47.  
  48. if ($raw AND $nazad>=0) {
  49. $s=0;
  50.   while ($row = mysql_fetch_array($raw)) {
  51.      $page_min="'min.php?img=".$row["img_id"]."&div=".$div_min."'";
  52.      if($s==5){echo '<br>';}
  53.          echo '
  54.          <a href="javascript:;" onclick="loadContent('.$page_min.','.$cont_min.')"><img src=".$row[2].'" border=0 width=120 height=120 alt="обои на рабочий стол предпросмотр" title="нажмите на кнопку, чтобы загрузить предпросмотр картинки"></a> ';
  55. $s=$s+1;        
  56.    }
  57. }else{echo "<font class=text3><font color=red>Извините, предыдущие обои были первыми.</font></font><br>";}
  58. }
  59. ?>
  60. </body>
  61. </html>


ну тут как бы ясно (скопировал из исходникаов своих , может де запятую пропустил)

выскажитесь кто что об этом первом опыте, да и по безопасности

 

Powered by ExBB FM 1.0 RC1