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 :: урезаное и полное сообщение, динамическое изменение.

 PHP.SU

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


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

> Без описания
e15r
Отправлено: 19 Февраля, 2010 - 13:26:58
Post Id


Новичок


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


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




на главную страницу сайта, выводятся сообщения(новости), показывается только 300 символов, все что дальше обрезается, ставится ". . ." и появляется кнопка "подробнее"

сейчас эта кнопка ссылается на страницу НОВОСТЕЙ, но отображает лишь ОДНУ новость

я хочу сделать чтобы при нажатии на кнопку ПОДРОБНЕЕ, остальной текст сообщения появился там-же, на месте, сдвинув идущие за ней новости ит.д.

по идее ничего сложного нет, и я понимаю что сделать это можно 1001 способом, но все же не выходит:


PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.   Error_Reporting(E_ALL & ~E_NOTICE);
  4.   require_once("config.php");
  5.  
  6.   // Выясняем общее количество новостей в базе данных, для того чтобы
  7.   // правильно отображать ссылки на последующие новости.
  8.   $totsmi = mysql_query("SELECT count(*) FROM news WHERE smi='show' AND putdate <= NOW()");
  9.   // Запрашиваем все видимые новости, т.е. те, у которых в базе данных hide='show',
  10.   // если это поле будет равно 'hide', новость не будет отображаться на странице
  11.  
  12. //  $query = "SELECT * FROM news
  13. //            WHERE hide='show' AND putdate <= NOW()
  14. //            ORDER BY putdate DESC
  15. //            LIMIT $pnumber";
  16.  
  17.     $querysmi = "SELECT id_news,
  18.                   name,
  19.                   body,
  20.                   DATE_FORMAT(putdate,'%d.%m.%Y') as putdate_format,
  21.                   url,
  22.                   url_text,
  23.                   url_pict,
  24.                    smi
  25.              FROM news
  26.              WHERE smi='show' AND putdate <= NOW()
  27.              ORDER BY putdate DESC
  28.              LIMIT $pnumber";
  29.                          
  30.   $newsmi = mysql_query($querysmi);
  31.   if(!$newsmi) puterror("Ошибка при обращении к блоку новостей");
  32.   if(mysql_num_rows($newsmi) > 0)
  33.   {
  34.     while($news = mysql_fetch_array($newsmi))
  35.     {
  36.                
  37.                 echo "<table width=100%><tr><td>";
  38.             echo "<p class='zagnews'>"."&nbsp;&nbsp;&nbsp;&nbsp;<em class=datanews>".$news['putdate_format']."</em></p>";
  39.  
  40.       // Выводим заголовок новости
  41.  
  42.         echo "<p class=newsblockzag><b>".$news['name']."</b></p>";
  43.  
  44.       // Формируем анонс
  45.       // Переменная $numchar содержит примерное
  46.       // количество символов в анонсе
  47.  
  48.       $pos = strpos(substr($news['body'],$numchar), " ");
  49.  
  50.       // Если новость длинная, то выводим троеточие...
  51.  
  52.       if(strlen($news['body'])>$numchar) $srttmpend = "...";
  53.       else $srttmpend = "";
  54.  
  55.       // Выводим анонс
  56.           // картинка
  57.  
  58.         if(trim($news['url_pict']) != "" && trim($news['url_pict']) != "-")
  59.         echo "<img align=left class=img src=".$news['url_pict'].">";
  60.  
  61. // вот ЗДЕСЬ ВОТ ОБРЕЗАЕТСЯ НОВОСТЬ, точнее говорится сколько символов вывести на экран. ------------------------------
  62.       echo "<p class=newsblock>".substr($news['body'],0, $numchar+$pos).$srttmpend;
  63. // ------------------------------------
  64.          
  65.                 if(trim($news['url']) != "" && trim($news['url']) != "-")
  66.                 echo "<p class='linkr'><a class='link' href=".$news['url'].">".$news['url_text']."</a></p>";
  67.       if(strlen($news['body'])>$numchar)
  68.      echo "<br><a class=anewsblock href=smi.php?id_news=".$news['id_news'].">подробнее</a></p>";
  69.                   echo "</td></tr></table>";
  70.                   echo "<p class='newsend'> <br/></p>";
  71.                  
  72.         }
  73.         }
  74. ?>
  75.  


спасибо.
 
 Top
Ammy
Отправлено: 19 Февраля, 2010 - 14:12:23
Post Id



Частый гость


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


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




JavaScript'а для такой реализации не хватает. Вывести новость, спрятав скрытую половину текста в каком-нибудь элементе (div'е, например) с аттрибутом display: none, и при нажатии на кнопку по onclick событию делать выбор этого элемента в DOM иерархии, править значение стиля этого элемента как display: block.
 
 Top
e15r
Отправлено: 19 Февраля, 2010 - 15:09:37
Post Id


Новичок


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


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




извините но не понимаю, я только начинаю во всем это разбираться... поковырять чужой код и понять что как работает, исправить, перенять ит.д. ещё могу, а вот подобного рода вещи уже не понимаю Недовольство, огорчение
 
 Top
SDR
Отправлено: 19 Февраля, 2010 - 15:29:27
Post Id


Гость


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


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




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

грубо схема такая:

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. <script>
  3. function swap(short_id, full_id)
  4. {
  5.     document.getElementById(short_id).style.display = 'none';
  6.     document.getElementById(full_id).style.display = 'block';
  7. }
  8. </script>
  9.  


CODE (html):
скопировать код в буфер обмена
  1.  
  2. <div>
  3.     <div id="short">
  4.         короткая новость
  5.         <a href="javascript:void(0);" onclick="swap('short', 'full');">подробнее...</a>
  6.     </div>
  7.     <div id="full" style="display:none">полная новость</div>
  8. </div>
  9.  


не проверял, но должно работать. как к себе присобачить - сам думай Улыбка

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

(Отредактировано автором: 19 Февраля, 2010 - 15:30:51)

 
 Top
e15r
Отправлено: 19 Февраля, 2010 - 16:50:33
Post Id


Новичок


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


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




я все равно сделал немного иначе... проблема совсем маленькая...

а именно:

PHP:
скопировать код в буфер обмена
  1.  
  2.  echo "<br><a class=anewsblock href=index.php?id_news=".$news['id_news']."  >подробнее</a></p>";
  3.  

это отправляет нас на страницу где мы и находимся но с приставкой ИД новости...
затем:
PHP:
скопировать код в буфер обмена
  1.  
  2. if(preg_match("|^[\d]+$|",$_GET['id_news']))
  3.  

как я понял следит чтобы в заголовке было ИД сообщения... хотя мб я и ошибаюсь, и это лучше было делать через "header"...

затем соответственно идет если заголовок такой, то показывать новость целиком
если нет то "порезанный"

проблема в том, что целиком показываются ВСЕ НОВОСТИ Улыбка

как сделать чтобы показывалась целиком только одна нужная новость?
 
 Top
e15r
Отправлено: 24 Февраля, 2010 - 11:05:00
Post Id


Новичок


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


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




2 SDR
огромное спасибо, сделал как вы написали.
приделал туда ID сообщения ит.д.
все работает так как и хотел Улыбка

ещё раз огромное спасибо.
 
 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