Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Проектирование форума

Сообщения:  [1-10]    [11-20]  [21-21] 

 
 автор: ladan   (20.01.2012 в 14:51)   письмо автору
 
   для: ladan   (20.01.2012 в 12:09)
 

разобрался!

  Ответить  
 
 автор: ladan   (20.01.2012 в 12:09)   письмо автору
 
   для: ladan   (20.01.2012 в 02:16)
 

Хелп плииз

if(!$search) echo mysql_error(); /* тоже ошибок никаких не выдает */

  Ответить  
 
 автор: ladan   (20.01.2012 в 02:16)   письмо автору
 
   для: ladan   (19.01.2012 в 10:39)
 

В таблице есть ячейка tema(тип text) с FULLTEXT, и есть 1 запись, где в ячейке tema указано число "11111". Пробую найти совпадения, но всегда выводит, что ничего не найдено... С этим дело никогда не имел, не поможете разобраться? Немного погуглив, сделал запрос такого типа, как ниже..

<?

<form action="" method="post">
<
input name="search" type="text"><input name="" type="submit" value="Искать">
</
form>
<?

$search mysql_query("SELECT * FROM forum WHERE MATCH(tema) AGAINST('".$_POST['search']."')");
if(
mysql_num_rows($search) > 0)

{echo 
"Найдено";}

else {echo 
"Ничего не найдено";}


?>

  Ответить  
 
 автор: ladan   (19.01.2012 в 10:39)   письмо автору
 
   для: ladan   (18.01.2012 в 19:39)
 

все, разобрался

  Ответить  
 
 автор: ladan   (18.01.2012 в 19:39)   письмо автору
 
   для: ladan   (18.01.2012 в 12:03)
 

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


<?

  
function tree_comment($id 0$intent 0)   
  {   
    
$id intval($id);   

    
$query "SELECT * FROM comment  
              WHERE id_parent = 
$id";   
    
$com mysql_query($query);   
    if(!
$com) exit("Ошибка извлечения комментариев");   
    if(
mysql_num_rows($com))   
    {   
      while(
$comment mysql_fetch_array($com))   
      {   


$edit_post mysql_query("SELECT * FROM comment");
while(
$edit_post_row mysql_fetch_array($edit_post)) /* делаем проверку на ссылки редактирования */
{
if(
$comment['id'] == $edit_post_row['id_parent']) {$edit_post "<span style='display:none;'>%s%s</span>"; }/* если текущий id будет найден в id_parent других постов, то редактирование запрещаем :) */     
else {$edit_post "<a href='edit_post.php?id_theme=%s&id=%s'>Редактировать</a>";}    
}

        
// Вывод комментария  
printf("

<table>
<tr>
<td style='padding-left: 
{$intent}px'>%s%s</td>
</tr>
<tr>
<td style='padding-left: 
{$intent}px'>%s</td>
</tr>
<tr>
<td>
$edit_post </td>
</tr>
</table>

"
$comment[author],$comment['date'],$comment ['message'],$_GET['id_theme'],$comment ['id']  );
      
        
// Рекурсивный вызов  
        
tree_comment($comment['Id'], $intent 5);   
      }   
    }   
  }  

?>


Если отвечать на первое сообщение, то ссылка редактирования у первого поста пропадает(что нормально), а если отвечать уже на 2 сообщение, то ссылка у второго поста остается

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

  Ответить  
 
 автор: ladan   (18.01.2012 в 12:03)   письмо автору
 
   для: ladan   (18.01.2012 в 10:38)
 

все, вроде разобрался, недоглядел скрипт :)

Все супер, работает как надо :)

  Ответить  
 
 автор: ladan   (18.01.2012 в 10:38)   письмо автору
 
   для: cheops   (18.01.2012 в 02:12)
 

таблица

CREATE TABLE `comment` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `comment` tinytext NOT NULL,
  `parent` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8


в ней 1 запись с parent=0

Получается, что я как бы сделал пост, на который еще никто ответов не давал, а функция все равно зацикливается и выводит бесконечность этого первого поста..

  Ответить  
 
 автор: cheops   (18.01.2012 в 02:12)   письмо автору
 
   для: ladan   (18.01.2012 в 01:56)
 

Если зацикливания нет, то не должно быть бесконечности, рано или поздно должен появиться пост, у которого не будет ответов и рекурсия должна развернуться в обратную сторону.

  Ответить  
 
 автор: ladan   (18.01.2012 в 01:56)   письмо автору
 
   для: ladan   (17.01.2012 в 20:54)
 

захотелось тоже реализовать древовидные комменты как здесь, читал тему http://softtime.ru/forum/read.php?id_forum=3&id_theme=83287,

был приведен скрипт




<?php 
  
// Устанавливаем соединение с базой данных 
  
require_once("config.php"); 

  
// Использование 
  
echo tree_comment(0); 
  
// Реализация 
  
function tree_comment($id 0$intent 0)  
  {  
    
$id intval($id);  

    
$query "SELECT * FROM comment 
              WHERE parent = 
$id  
              ORDER BY year, month, day, `time`"
;  
    
$com mysql_query($query);  
    if(!
$com) exit("Ошибка извлечения комментариев");  
    if(
mysql_num_rows($com))  
    {  
      while(
$comment mysql_fetch_array($com))  
      {  
        
// Вывод комментария 
        
echo "<p style='margin-left: {$intent}px'>{$comment['comment']}</p>";  
        
// Рекурсивный вызов 
        
tree_comment($catalog['Id'], $intent 5);  
      }  
    }  
  }  


?>


для

таблицы
CREATE TABLE `comment` ( 
  `Id` int(11) NOT NULL auto_increment, 
  `post_id` int(11) NOT NULL default '0', 
  `user_name` varchar(255) NOT NULL default '', 
  `comment` tinytext NOT NULL, 
  `mail` varchar(255) NOT NULL default '', 
  `day` int(2) NOT NULL default '0', 
  `month` int(2) NOT NULL default '0', 
  `year` int(4) NOT NULL default '0', 
  `time` varchar(255) NOT NULL default '', 
  `vote` int(11) NOT NULL default '0', 
  `parent` int(11) NOT NULL default '0', 
  PRIMARY KEY  (`Id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8


Можно пожалуйста поподробней. Получается, что сначала берем первый комментарий с parent=0, далее идет цикл, выводим его как обычно и идет вызов самой функции(с id основного комментария и +5px). И потом выбираем уже комментарий с parent от основного коммента и опять идет цикл и так далее. Вроде все понятно, но я воспроизвел эту таблицу, приведенная в той теме и этот скрипт и один и получается так, что основной комментарий(где parent=0) выводится на экран до бесконечности... Не подскажите где тут проблема ? :)

  Ответить  
 
 автор: ladan   (17.01.2012 в 20:54)   письмо автору
 
   для: cheops   (17.01.2012 в 20:37)
 

спасибо!

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-21] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования