Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Гостевая книга, Это финиш, прошу помощи. 
:(
    Опции темы
PARROT
  Дата 21.1.2005, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Пишу гостевую книгу, с добавлением коментариев.
Ничего не получается, в базу не добавляется, вообщем финиш.
база:
# MySQL-Front Dump 2.5
#
# Host: localhost Database: reviews
# --------------------------------------------------------
# Server version 4.1.8-max


#
# Table structure for table 'review'
#

CREATE TABLE review (
id smallint(3) NOT NULL auto_increment,
data date default NULL,
txt text,
name varchar(50) default NULL,
parent smallint(3) default NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;



#
# Dumping data for table 'review'
#

сам скрипт:
<?
mysql_connect("localhost","reviews","1538733");
mysql_select_db("reviews");
?>
<Form action="index.php" Method="POST">
<table cellpadding="0" cellspacing="0" align="center" bgcolor="#E8F0FB">
<tr>
<td style="padding-right:20">Имя:</td>
<td><Input Type="text" Name="name" maxlength="40" size="48"></td>
</tr>
<tr>
<td colspan=2>Сообщение:</td>
</tr>
<tr>
<td colspan=2 align=center><TextArea name="txt" rows=5 cols=30></TextArea></td>
</tr>
<tr>
<td><Input Type="submit" name="send" Value="Добавить" style="cursor:hand"></td>
<td align="right"><Input Type="reset" Value="Очистить" style="cursor:hand"></td>
</tr>
</table>
</Form>
<?
if($send)
{
$data=date("Y-m-d");
mysql_query("insert into review values(' ','$data','$txt','$name',' ')");
}
?>

Объясните пожалуйста.


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
BIG BROTHER
Дата 21.1.2005, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 9.12.2004
Где: Россия, Москва

Репутация: 2
Всего: 4



INSERT INTO review (`data`, `txt`, `name`, `parent`) VALUES ('$data','$txt','$name',' ')

используй лучше $_POST $_GET и тп
--------------------
Mess with the best, die like the rest
PM MAIL ICQ   Вверх
Opik
Дата 22.1.2005, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Советую переорганизовать скрипт:
Код
<?
mysql_connect("localhost","reviews","1538733");
mysql_select_db("reviews");

if($_POST['send']){
$data=date("Y-m-d");
mysql_query("insert into review values(' ','".mysql_escape_string($_POST['data'])."','".mysql_escape_string($_POST['txt'])."','".mysql_escape_string($_POST['name'])."',' ')") or die(mysql_error()); // 1) Пришло из POST запроса 2) Обрабаываем на бяки :) 3) Ещё бы проверку HTML тегов ))) если ошибка - выводим причину
Header("Location: gbook.php"); // Редиректимся для очистки $_POST
exit();
} else {
?>
<Form action="index.php" Method="POST">
<table cellpadding="0" cellspacing="0" align="center" bgcolor="#E8F0FB">
<tr>
<td style="padding-right:20">Имя:</td>
<td><Input Type="text" Name="name" maxlength="40" size="48"></td>
</tr>
<tr>
<td colspan=2>Сообщение:</td>
</tr>
<tr>
<td colspan=2 align=center><TextArea name="txt" rows=5 cols=30></TextArea></td>
</tr>
<tr>
<td><Input Type="submit" name="send" Value="Добавить" style="cursor:hand"></td>
<td align="right"><Input Type="reset" Value="Очистить" style="cursor:hand"></td>
</tr>
</table>
</Form>
<?
}
?>

PM MAIL Skype   Вверх
PARROT
Дата 22.1.2005, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Спасибо. Решила вопрос.
Но возник еще один:
Для чего и в каких случаях, и зачем употребляются ` `
Я раньше с этим не сталкивалась.


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Irokez
Дата 22.1.2005, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



кажется ими заменяют одинарные кавычки...
PM   Вверх
Mal Hack
Дата 22.1.2005, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Irokez
нет. в SQL они используются для обособления имен баз, таблиц и столбцов.
PM ICQ   Вверх
Irokez
Дата 22.1.2005, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



Mal Hack а ... точно ... и только для этого?
PM   Вверх
Mal Hack
Дата 22.1.2005, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Irokez
В PHP ни разу не видел их применение. В SQL тока так.
PM ICQ   Вверх
Gold Dragon
Дата 23.1.2005, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



на сколько я знаю, это синтаксис самого MySQL


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
IZ@TOP
Дата 23.1.2005, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Они обычно используются для избежания конфликтов имен столбцов и зарезервированных слов синтаксисиа MySQL.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 23.1.2005, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Почему у меня не получилось как раньше :

mysql_query("insert into review values(' ','$data','$txt','$name',' ')");

просто занести заполненные данные в базу, не перечисляя перед этим названия полей базы в ` `

smile

Может причина в совпадающих полях и переменных?

Тогда стоит ли использовать одинаковые имена?


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 24.1.2005, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Irokez
нет, не только.
Mal Hack
увидь:
`` можно использовать для выполнения комманд, попробуй например в винде запустить файлик:
Код
<?
print '<pre>';
print `dir`;
print '</pre>';
?>

PM MAIL Skype   Вверх
Mal Hack
Дата 24.1.2005, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(Opr @ 24.1.2005, 00:10)
увидь:
`` можно использовать для выполнения комманд, попробуй например в винде запустить файлик:

Не знал об этом...
А в линуксе команды shell так же можно вызвать?
PM ICQ   Вверх
Opik
Дата 24.1.2005, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Mal Hack
сорри, не проверял, думаю да.
PM MAIL Skype   Вверх
PARROT
Дата 24.1.2005, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата(Opr @ 24.1.2005, 00:10)
Irokez
нет, не только.
Mal Hack
увидь:
`` можно использовать для выполнения комманд, попробуй например в винде запустить файлик:
Код
<?
print '<pre>';
print `dir`;
print '</pre>';
?>

Запустила, и что он показывает?
Время последнего открытия или создания файлов, данного каталога?


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 24.1.2005, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



PARROT
он выполняет команды ms-dos
Код
print `ipconfig`; // Win XP

Добавлено @ 00:44
MS - dos - под виндой
PM MAIL Skype   Вверх
PARROT
Дата 24.1.2005, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата(Opr @ 24.1.2005, 00:44)
PARROT
он выполняет команды ms-dos
Код
print `ipconfig`; // Win XP

Добавлено @ 00:44
MS - dos - под виндой

Да, век живи, ничего не узнаешь.
По Cron, на русском языке его описание имеется?


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 24.1.2005, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



PM MAIL Skype   Вверх
PARROT
Дата 24.1.2005, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Спасибо!
Прочту.


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Mal Hack
Дата 24.1.2005, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Opr
завтра на сервере проверю
+ за полезную, интересную вещь...
Буду еще знать, что надо обрубать в плане безопасности.
PM ICQ   Вверх
Opik
Дата 24.1.2005, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Цитата
Warning:  shell_exec() has been disabled for security reasons in /home/bk/public_html/tmp/cmd.php on line 3

smile)) вообщем в unix тоже работает smile
PM MAIL Skype   Вверх
PARROT
Дата 28.1.2005, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Здравствуйте.
Назрел еще один важный вопрос:
Как и чем можно узнать количество просмотра комментариев, пользователями?


Только большая просьба, если можно, от простого к сложному.

Суть такая, есть главная страница с сообщениями, по ссылке пользователь выходит на другую страницу для просмотра оставленных комментариев к сообщению.

Нужно узнать сколько раз пользователи просмотрели комментарии.
smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 28.1.2005, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Да. Создать еще таблицу в которой будет два поля:

Код
create table stat_view_comments (
  cmid int not null default 0,
  cnt int 11 not null default 0,
  primary key (cmid)
);

Где cmid это идентификатор комментария, а cnt количество просмотров, которое обновляется каждый раз след. образом:

Код
update stat_view_comments set cnt = (cnt+1) where cmid = сюда_впишешь_переменную_с_ид_коммента


Думаю так должно быть понятно что к чему, если нет, пиши, объясню что не понятно.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 28.1.2005, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата(IZ @ 28.1.2005, 10:26)
Да. Создать еще таблицу в которой будет два поля:

Код
create table stat_view_comments (
  cmid int not null default 0,
  cnt int 11 not null default 0,
  primary key (cmid)
);

Где cmid это идентификатор комментария, а cnt количество просмотров, которое обновляется каждый раз след. образом:

Код
update stat_view_comments set cnt = (cnt+1) where cmid = сюда_впишешь_переменную_с_ид_коммента


Думаю так должно быть понятно что к чему, если нет, пиши, объясню что не понятно.

В базе есть поле parent, если parent=0, то это новое сообщение, а если parent=id (1, 2, и т.д.), то это комментрий к сообщению по id сообщения.

А без создания дополнительной таблицы никак не обойтись?

Я согласна на создание дополнительной таблицы, если это необходимо, глвное в этом случае не запутаться.

smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 29.1.2005, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



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


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 30.1.2005, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Добавила в базу для подсчета комментариев следующее поле cnt int(11) not null default '0', соответственно после поля parent, далее, если я правильно поняла, то при щелчке на заголовок сообщение открывается другая страница с основным сообщением и добавленными к нему комментариями, только вот не желает он считать...

вот код:

<table width=700 align=center>
<tr>
<td align=right><a href="add.php"><img src="img/nt.gif" border=0></a></td>
</tr>
</table>
<?
$db=mysql_pconnect("localhost","reviews","1538733");
mysql_select_db("reviews");
$res=@mysql_query("SELECT id,data,caption,name,txt FROM review WHERE id='$idp'");
for($i=0;$i<mysql_num_rows($res);$i++)
{
$mas=mysql_fetch_row($res);
$mas[1]=stripslashes($mas[1]);
$mas[2]=stripslashes($mas[2]);
$mas[3]=stripslashes($mas[3]);
$mas[4]=stripslashes($mas[4]);
$up=@mysql_query("UPDATE review SET cnt = cnt+1 where parent = '$idp'");
?>
<table width=700 align=center border border bordercolor=silver style=border-collapse:collapse cellpadding=0 cellspacing=0>
<tr>
<td rowspan=3 width=200 align=center><b><? echo $mas[3]; ?></b></td>
<td style='padding-left:10'><u><b>дата</b></u> <? echo $mas[1]; ?></td>
</tr>
<tr>
<td style='padding-left:10'><? echo $mas[2]; ?></td>
</tr>
<tr>
<td style='padding-left:10'><? echo $mas[4]; ?></td>
</tr>
<?
}
$res1=@mysql_query("SELECT id,data,caption,name,txt FROM review WHERE parent='$idp'");
for($i=0;$i<mysql_num_rows($res1);$i++)
{
$mas_com=mysql_fetch_row($res1);
$mas_com[1]=stripslashes($mas_com[1]);
$mas_com[2]=stripslashes($mas_com[2]);
$mas_com[3]=stripslashes($mas_com[3]);
$mas_com[4]=stripslashes($mas_com[4]);
?>
<tr>
<td rowspan=3 width=200 align=center><b><? echo $mas_com[3]; ?></b></td>
<td style='padding-left:10'><u><b>дата</b></u> <? echo $mas_com[1]; ?></td>
</tr>
<tr>
<td style='padding-left:10'><? echo $mas_com[2]; ?></td>
</tr>
<tr>
<td style='padding-left:10'><? echo $mas_com[4]; ?></td>
</tr>
<?
}
?>
</table>
<table width=700 align=center>
<tr>
<td align=right><a href=add.php?idp=<? echo $mas[0]; ?> ><img src="img/dc.gif" border=0></a></td>
</tr>
</table>

Насколько правильно я воткнула нужную строчку, незнаю, знаю точно что считать не желает.
Спасите Попугая!
Объясните пожалуйста.


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
PARROT
Дата 30.1.2005, 01:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Спасибо IZ@TOP , все работает!
Догадалась сама, хоть и методом тыка, пока.
Теперь мне осталось дописать проверку на заполнение полей и соединить все с регистрацией пользователя.
Вопрос 1.
В каком формате можно и нужно хранить пароль? md5() или можно в открытую?
А если пользователь забыл пароль, то придется генерировать новый и добавлять его в базу по мылу или имени?
Что проще?
Потом, хочется еще, чтобы пользователи смогли загружать свои аватары (это у вас так называется), как это правильно сделать?

Только не говори, что вопросов много, это еще не все!



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Mal Hack
Дата 30.1.2005, 02:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(PARROT @ 30.1.2005, 01:33)
В каком формате можно и нужно хранить пароль? md5() или можно в открытую?

ну в открытую точно хранить нельзя, а вот быбор алгоритма хэширования - как твоей душе угодно.

Цитата(PARROT @ 30.1.2005, 01:33)
то придется генерировать новый и добавлять его в базу по мылу или имени?

Как минимум - генерировать новый пасс, писать на место старого и отсылать на мыло.
PM ICQ   Вверх
IZ@TOP
Дата 30.1.2005, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(Mal @ 30.1.2005, 03:00)
Как минимум - генерировать новый пасс, писать на место старого и отсылать на мыло.

Желательно с подтверждением, как на этом форуме.


Цитата(PARROT @ 30.1.2005, 02:33)
Потом, хочется еще, чтобы пользователи смогли загружать свои аватары (это у вас так называется), как это правильно сделать?

Прочти внимательно это http://forum.vingrad.ru/index.php?showtopic=11017 . Аватары храни в отдельной папке, имена аватаров должны быть названы в соответствии с ID пользователя (что-то вроде как в IBP av-1239.gif).


Цитата(PARROT @ 30.1.2005, 01:47)
Насколько правильно я воткнула нужную строчку, незнаю, знаю точно что считать не желает.
Спасите Попугая!

У тебя же вроде как я понял комментарии к гостевой книге хранятся в тойже таблице что и сами сообщения, и parent связывает их с сообщением в гостевой книге? Тогда тебе нужно не по parent cnt+1, а по id записи комментарии которой в данный момент просматривают.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 30.1.2005, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



По сути я хочу сделать гостевую (форум) похожую на ваш форум:
Поэтому возник еще один вопрос (правда о реализации его я еще сама не думала, лучше спросить...)

В меню вашего форума есть:
Тема|Автор|Ответов|Просмотров|Обновление

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

Вопрос:
Как это реализовать?
Можно пример, простой.
С подсказкой лучше думается.
Спасибо!
smile



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
PARROT
Дата 30.1.2005, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



И еще...
Добавленные сообщения выводятся массивом:

if (!isset($s)) $s=1;
$s=$s-1;
echo"<center>";
$res4=mysql_query("select count(id) from review WHERE parent=0");
$num=mysql_fetch_row($res4);

$numstr=ceil($num[0]/10);
for($i=0; $i<$numstr; $i++){
$start=$i*10+1;
$stop=($i+1)*10;
if($stop>$num[0])
{$stop=$num[0];}
if($start!=$stop)
{
print "<a href=index.php?s=$start style='text-decoration:none'>[$start - $stop]</a> ";
}
else{
print "<a href=index.php?s=$start style='text-decoration:none'>[$start]</a> ";
}
}

И печатаются [1-10] [11-20] и т. д.
Данный вариант меня не очень устраивает, хочу чтобы на одной странице было 10 сообщений, но при этом печаталась [1], следующие 10 сообщений [2], но незнаю как правильно изменить скрипт, пыталась...
Пока тщетно.
Объясните пожалуйста.


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 30.1.2005, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73





--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Mal Hack
Дата 30.1.2005, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(IZ @ 30.1.2005, 12:21)
Желательно с подтверждением, как на этом форуме.

Это уже как максимум...
PM ICQ   Вверх
PARROT
Дата 30.1.2005, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата(PARROT @ 30.1.2005, 13:01)
По сути я хочу сделать гостевую (форум) похожую на ваш форум:
Поэтому возник еще один вопрос (правда о реализации его я еще сама не думала, лучше спросить...)

В меню вашего форума есть:
Тема|Автор|Ответов|Просмотров|Обновление

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

Вопрос:
Как это реализовать?
Можно пример, простой.
С подсказкой лучше думается.
Спасибо!
smile

smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 30.1.2005, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Ну так и бери из базы самое свежее сообщение!

например есть у нас таблица с сообщениями:
Код
create table messages (
   id int not null auto_increment,
   thread_id int not null default '0',
   author varchar(30),
   message text,
   lastupdate int(10),
   primary key(id)
);

В поле thread_id, допустим, хранится идентификатор темы, в поле lastupdate записанный timestamp последнего сообщения (то есть мы туда записываем результат работы функции time()), далее выбираем все самые свежие записи для всех имеющихся тем:

Код
select id, author, from_unixtime('%d.%m.%Y', lastupdate) as ddmmyy
   group by thread_id order by lastupdate desc


Получаем данные следующего типа:
Код

array(
   id => 1
   author => IZ@TOP
   ddmmyy => 30.01.2005
)


Ну и т.п.
Добавлено @ 23:05
ЗЫ этот запрос вернет не просто последний ответ в тему, а вернет все последние ответы во все темы. Можно конечно отобрать по ID, тогда надо просто добавить условие на отбор по thread_id.
Добавлено @ 23:05
PARROT, ты только потом обязательно покажи свое твоерение.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 30.1.2005, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Обязательно покажу.
Обновление доделаю, выложу к себе на сервер, остальное по мере дописывания.
Мы еще вместе помучаемся, надеюсь.

Вопрос: Как добавляются плюсы в репутацию?
У меня не получилось добавить.



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 31.1.2005, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



PARROT, по достижении 100 постов и более smile


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 31.1.2005, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата(IZ @ 31.1.2005, 01:32)
PARROT, по достижении 100 постов и более smile

IZ@TOP, я вам хотела добавить ++++, много, за помощь постоянную.


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 31.1.2005, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



PARROT, думаю это еще успеется smile Можно отблагодарить и пивом smile

Так, ладно, давайте приедрживаться темы и не разводить здесь флейм smile

Это сообщение отредактировал(а) IZ@TOP - 31.1.2005, 12:17


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
  Дата 31.1.2005, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата(IZ @ 31.1.2005, 12:15)
PARROT, думаю это еще успеется smile Можно отблагодарить и пивом smile

Так, ладно, давайте приедрживаться темы и не разводить здесь флейм smile

Пивом так пивом, без вопросов!



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
PARROT
Дата 31.1.2005, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



С обновлением я справилась, завтра займусь защитой и сразу возник вопрос:
Как защитить форму от обновления по F5 ?
smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 31.1.2005, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Код
header('location: file.php');
Юзер даже не заметит что его перенесло, а POST "остаточное явление" исчезнет smile
Можно правда писать юзеру в куки хеш его сообщения и если он совпадет с хешем вновь передаваемых данных, то ни чего в базу не заносим. smile


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 1.2.2005, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



IZ@TOP, защиту написала, все работает.
Возник вопрос по использованию смайликов (он возникал и раньше, на что ответ был таким: Что мне это не нужно!)

Вот код:
<table width=900>
<tr>
<td align=right><a href="index.php">Посмотреть сообщения</td>
</tr>
</table>
<?
$name=$_POST['name'];
$txt=$_POST['txt'];
$capt=$_POST['capt'];
if(isset($send) and $send=="Добавить")
{
if (empty($name) || empty($capt) || empty ($txt)){
echo "<center><font color=red>Не заполнены обязательные поля!</font></center>";
}else{
$text = str_replace(":smile:", "<img src='smile/smile.gif' border=0>", $text);
$text = str_replace(":biggrin:", "<img src='smile/biggrin.gif' border=0>", $text);
$text = str_replace(":cry:", "<img src='smile/cry.gif' border=0>", $text);
$text = str_replace(":eek:", "<img src='smile/eek.gif' border=0>", $text);
$text = str_replace(":razz:", "<img src='smile/razz.gif' border=0>", $text);
$text = str_replace(":cool:", "<img src='smile/cool.gif' border=0>", $text);
$text = str_replace(":mad:", "<img src='smile/mad.gif' border=0>", $text);
$text = str_replace(":rolleyes:", "<img src='smile/rolleyes.gif' border=0>", $text);
$text = str_replace(":redface:", "<img src='smile/redface.gif' border=0>", $text);
$text = str_replace(":confused:", "<img src='smile/confused.gif' border=0>", $text);
$text = str_replace(":wink:", "<img src='smile/wink.gif' border=0>", $text);
$db=mysql_pconnect("localhost","reviews","1538733");
mysql_select_db("reviews");
$data=date("Y.m.d G:i:s");
mysql_query ("INSERT INTO review VALUES ('', '$data', '$capt', '$txt', '$name', '$idp','')");
$msg="<table width=700 border align=center border bordercolor=silver style=border-collapse:collapse><tr><td rowspan=3 valign=top align=center width=100><b>$name</b></td><td style='padding-left:10'><u><b>дата</b></u> $data</td></tr><tr><td colspan=2>$capt</td></tr><tr><td colspan=2>$txt</td></tr></table>";
}
}
?>
<Form action="add.php" Method="POST">
<table height=200 cellpadding="0" cellspacing="0" align="center" border bordercolor=silver style=border-collapse:collapse>
<tr>
<td>
<table cellpadding="0" cellspacing="0" align="center">
<tr>
<td style="padding-left:10">Имя:</td>
<td><Input Type="text" Name="name" maxlength="40" size="48"></td>
</tr>
<tr>
<td style="padding-left:10">тема:</td>
<td><Input Type="text" Name="capt" maxlength="40" size="48"></td>
</tr>
<tr>
<td colspan=2 align=center>Сообщение:</td>
</tr>
<tr>
<td align=justify><img src='smile/smile.gif' border=0><img src='smile/biggrin.gif' border=0><img src='smile/cry.gif' border=0><img src='smile/eek.gif' border=0><br><img src='smile/razz.gif' border=0><img src='smile/cool.gif' border=0><img src='smile/mad.gif' border=0><img src='smile/rolleyes.gif' border=0><br><img src='smile/redface.gif' border=0><img src='smile/confused.gif' border=0><img src='smile/wink.gif' border=0></td>
<td><TextArea name="txt" rows=5 cols=30></TextArea></td>
</tr>
<tr>
<td><Input Type="submit" name=send Value="Добавить" style="cursor:hand"></td>
<td align="right"><Input Type=reset Value="Очистить" style="cursor:hand"></td>
</tr>
</table>
<input type=hidden name=idp value=<? echo $idp; ?>>
</td>
</tr>
</table>
</Form>
<? echo $msg;?>

Я просто даже не понимаю, как это сделать.
Объясни плиз, smile

Как их хранить, выводить и т.д.

Это сообщение отредактировал(а) PARROT - 1.2.2005, 16:34


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 1.2.2005, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



PARROT, у тебя допущено несколько ошибок:

1) Для оптимизации замены смайликов испоьзуй массивы:

Код
$Smiles    = array(
   ':smile:' => '<img src="smile.gif">',
   ':smile2:' => '<img src="smile.2.gif">',
);


$Text = str_replace(array_keys($Smiles), $Smiles, $Text);

Как видишь, при таком обращении с кодом у нас убралось очень много лишнего smile

2) При замене смайлов в переменной $text у тебя появляется много одинарных кавычек в тексте. При добавлении в базу
Код
mysql_query ("INSERT INTO review VALUES ('', '$data', '$capt', '$txt', '$name', '$idp','')");
Скорее всего произойдет ошибка (хотя я последнее время убеждаюсь что у многих начинающих работает то что и вообразить невозможно smile ), так как данные из переменных заклбючены в одинарные кавычки, первая кавычка в тексте закончит поле и далее текст из переменной будет интерпретироваться MySQL как команды...


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 1.2.2005, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



IZ@TOP, посмотри тут мое творение, жду замечаний.

http://www.admin.traktora.spb.ru/

Правда пока без регистрации... не дописала еще.

smile



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 2.2.2005, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



В общем для начала неплохо.
Чего не хватает:

1) Дизайна.
2) Переадресации на тему когда создал сообщение.
3) Если это все же гостевая, а не форм, то ответы в сообщение лучше всеже как то выделять.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
  Дата 2.2.2005, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата(IZ @ 2.2.2005, 10:51)
В общем для начала неплохо.
Чего не хватает:

1) Дизайна.
2) Переадресации на тему когда создал сообщение.
3) Если это все же гостевая, а не форм, то ответы в сообщение лучше всеже как то выделять.

Пускай будет форум, гостевая, как название мне не очень нравится.
Вопрос:
Нет Переадресации на тему когда создал сообщение, как ее сделать?
Я не совсем поняла суть.
Как она должна выглядеть?

По поводу дизайна, я еще о нем не думала, это уже в конце, когда допишу все доконца.
В голове еще мысли появились.




--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 2.2.2005, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(PARROT @ 2.2.2005, 14:29)
Нет Переадресации на тему когда создал сообщение, как ее сделать?
Я не совсем поняла суть.
Как она должна выглядеть?

Ну как на этом форуме, когда создаешь тему, тебя переадресовывает на нее. То есть тебе после добавления записи нужно взять ее ИД (mysql_insert_id()), и переадресовать на тему:
Код
<?php

// ... здесь у нас идет добавление записи в базу.

header('location: http://www.admin.traktora.spb.ru/comment.php?idp='.mysql_insert_id());
exit;

?>


Думаю этот пример должен быть понятен. Главное не забудь что надо делать переадресацию до любого вывода.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 2.2.2005, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



http://www.admin.traktora.spb.ru/comment.php?idp=90 сама догадаешься? или помочь?
PM MAIL Skype   Вверх
IZ@TOP
Дата 2.2.2005, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Opr, не понял smile


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 2.2.2005, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Я ответил в несуществующей теме.
Добавлено @ 16:16
+ Хотелось бы что бы по умолчанию при ответе тема указывалась текущая:
Re: Тема.
Добавлено @ 16:20
+ можно "опускать" обязательные поля:
http://www.admin.traktora.spb.ru/comment.php?idp=28
перед проверкой делай: trim($str) - что бы отсечь пробелы по краям
PM MAIL Skype   Вверх
PARROT
Дата 2.2.2005, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата(Opr @ 2.2.2005, 16:12)
Я ответил в несуществующей теме.
Добавлено @ 16:16
+ Хотелось бы что бы по умолчанию при ответе тема указывалась текущая:
Re: Тема.
Добавлено @ 16:20
+ можно "опускать" обязательные поля:
http://www.admin.traktora.spb.ru/comment.php?idp=28
перед проверкой делай: trim($str) - что бы отсечь пробелы по краям

Re: Тема- Я подумаю. Сегодня много работы.
Что значит "опускать" обязательные поля?
Перед какой проверкой делать trim($str) ?
Перед записью в базу?

Вообще мыслей много, надо бы разобраться и выстроить их последовательно, а то запутаюсь.

smile
Добавлено @ 19:10
Цитата(Opr @ 2.2.2005, 15:52)
http://www.admin.traktora.spb.ru/comment.php?idp=90 сама догадаешься? или помочь?

В чем догадаться? Что подставив в ссылку http://www.admin.traktora.spb.ru/comment.php любой номер idp, можно создать сообщение?
Да можно smile
А как этого избежать?
Исправить?




--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
PARROT
Дата 3.2.2005, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Я тут все про адресацию (header) думаю, да сейчас все работает, а стоит подключить какие-то файлы сверху и будет ошибка.
Как поступить?
На яваскрипте ошибок не дает.


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 3.2.2005, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Цитата
А как этого избежать?

select * from topics where id = $_GET['id'];
если записей нет - писать что ошибся темой))
Цитата
Перед какой проверкой делать trim($str) ?

зайди к себе на форум и сразу нажми "добавить", вылезит, что не все заполнено, вот перед этим и делай ))
Цитата
какие-то файлы сверху и будет ошибка.
Как поступить?

подключать снизу smile)
PM MAIL Skype   Вверх
IZ@TOP
Дата 3.2.2005, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



PARROT, даю совет всех времен и народов.
В начале файла который будет запущен из браузера и в котором могут быть проблемы с передачей заголовков используем функцию ob_start:

Код
<?php
// Самое начало файла
ob_start();

// ... а далее уже ижет и HTML и твой код и т.п.


// Самый конец файла
ob_end_flush();
?>



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Kurt
Дата 3.2.2005, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


Профиль
Группа: Участник Клуба
Сообщений: 1662
Регистрация: 22.8.2003
Где: Краснодар

Репутация: нет
Всего: 36



PARROT
Все сообщения при просмотре через Opera представляют собой набор нечитаемых каракулей. В IE все ОК. Разберись, пожалуйста, с кодировкой.


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
PARROT
Дата 3.2.2005, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата(Kurt @ 3.2.2005, 17:23)
PARROT
Все сообщения при просмотре через Opera представляют собой набор нечитаемых каракулей. В IE все ОК. Разберись, пожалуйста, с кодировкой.

До кодировки как и до дизайна дело еще не дошло, с этим не так плохо, как с программированием на php, этот вопрос сейчас главный!
smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
PARROT
Дата 3.2.2005, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата(Opr @ 2.2.2005, 16:12)
Я ответил в несуществующей теме.
Добавлено @ 16:16
+ Хотелось бы что бы по умолчанию при ответе тема указывалась текущая:
Re: Тема.
Добавлено @ 16:20
+ можно "опускать" обязательные поля:
http://www.admin.traktora.spb.ru/comment.php?idp=28
перед проверкой делай: trim($str) - что бы отсечь пробелы по краям

Исправила все кроме re: тема
Не доходит пока. Прошу подсказки. smile
Добавлено @ 18:22
Бред какой-то, переадресация не работает, просьба исправить, моя голова на сегодня соображать видимо закончила, если можно еще, объяснить ошибки:

Код

<html>
<head>
<script language=JavaScript src="anim.js"></SCRIPT>
</head>
<body>
<table width=900>
<tr>
<td align=right><a href="index.php">Посмотреть сообщения</td>
</tr>
</table>
<?
$db=mysql_pconnect("localhost","reviews","1538733");
       mysql_select_db("reviews");
$name=$_POST['name'];
$txt=$_POST['txt'];
$capt=$_POST['capt'];
if(isset($send) and $send=="Добавить")
{
if (mysql_num_rows(mysql_query("select count(id) from review where id=$idp"))==0)
{
echo "Такой темы нет!";
}
if (empty($name) || empty($capt) || empty ($mess)){
 echo "<center><font color=red>Не заполнены обязательные поля!</font></center>";
}
else
{
$data=date("Y.m.d  G:i:s");
mysql_query ("INSERT INTO review VALUES ('', '$data', '$capt', '$mess', '$name', '$idp','')");
?>
<script>document.location.href="comment.php?idp=<? echo $idp;?>";</script>
<?
}
}
?>
<Form name=myform action="add.php" Method="POST">
<table height=200 cellpadding="0" cellspacing="0" align="center"  border bordercolor=silver style=border-collapse:collapse>
<tr>
<td>
<table cellpadding="0" cellspacing="0" align="center">
<tr>
<td style="padding-left:10">Имя:</td>
<td><Input Type="text" Name="name" maxlength="40" size="48"></td>
</tr>
<tr>
<td style="padding-left:10">тема:</td>
<td><Input Type="text" Name="capt" maxlength="40" size="48"></td>
</tr>
<tr>
<td  colspan=2 align=center>Сообщение:</td>
</tr>
<tr>
<td colspan=2 align=center><TextArea id=txtmes name="mess" rows=5 cols=30></TextArea></td>
</tr>
<tr>
<td><Input Type="submit" name=send Value="Добавить" style="cursor:hand"></td>
<td align="right"><Input Type=reset Value="Очистить" style="cursor:hand"></td>
</tr>
</table>
<input type=hidden name=idp value=<? echo $idp; ?>>

</td>
</tr>
</table>
</Form>
<center>Для добавления смайла щелкни по картинке.<br>
<table width=100% style="border:1 solid silver;border-collapse:collapse">
<tr align=center>
<?
for($i=1;$i<=10;$i++)
{
?>
<td><img src='smile/<? echo"$i.gif"?>' onClick="smile('#<?=$i?>')" onMouseover="this.style.cursor='hand'" onMouseout="this.style.cursor=''"></td>
<?
}
?>
</tr>
<tr align=center>
<?
for($i=11;$i<=20;$i++)
{
?>
<td><img src='smile/<? echo"$i.gif"?>' onClick="smile('#<?=$i?>')" onMouseover="this.style.cursor='hand'" onMouseout="this.style.cursor=''"></td>
<?
}
?>
</tr></table></center>
</body>
</html>



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 4.2.2005, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Эх... вот, я немного переделал.

Код
<?php
ob_start();
// Как я уже говорил, эта функция буферезует вывод, и соответственно проблем
// с отправкой заголовков быть не должно.

error_reporting(E_ALL);
// После отладки выставь в 0
?>
<html>
<head>
<script language=JavaScript src="anim.js"></SCRIPT>
</head>
<body>
<table width=900>
<tr>
 <td align=right><a href="index.php">Посмотреть сообщения</td>
</tr>
</table>
<?
$db = mysql_pconnect("localhost","reviews","1538733");
mysql_select_db("reviews");

// Отсюда присвоения переменных я убрал. Незачем засорять память лишними перемнными.
// Тем более если у тебя register_globals на сервере = on, тебе использование $_POST, $_GET и т.п.
// не так уж и нужно. Однако если ты хочешь чтобы твои скрипты работали в будущем как надо и везде,
// то тебе необходимо пользоваться глобальными массивами и забыть о register_globals = on!

if(isset($send) and $send=="Добавить") {
if (mysql_num_rows(mysql_query("select count(id) from review where id=".intval($_POST['$idp'])))==0) {
 echo "Такой темы нет!";
}
if (empty($_POST['name']) || empty($_POST['capt']) || empty ($_POST['mess'])) {
 echo "<center><font color=red>Не заполнены обязательные поля!</font></center>";
}
} else {
$data=date("Y.m.d  G:i:s");
mysql_query ("INSERT INTO review VALUES ('', '".mysql_escape_string($data).
 "', '".mysql_escape_string($_POST['capt'])."', '".mysql_escape_string($_POST['mess'])."', '".
 mysql_escape_string($_POST['name'])."', '".intval($_POST['idp'])."','')");

// Более тщательная проверка передаваемых переменных.
// Надо всегда помнить самое главное правило: ни когда и ни при каких обстоятельствах,
// не доверять тому что ввел пользователь.

header('location: comment.php?idp='.$idp);
ob_end_flush();
exit;

// Переадресовываем пользователя на тему в которую он ответил, выводим содержимое буфера и заканчиваем сценарий.

}
}
$q = mysql_query("select capt from review where id=".intval($idp));
list($subject) = mysql_fetch_array($q, MYSQL_NUM);

// По поводу "re: тема". Выбираем из юазы тему сообщения в которую отвечаем, и выводим re: $subject в соотв. поле.

?>
<Form name=myform action="add.php" Method="POST">
<table height=200 cellpadding="0" cellspacing="0" align="center"  border bordercolor=silver style=border-collapse:collapse>
 <tr>
  <td>
   <table cellpadding="0" cellspacing="0" align="center">
    <tr>
     <td style="padding-left:10">Имя:</td>
      <td><Input Type="text" Name="name" maxlength="40" size="48"></td>
     </tr>
     <tr>
      <td style="padding-left:10">тема:</td>
      <td><Input Type="text" Name="capt" maxlength="40" value="Ответ: <?php echo $subject; ?>" size="48"></td>
     </tr>
     <tr>
      <td  colspan=2 align=center>Сообщение:</td>
     </tr>
     <tr>
      <td colspan=2 align=center><TextArea id=txtmes name="mess" rows=5 cols=30></TextArea></td>
     </tr>
     <tr>
      <td><Input Type="submit" name=send Value="Добавить" style="cursor:hand"></td>
      <td align="right"><Input Type=reset Value="Очистить" style="cursor:hand"></td>
    </tr>
   </table>
   <input type=hidden name="idp" value="<? echo $idp; ?>">
  </td>
 </tr>
</table>
</Form>
<center>Для добавления смайла щелкни по картинке.<br>
<table width=100% style="border:1 solid silver;border-collapse:collapse">
<tr align="center">
<?
for($i=1;$i<=10;$i++) {
?>
<td><img src='smile/<? echo"$i.gif"?>' onClick="smile('#<?=$i?>')" onMouseover="this.style.cursor='hand'" onMouseout="this.style.cursor=''"></td>
<?
}
?>
</tr>
<tr align="center">
<?
for($i=11;$i<=20;$i++)
{
?>
<td><img src='smile/<? echo"$i.gif"?>' onClick="smile('#<?=$i?>')" onMouseover="this.style.cursor='hand'" onMouseout="this.style.cursor=''"></td>
<?
}
?>
</tr>
</table></center>
</body>
</html>
<?php
ob_end_flush();
?>



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 4.2.2005, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Спасибо большое IZ@TOP.
Почти все работает.
smile
Ща еще доковыряю, немного осталось.

Вот, доковыряла, требует проверки и дальнейших советов.


Это сообщение отредактировал(а) PARROT - 4.2.2005, 20:08


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 4.2.2005, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



PARROT, дизайн требует доработки smile


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 4.2.2005, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата(IZ @ 4.2.2005, 20:41)
PARROT, дизайн требует доработки smile

Дизайн не главное! Пока...
При нажатии на количество ответов, открывается окно с авторами и кол. комментариев добавленных пользователями.
Как этого добиться?

Желательно подсказку, с вашими подсказками и усилиями у меня что-то стало получаться, вошла в раж smile

С открытием окна определенного размера проблем не будет.
$coll=@mysql_query("SELECT count(name) FROM review WHERE caption=$idp");
Так?
$names=mysql_fetch_row($coll);
А дальше?
Запуталась я помоему smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 7.2.2005, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Такс, а чего непонятного? Выбираем имена всех написавших в той теме и все smile

Код
select name from review where id = $idp order by data desc

По моему все очень просто smile


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 7.2.2005, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



У меня еще один вопрос:
Не получается правильный вывод смайликов к теме собщений, на первой странице (вообщем как у вас)
вот код:
$smale=@mysql_query("SELECT MAX(smile) FROM review WHERE parent=$mas[0]");
$smale=mysql_fetch_row($smale);
if ($mas[7]=='') $mas[7]=$smale[0];
echo "<tr><td align=center><img src=smile/$smale[0].gif></td>

Что у меня не так?

Если смайликов к теме сообщения небыло добавлено, то должна быть пустая ячейка, если добавлен смайлик, то должен выводиться смайлик.
У меня выводятся смайлики, а там где их нет, кресты, видимо из-за img src.


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 8.2.2005, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Код

$smale = @mysql_query("SELECT MAX(smile) FROM review WHERE parent={$mas[0]}");
$smale = mysql_fetch_row($smale);
if ($mas[7] == '') {
   $mas[7] = $smale[0];
   echo "<tr><td align=center><img src=smile/{$smale[0]}.gif></td>";
} else {
   echo "<tr><td align=center>&nbsp;</td>";
}

Может так? А трабла была в запросе: для того чтобы массив в строке интерпретировался, необходимо его выделять, либо фигурными скобками, либо при помощи конкантенации (" ... ".$mas[0]." ... ").


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 9.2.2005, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Сделала.
Как организовать редактирование сообщений?
Любой юзер может редактировать любые сообщения или только свои?
Желательно пример.
Спасибо!


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 9.2.2005, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



PARROT
Нужно что бы каждый мог редактировать только свои, но тут уже нужна авторизация.
ну так принцип такой:
PHP:
Код
$query = mysql_query("select * from review");
while($row = mysql_fetch_array($query)){
if($row['name'] = $user['name']){
print 'Редактировать';
}
}

В $user - инфо о пользователе.
А само редактирование. Сначала по ид считываем информацию. Потом её загружаем в форму. Потом делаем упдайт записи.
PM MAIL Skype   Вверх
PARROT
Дата 9.2.2005, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Авторизацию дописываю.
Как должна выглядеть база данных для авторизации?
Сколько полей должно быть?
У меня сейчас: id, name, email, login, parol.
Этого хватит?
Как таблица для авторизации должна перекликаться с таблицей для сообщений?

smile

Это сообщение отредактировал(а) PARROT - 9.2.2005, 20:19


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 10.2.2005, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



PARROT
напрямую никак.
полей по идее хватит. Остальные ты добавишь по надобности, если будет расширять скрипт smile
PM MAIL Skype   Вверх
PARROT
Дата 10.2.2005, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



В чем лучше хранить, в Сессиях или Куках, посетителей?


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 10.2.2005, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



не знаю, как лучше, но я храню в куках, этот форум кстати, тоже smile
PM MAIL Skype   Вверх
PARROT
Дата 10.2.2005, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата(Opr @ 10.2.2005, 13:42)
не знаю, как лучше, но я храню в куках, этот форум кстати, тоже smile

Хороший форум!
Можно пример?
На что и когда ставятся куки?
И можно, все что с этим связано, именно с форумом.
Я куками пользовалась только в голосовании, для запрета накручивания.
Юзер зарегистрировался, вводит в форму логин и пароль, а дальше что?
smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 10.2.2005, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



PM MAIL Skype   Вверх
PARROT
Дата 10.2.2005, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Для цитаты:
Цитированное сообщение имеет две переменные $text - сообщение и $text1- цитируемое сообщение, в двух разных техтареа, с разными именами.
Вопрос:
Для $text1 нужно создавать поле в базе?
Если можно без него, то как?
smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 10.2.2005, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



можно без него, ведьтвбазе не хранятя коды, там только хтмл!
PM MAIL Skype   Вверх
PARROT
Дата 10.2.2005, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата(Opr @ 10.2.2005, 16:01)
можно без него, ведьтвбазе не хранятя коды, там только хтмл!

А что лучше без или с ним?
Удобнее?
И проще smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 10.2.2005, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



PARROT
рассуждай логически. Если ты в базе хранишь в виде BBCode то при показе сообщения тебе надо делать замену на HTML, что при большом кол-ве кодов и сообщений вызовет немалую нагрузку. Так что хранить в базе надо тока HTML, вроде так объяснил)
PM MAIL Skype   Вверх
PARROT
Дата 12.2.2005, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



В базе хранится значение переменных, либо записанных пользователем или...
Вопрос:
У меня получается слишком много файлов для добавления, редактирования и цитирования, можно ли их объединить в один файл?
Если можно, то как?
Я боюсь запутаться.
smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 12.2.2005, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



PARROT
можно. обычные условия. (if/else)
PM MAIL Skype   Вверх
PARROT
  Дата 12.2.2005, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Все получилось! с переадресацией header. Спасибо IZ@TOP !
smile

Это сообщение отредактировал(а) PARROT - 12.2.2005, 18:31


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 12.2.2005, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Я бы поставил ещё фильтр на вводимость html кода.
PM MAIL Skype   Вверх
PARROT
Дата 12.2.2005, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата(Opr @ 12.2.2005, 19:16)
Я бы поставил ещё фильтр на вводимость html кода.

Это как?
Что это такое?


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Irokez
Дата 12.2.2005, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



htmlspecialchars(), strip_tags()
PM   Вверх
PARROT
Дата 12.2.2005, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата(Irokez @ 12.2.2005, 20:21)
htmlspecialchars(), strip_tags()

Это я знаю strip_tags(), эта функция вырезает теги Html
А эта что делает? htmlspecialchars()
К сожалению книга по php у меня на работе, мне сейчас не посмотреть.
И пожалуйста пример, так легче думается.
smile
Добавлено @ 20:56
Ну вот, выложила новую версию своего форума, сильно не ругайте, а советов жду с нетерпением.
Чего еще не хватает?
Авторизацию еще не сделала, кроме нее еще есть недоделки.
Цитирование пока не работает, я так и не поняла, как его сделать.
То есть фактически оно выводится, правильно, я не поняла, нужно для цитирования заводить еще одно поле или нет.
Короче еще в раздумьях.

http://www.admin.traktora.spb.ru

С уважением, ко всем, моим учителям!


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Irokez
Дата 12.2.2005, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



Описание
string htmlspecialchars ( string string [, int quote_style [, string charset]])


В HTML некоторые символы имеют специальное значение и для сохранения своего значения должны быть преобразованы в HTML сущности. Эта функция возвращает строку, над которой проведены некоторые из таких преобразований. Этих преобразований достаточно для большинства задач веб-программирования. Если вам нужно преобразовать все возможные сущности, используйте htmlentities().

Эта функция полезна при отображении данных, введенных пользователем, которые могут содержать нежелательные HTML тэги, например в форуме или гостевой книге. Необязательный второй аргумент quote_style определяет режим обработки одиночных и двойных кавычек. В режиме по умолчанию, ENT_COMPAT, преобразуются двойные кавычки, одиночные остаются без изменений. В режиме ENT_QUOTES преобразуются и двойные, и одиночные кавычки. а в режиме ENT_NOQUOTES и двойные, и одиночные кавычки остаются без изменений.

Производятся следующие преобразования:


'&' (амперсанд) преобразуется в '&amp;'

'"' (двойная кавычка) преобразуется в '&quot;' when ENT_NOQUOTES is not set.

''' (одиночная кавычка) преобразуется в ''' только в режиме ENT_QUOTES.

'<' (знак "меньше чем") преобразуется в '&lt;'

'>' (знак "больше чем") преобразуется в '&gt;'

Пример 1. Пример использования htmlspecialchars()

<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // &lt;a href='test'&gt;Test&lt;/a&gt;
?>


PM   Вверх
Opik
Дата 13.2.2005, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



И делать htmlspecialchars надо до занесения в базу. И перед обработкой на bbcode
PM MAIL Skype   Вверх
PARROT
Дата 13.2.2005, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата(Opr @ 13.2.2005, 17:52)
И делать htmlspecialchars надо до занесения в базу. И перед обработкой на bbcode

Поняла.
Завтра займусь.
Меня сейчас больше волнует вопрос с цитируемым сообщением, никак не могу придти, ни к какому выбору.
Нужно создать еще одно поле для цитируемого или не нужно?
И еще, просьба проверить форум
http://www.admin.traktora.spb.ru/index.php



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 13.2.2005, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Нет, отдельного поля делать не надо.
Добавлено @ 22:11
Хм, а почему я могу редактировать любой пост?
PM MAIL Skype   Вверх
PARROT
Дата 13.2.2005, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата(Opr @ 13.2.2005, 22:09)
Нет, отдельного поля делать не надо.
Добавлено @ 22:11
Хм, а почему я могу редактировать любой пост?

А потому как еще регистрация не сделана, можно редактировать любой пост!
Цитирование вообще не работает, тоже пока.
Как раз по поводу него мой вопрос:
Если сделать так:
то, что введено в поле, цитированное сообщение (нижнее поле) заключать
в такие штуки, например: <#></#>, а то, что введено пользователем -
не заключать ни в какие.
И в базу писать строку:<#>цитата</#> + текст написанный пользователем.
А потом делить все это при выводе, выделяя там курсивом цитату
в теле которого будут определенные символы, говорящие скрипту, что эту фразу надо выделить курсивом и отделить от остального текста.

И написать обработчик напиши при выводе в текстареа.

А?

Мысль есть, только незнаю как правильнее ее реализовать, может подскажете?

Эта мысль без дополнительного поля!

smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 13.2.2005, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



вот что делаешь после post запроса:

Код
$txt = preg_replace("/\[quote\](.*)\[\/quote\]/i", "<span class=\"quote\">\\1</span>", $txt);

ну или оформляешь html как нужно. Далее заносишь в базу и из базы показываешь сообщения никак не обрабаывая. При реактирование перед подставкой сообщения в форму делаешь обратную замену. т.е:

Код
$txt = preg_replace("/<span class=\"quote\">(.*)<\/span>/i", "[quote]\\1[/quote]", $txt);

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

PM MAIL Skype   Вверх
PARROT
Дата 14.2.2005, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Да...
Чем дальше в лес, тем больше...
Попробую.
Правда поняла не доконца.
Местами...


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Axxent
Дата 14.2.2005, 05:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 25.3.2004
Где: Новосибирск

Репутация: 3
Всего: 5



Opr
Практика показывает, что в базе теги действительно лучше хранить в виде, скажем, <!#Cite>цитата</!#Cite>. Почему? Потому что какой бы быстрый не был PCRE, str_replace все равно быстрее smile Другое дело, что bbcode обрабатывать нужны реги, но тут у меня свое субьективное мнение - в bbcode параметры все лучше исключить к чертям. Потому что обычно люди допускают ошибку с обработкой вложенных тегов bbcode. В общем предлагаю так:

Из поля ввода в базу:
Код

$txt=str_replace("[quote]","<!#Cite>",$txt);
$txt=str_replace("[/quote]","</!#Cite>",$txt);

Из базы на экран:
Код

$txt=str_replace("<!#Cite>","<div class=\"cite\">",$txt);
$txt=str_replace("</!#Cite>","</div>",$txt);


Да, ну и обратно - из базы в поле редактирования - обратить первый код.

Это сообщение отредактировал(а) Axxent - 14.2.2005, 05:27
PM MAIL ICQ   Вверх
IZ@TOP
Дата 14.2.2005, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Axxent, а теперь представь что я ввел только одну [quote] а закрывающую не поставил - что произойдет? Если использовать регулярные выражения, то такой ошибки не будет, он заменит только парные бб_коды.


PARROT, думаю что лучше всего подойдет вариант Opr'a.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 14.2.2005, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Попробую. Если что буду кричать SOS!
Можно?
Я просто само выражение не доконца поняла.
Регулярными выражениями пользовалась, но помоему всего один раз, на курсах своего препода.
А он объясняет так классно, что лучше ничем не пользоваться кроме if и else.
smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Axxent
Дата 14.2.2005, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 25.3.2004
Где: Новосибирск

Репутация: 3
Всего: 5



IZ@TOP
А элементарная проверка при помощи strpos? Впрочем, со вложенными будут проблемы, это правда. smile Тем не менее остаюсь при своем мнении по поводу вида данных в БД.

Это сообщение отредактировал(а) Axxent - 14.2.2005, 12:42
PM MAIL ICQ   Вверх
Opik
Дата 14.2.2005, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Axxent
И ты гонишься за 0.0001 работы скрипта? Зачем? Это ведь делается только при добавлении и редактировании и всё. на показ это никак не влияет smile
PARROT
конечно можно, не вопрос smile
ссылки вдогонку:
http://detail.phpclub.net/article/regexp_1
http://detail.phpclub.net/article/regexp_2
PM MAIL Skype   Вверх
Axxent
Дата 14.2.2005, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 25.3.2004
Где: Новосибирск

Репутация: 3
Всего: 5



Opr
Уже не гонюсь smile А что касается вида данных в БД, то разбирать конкретные параметры имхо проще чем хтмл. Впрочем, решать как всегда разработчику.
PM MAIL ICQ   Вверх
Opik
Дата 14.2.2005, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Axxent
что мешает сделать те же комментарии перед тем или иным тегом?
PM MAIL Skype   Вверх
PARROT
Дата 14.2.2005, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Я кричу SOS!
Не поняла ничего, вот что получается, но не работает, просьба исправить и желательно объяснить:

Код

<?php
ob_start();
error_reporting(0);
?>
<html>
<head>
<link rel="stylesheet" href="styles.css">
<script language=JavaScript src="anim.js"></SCRIPT>
</head>
<body>
<?
$db=mysql_pconnect("localhost","reviews","1538733");
mysql_select_db("reviews");
$name=$_POST['name'];
$txt=$_POST['txt'];
$capt=$_POST['capt'];
if(isset($send) and $send=="Цитировать")
{
if (mysql_num_rows(mysql_query("select count(id) from review where parent=".intval($idp)))==0)
{
echo "Такой темы нет!";
}
if (empty ($mess) | empty ($mess1) | empty ($mess2)){
 echo "<center><font color=red>Не заполнены обязательные поля!</font></center>";
}
else
{
if ((isset($smil)) OR (!isset($smil)))
{
$mess=$mess1.$mess2;
$data=date("Y.m.d G:i:s");
mysql_query ("UPDATE review SET `txt`='$mess' WHERE id=$idp");
header('location: comment.php?idp='.$idp);
ob_end_flush();
exit;
}
}
}
?>
<table width=700 height=400 align=center height=210 style="border:1 solid blue;border-collapse:collapse"  bgcolor=#EDE9ED>
<tr>
<td colspan=2 bgcolor=#C4CDEE class=2 style="padding-left:20">Введите сообщение:</td>
</tr>
<tr>
<td valign=top>
<table height=300  align=center style="border:1 solid blue;border-collapse:collapse"  bgcolor=white>
<tr align=center>
<?
for($i=1;$i<=4;$i++)
{
?>
<td><img src='smile/<? echo"$i.gif"?>' onClick="smile('#<?=$i?>')" onMouseover="this.style.cursor='hand'" onMouseout="this.style.cursor=''"></td>
<?
}
?>
</tr>
<tr align=center>
<?
for($i=5;$i<=8;$i++)
{
?>
<td><img src='smile/<? echo"$i.gif"?>' onClick="smile('#<?=$i?>')" onMouseover="this.style.cursor='hand'" onMouseout="this.style.cursor=''"></td>
<?
}
?>
</tr>
<tr align=center>
<?
for($i=9;$i<=12;$i++)
{
?>
<td><img src='smile/<? echo"$i.gif"?>' onClick="smile('#<?=$i?>')" onMouseover="this.style.cursor='hand'" onMouseout="this.style.cursor=''"></td>
<?
}
?>
</tr>
<tr align=center>
<?
for($i=13;$i<=16;$i++)
{
?>
<td><img src='smile/<? echo"$i.gif"?>' onClick="smile('#<?=$i?>')" onMouseover="this.style.cursor='hand'" onMouseout="this.style.cursor=''"></td>
<?
}
?>
</tr>
<tr align=center>
<?
for($i=17;$i<=20;$i++)
{
?>
<td><img src='smile/<? echo"$i.gif"?>' onClick="smile('#<?=$i?>')" onMouseover="this.style.cursor='hand'" onMouseout="this.style.cursor=''"></td>
<?
}
?>
</tr>
</table>
</td>
<td valign=top>
<?
$txt=@mysql_query("SELECT txt FROM review WHERE id=$idp");
for($i=0;$i<mysql_num_rows($txt);$i++)
{
$mess=mysql_fetch_row($txt);
$mess[0]= preg_replace("/\[quote\](.*)\[\/quote\]/i", "<table border><tr><td class=\"quote\">\\1</td></tr></table>", $mess[0]);
}

?>
<Form name=myform action="quote.php" Method="POST">
<table width=400 height=400 cellpadding="0" cellspacing="0" align="center"  border bordercolor=blue style=border-collapse:collapse bgcolor=white>
<tr>
<td>
<table cellpadding="0" cellspacing="0" align="center"  bgcolor=white>
<tr>
<td colspan=2 align=right><TextArea id=txtmes name="mess1" rows=15 cols=36></TextArea></td>
</tr>
<tr>
<td colspan=2 bgcolor=#C4CDEE class=2 style="padding-left:20">Цитируемое сообщение</td>
</tr>
<tr>
<td colspan=2 align=right><TextArea id=txtmes name="mess2" rows=15 cols=36><? echo $mess[0]; ?></TextArea></td>
</tr>
</table>
</td>
</tr>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class=1 valign=top style="padding-left:30">Иконки к сообщению:</td>
<td valign=top>
<table height=10 align=center>
<tr>
<?
for($i=21;$i<=26;$i++)
{
echo "<td><img src='smile/$i.gif' align=absmiddle><input type=radio name=smil value=$i></td>";
}

?>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan=2 style="padding-left:350" bgcolor=#C4CDEE><Input Type="submit" name=send Value="Цитировать" style="cursor:hand"></td>
</tr>
<input type=hidden name=idp value=<? echo $idp; ?>>
</Form>
</table>
<br>
<table width=700 align=center  border bordercolor=blue style=border-collapse:collapse cellpadding="0" cellspacing="0">
<tr>
<td valign=top>
<table width=700 align=center cellpadding="0" cellspacing="0"  bgcolor=#EDE9ED  border bordercolor=white style=border-collapse:collapse cellpadding="0" cellspacing="0">
<tr>
<td colspan=2 style='padding-left:20' class=1>Последние 10 сообщений [ в обратном порядке ]</td>
</tr>
<tr>
<td  width=500 style='padding-left:10' colspan=2><? echo $mas[3]; ?></td>
</tr>
<?
$res1=@mysql_query("SELECT id,data,caption,txt,name,parent,cnt,smile FROM review WHERE parent='$idp' order by id desc limit 10");
for($i=0;$i<mysql_num_rows($res1);$i++)
{
$mas_com=mysql_fetch_row($res1);
$mas_com[0]=stripslashes($mas_com[0]);
$mas_com[1]=stripslashes($mas_com[1]);
       $mas_com[2]=stripslashes($mas_com[2]);
       $mas_com[4]=stripslashes($mas_com[4]);
       $mas_com[7]=stripslashes($mas_com[7]);
       $mas_com[3]=ereg_replace("#([0-9]+)","<img src='smile/\\1.gif'>",$mas_com[3]);
       if ($mas_com[7]==0) $smile="";
       else $smile="<img src=smile/$mas_com[7].gif>";
?>
<tr>
<td colspan=2 bgcolor=#C4CDEE width=700 align=right class=1>&nbsp;</td>
</tr>
<tr>
<td width=200 align=center rowspan=2><b><? echo $mas_com[4]; ?></b></td>
<td  width=500 style='padding-left:10'><? echo $smile; ?><u><b>дата</b></u> <? echo $mas_com[1]; ?></td>
</tr>
<tr>
<td  width=500 style='padding-left:10' colspan=2><? echo $mas_com[3]; ?></td>
</tr>
<?
}
?>
</table>
</td>
</tr>
</table>



</body>
</html>
<?php
ob_end_flush();
?>


smile smile smile

Ну вот так цитирует, но выводит цитируемое сообщение сверху и без бордюра.
Такое впечатление, что оно не цитирует вовсе, а редактирует.

Это сообщение отредактировал(а) Opr - 15.2.2005, 00:11


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 15.2.2005, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



может <table border=1>?
PM MAIL Skype   Вверх
PARROT
Дата 15.2.2005, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата(Opr @ 15.2.2005, 00:14)
может <table border=1>?

Незнаю, но помоему я так пробовала, только тут не исправила.
Пойду смотреть.
smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
PARROT
Дата 15.2.2005, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Ну вообщем я нашла решение, может быть более примитивное, но мне более, пока, понятное.
Без регулярок (не от того, что я их поняла, как раз наоборот).
Если $mess2 запихать в таблицу, со всеми вытекающими отсюда последствиями с <br> на конце, после $mess=$mess1.$mess2;
И записать все это в базу, только наверно нужно не апдейтить базу, а записывать это сообщение, вместе с цитатой, как новое, ну можно еще дату цитаты, в таблицу вписать к $mess2. (что наверно лучше делать для редактированного сообщения (отредактировал Вася 14.56)).
Это уже по желанию.
Тогда точно все работать будет.
Тяжелый, но интересный путь, написание форума.
Спасибо!
Как вам мое решение задачи?

Про border=1 забыла:
насколько я помню, этот параметр совсем не обязателен =1, если написать просто border, бордер будет, но стандартный конечно.

Это сообщение отредактировал(а) PARROT - 15.2.2005, 14:37


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
PARROT
Дата 16.2.2005, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Проблема остается до сих пор открытой.
Что мой вариант, что ваш, правильно не работает.
Мой на этапе добавления 3 цитаты, начинает глючить, а заключается это в том, что цитата есть, но она не выводится из базы.
Ваша версия добавляет в базу, но выводит без бордюра и никак с этим не справится.
Как он ведет себя дальше не отследить.
Хотелось бы решить эту проблему, покажите пожалуйста работающий вариант (скрипт).
И как все таки сообщение с цитатой должно выводиться из базы?
Меня вчера эта тема довела до слез, наверно от бессилия.
smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Axxent
Дата 16.2.2005, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 25.3.2004
Где: Новосибирск

Репутация: 3
Всего: 5



Цитата
Ваша версия добавляет в базу, но выводит без бордюра и никак с этим не справится.

Если версия работает, то по части оформления глянь в стили - может чего не так с классом quote? Или допиши туда (в стили) что-нибудь вроде border: 1px solid #444444;


Opr
Ничего не мешает. Ладно, проехали smile
PM MAIL ICQ   Вверх
PARROT
Дата 16.2.2005, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата(Axxent @ 16.2.2005, 18:30)
Цитата
Ваша версия добавляет в базу, но выводит без бордюра и никак с этим не справится.

Если версия работает, то по части оформления глянь в стили - может чего не так с классом quote? Или допиши туда (в стили) что-нибудь вроде border: 1px solid #444444;


Opr
Ничего не мешает. Ладно, проехали smile

Проехали будет тогда, когда я справлюсь,(или с помощью вас), найду выход из создавшейся ситуации.
Все равно спасибо! Завтра гляну.
Я просто не могу кинуть и идти дальше.
Я баран. smile
Может еще какие варианты есть?


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 17.2.2005, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



PARROT, думаю что в твоем случае больше подойдет вариант предлодженный Axxent.
Заносим в базу цитаты таким образом:
Код
<div class="quote">текст цитаты</div><!-- endquote -->

Класс quote определяем в таблице стилей:
Код
div.quote {
   border-width:1px;
   border-style:solid;
   border-color:#CCCCCC;
   padding:10px;
}


При редактировании, меняем тег div.quote на ББ_Код:
Код
// ... в $editMessage находится текст сообщения который нуждается в замене цитат.
// мы еще можем сделать небольшую примочку для экономии процессорного времени.
// то есть, проверять на наличие цитат
if(strpos($editMessage, '<div class="quote">')) {
   $editMessage = str_replace(
       array('<div class="quote">', '</div><!-- endquote -->'),
       array('[quote]', '[/quote]'),
       $editMessage
   );
}
// ...



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 17.2.2005, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Спасибо, IZ@TOP!
Ты!!!
Настоящий, стоящий учитель, цены тебе нет!
Только я попробую это позже.
Купила новый комп, устанавливаю систему и копирую свои файлы.

smile

Неудалось изменить второй раз репутацию IZ@TOP, так вот добавляю тут:
Знаешь и ждешь, что он придет, исправит, подскажет, это того стоит.

Это сообщение отредактировал(а) PARROT - 17.2.2005, 22:12


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 18.2.2005, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



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


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 25.2.2005, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Сложная оказалась задача с цитированием, кое-как справилась.
Немного по другому, нужно проверить, вечером выложу в инет.
И с редактированием тоже возникли, почти такие же проблемы.
Ну вообщем намучилась.
Остается написать регистрацию... smile

Ну вот, выложила свою новую версию форума, которая требует проверки.
Теперь все цитирует и редактирует, вроде как надо.
Но сколько там еще мелких недоделок, это ужас.
Сначала добью недоделки (чтобы уже не возвращаться), потом начну дописывать регистрацию.

Какие будут советы?

Потом, у меня тут еще одна мысль возникла, а если юзер не зарегистрирован, он все равно может создавать сообщения, но около его собщений, всегда добавляется, что он гость, а редактировать свои сообщения он может?
Или только добавлять новые?
А цитировать?
А редактировать?

Опять кучка вопросов...
smile

Это сообщение отредактировал(а) PARROT - 26.2.2005, 00:36


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
PARROT
Дата 5.3.2005, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Ну что, с редактированием я несколько решила вопрос. Временно правда.
Теперь редактировать юзеры могут только свои сообщения.
Пора начинать писать регистрацию, сегодня прикидывала как, в мозгах...
smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 6.3.2005, 02:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



PARROT
выложи мысли, мы подскажем что, и как сделать лучше smile
PM MAIL Skype   Вверх
PARROT
Дата 6.3.2005, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Начну писать, что будет не понятно спрошу.


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
PARROT
Дата 6.3.2005, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Начала писать, почти сразу возникли проблемы.
Регистрация проходит нормально, но на страницу не войти, пишет неправильный пароль или логин и все тут. smile
Вот код регистрации:
Код

<?
if(isset($send) and $send=="зарегистрироваться")
{
$name=$_POST['name'];
$meil=$_POST['meil'];
$log=$_POST['log'];
$par=$_POST['par'];
$db=mysql_pconnect("localhost","grolvasp_disc","1538733");
       mysql_select_db("grolvasp_disc");
mysql_query ("INSERT INTO reg VALUES ('', '$name', '$meil', '$log', '". md5($par). "')");
header('location: open.php');
ob_end_flush();
exit;
}
?>
<form action="reg.php"  Method="POST">
<table width=400>
<tr>
<td>имя</td>
<td><input type=text name=name></td>
</tr>
<tr>
<td>e-mail:</td>
<td><input type=text name=meil></td>
</tr>
<tr>
<td>логин</td>
<td><input type=text name=log></td>
</tr>
<tr>
<td>пароль</td>
<td><input type=password name=par></td>
</tr>
<tr>
<td colspan=2 align=center><input type=submit name=send value="Зарегистрироваться"></td>
</tr>
</table>
</form>


Вот код для входа:
Код

<?
if(isset($send) and $send=="войти")
{
$log=$_POST['log'];
$par=$_POST['par'];
$db=mysql_pconnect("localhost","grolvasp_disc","1538733");
       mysql_select_db("grolvasp_disc");
$login_result = mysql_query("SELECT id_r FROM reg WHERE login='$log' AND parol='". md5($par). "'");
if (!mysql_error() && @mysql_num_rows($login_result)==1)
{
 setcookie($COOKIE_LOGIN_NAME, $log, time()+3600, $COOKIE_PATH);
 setcookie($COOKIE_PASSW_NAME, $par, time()+3600, $COOKIE_PATH);
 header("Location: index.php");
 exit;
 }
elseif (!mysql_error()) {
 print ("Неверный пароль или логин.");
 }
else
 print (mysql_error());

}
?>
<form>
<table width=200>
<tr>
<td>логин</td>
<td><input type=text name=log></td>
</tr>
<tr>
<td>пароль</td>
<td><input type=password name=par></td>
</tr>
<tr>
<td colspan=2 align=center><input type=submit name=send value="войти"></td>
</tr>
</table>
</form>


Укажите на ошибки пожалуйста. smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 8.3.2005, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Код

$name=$_POST['name'];
$meil=$_POST['meil'];
$log=$_POST['log'];
$par=$_POST['par'];

делай проверку на безопастность вводимых данных для БД smile
т.е:
$name=mysql_escape_string($_POST['name']);
и т.д.
Код

setcookie($COOKIE_LOGIN_NAME, $log, time()+3600, $COOKIE_PATH);
setcookie($COOKIE_PASSW_NAME, $par, time()+3600, $COOKIE_PATH);

setcookie("login", $log, time()+3600);
setcookie("password", md5($par), time()+3600);
первое аргумент - имя куки, второй - значение, третий время жизни..
+ я добавил md5 в куку пароля, не надо его хранить открытым smile
Код

if(isset($send) and $send=="войти")

Ну если быть "правильным", то:
Код

if(isset($_POST['send']) and $_POST['send']=="войти")

PM MAIL Skype   Вверх
PARROT
Дата 8.3.2005, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Понятно, а в чем моя ошибка была?
Почему пароль не принимается?
Выдается сообщение Неправильный пароль или логин?
Когда мы выбираем логин=логину пароль=паролю, пароль в каком формате должен быть запрошен если
он хранится в MD5()?
Как много неизведанного, но хочется узнать!


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 8.3.2005, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Небольшие замечания по форме регистрации и оформлении кода
Код
<?
if(isset($_POST['send'])) { // Думаю что в проверке на значение переменной кнопки нет необходимости. Лишний код и при error_reporting(E_ALL) должен выдать ошибку в случае если форма не отправлена.

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

$db = mysql_pconnect("localhost", "grolvasp_disc", "1538733");
mysql_select_db("grolvasp_disc");

mysql_query ("INSERT INTO reg VALUES (NULL, '{$_POST['name']}', '{$_POST['meil']}', '{$_POST['log']}', '".md5($_POST['par'])."')");

header('location: open.php');
ob_end_flush(); // В начале файла ведь есть ob_start?
exit;
}
?>

<form action="reg.php"  Method="POST">
<table width=400>
 <tr>
  <td>имя</td>
  <td><input type=text name=name></td>
 </tr>
 <tr>
  <td>e-mail:</td>
  <td><input type=text name=meil></td>
 </tr>
 <tr>
  <td>логин</td>
  <td><input type=text name=log></td>
 </tr>
 <tr>
  <td>пароль</td>
  <td><input type=password name=par></td>
 </tr>
 <tr>
  <td colspan=2 align=center><input type=submit name=send value="Зарегистрироваться"></td>
 </tr>
</table>
</form>

Плюс ко всему, советую обрамлять атрибуты HTML тегов в кавычки.

В общем кое какие недоработки есть, но мне кажется что все должно работать.
Код
<?
if(isset($_POST['send'])) {

$db = mysql_pconnect("localhost","grolvasp_disc","1538733");
mysql_select_db("grolvasp_disc");

$login_result = mysql_query("SELECT id_r FROM reg WHERE login = '".
 mysql_escape_string($_POST['log'])".' AND parol = '".md5($_POST['par'])."'");

if (@mysql_num_rows($login_result) > 1) {

setcookie($COOKIE_LOGIN_NAME, md5($_POST['log'].'main_secret_word'), time() + 3600, $COOKIE_PATH);
setcookie($COOKIE_PASSW_NAME, md5($_POST['par'].'main_secret_word'), time() + 3600, $COOKIE_PATH);
// Интересно правда откуда берется COOCKIE_LOGIN_NAME и COOKIE_PASWD_NAME, как и COOKIE_PATH...?
// md5($_POST['par'].'main_secret_word' необходимо для предотвращения расшифровки имени или пароля методом подбора.
// если разумеется взломщик не узнает это самое main_secret_word.
// Можно так же генерировать это main_secret_word и хранить его в базе, и при проверке подставлять.

header("Location: index.php");
exit;

} elseif (mysql_errno() > 0) {
print (mysql_error());
} else {
print ("Неверный пароль или логин.");
}
?>
<form method="post">
<table width=200>
 <tr>
  <td>логин</td>
  <td><input type=text name=log></td>
 </tr>
 <tr>
  <td>пароль</td>
  <td><input type=password name=par></td>
 </tr>
  <tr>
  <td colspan=2 align=center><input type=submit name=send value="войти"></td>
 </tr>
</table>
</form>



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 9.3.2005, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



IZ@TOP, проверь пожалуйста файл аунтификации пользователей, если надо исправь.
Код

<?
$db=mysql_pconnect("localhost", "grolvasp_disc", "1538733");
mysql_select_db("grolvasp_disc");

$out = mysql_query("SELECT id_r FROM reg WHERE login='".mysql_escape_string($_COOKIE['log']."' and par = '".
        mysql_escape_string($_COOKIE['par'])."'"); 
// Вроде я так понял что у тебя и пароль тоже записывается в куки, причем в md5?
// тогда делаем проверку и на пароль. Иначе я допустим могу зарегестрироваться в твоей системе, 
// после чего отредактировав cookie на своем компьютере (изменив там своя имя на имя, допустим PARROT), 
// писать под чужим именем.


if (@mysql_num_rows($out) > 0) {

         // $auth=mysql_fetch_row($out); #??? Немного не понял смысл этой строки. В ней нет необходимости, 
         // так как переменная auth все равно примет значение "OK", и данные переданные ей будут потеряны.
         $auth="OK"; // Может быть лучше воспользоваться будевым значением? т.е. $auth = true;

} else {
         header("Location: reg.php");
         exit;
}
?>

smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 10.3.2005, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Подправил smile


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 10.3.2005, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Спасибо, IZ@TOP!
Код на вход пользователей исправила, теперь работает:
Код

<?
if(isset($send) and $send=="войти")
{
$log=$_POST['log'];
$par=$_POST['par'];
$db=mysql_pconnect("localhost","grolvasp_disc","1538733");
        mysql_select_db("grolvasp_disc");
$login_result = mysql_query("SELECT id_r,parol FROM reg WHERE login='$log'");
if (!mysql_error() && @mysql_num_rows($login_result)==1) 
{
  $prl=mysql_fetch_row($login_result);
  if ($prl[1]==md5($par)) {
    setcookie('log', $log, time()+3600);
    setcookie('par', $par, time()+3600);
    header("Location: index.php");
    exit;
    }
  else{
  print ("Неправильный пароль или логин.");
  }
  }
elseif (!mysql_error()) {
  print ("Неправильный пароль или логин.");
  }
else
  print (mysql_error());

}
?>

Я только не пойму, зачем два раза печатать вот эту строку Неправильный пароль или логин?

Это сообщение отредактировал(а) PARROT - 10.3.2005, 19:00


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 11.3.2005, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



PARROT, подожди, я не говорил что надо дважды его печатать... и лучше логин с паролем проверять одновременнов SQL запросе. + Проверку делать не при помощи mysql_error, а при помощи mysql_num_rows, вернет 1 - значит авторизовался, 0 - значит нет таких логина или пароля.
А я вот что писал:

Код

<?
if(isset($_POST['send'])) {

$db = mysql_pconnect("localhost","grolvasp_disc","1538733");
mysql_select_db("grolvasp_disc");

$login_result = mysql_query("SELECT id_r FROM reg WHERE login = '".
 mysql_escape_string($_POST['log'])".' AND parol = '".md5($_POST['par'])."'");

if (@mysql_num_rows($login_result) != 0) {

setcookie($COOKIE_LOGIN_NAME, md5($_POST['log'].'main_secret_word'), time() + 3600, $COOKIE_PATH);
setcookie($COOKIE_PASSW_NAME, md5($_POST['par'].'main_secret_word'), time() + 3600, $COOKIE_PATH);
// Интересно правда откуда берется COOCKIE_LOGIN_NAME и COOKIE_PASWD_NAME, как и COOKIE_PATH...?
// md5($_POST['par'].'main_secret_word' необходимо для предотвращения расшифровки имени или пароля методом подбора.
// если разумеется взломщик не узнает это самое main_secret_word.
// Можно так же генерировать это main_secret_word и хранить его в базе, и при проверке подставлять.

header("Location: index.php");
exit;

} elseif (mysql_errno() > 0) {
print (mysql_error());
} else {
print ("Неверный пароль или логин.");
}
?>
<form method="post">
<table width=200>
 <tr>
  <td>логин</td>
  <td><input type=text name=log></td>
 </tr>
 <tr>
  <td>пароль</td>
  <td><input type=password name=par></td>
 </tr>
  <tr>
  <td colspan=2 align=center><input type=submit name=send value="войти"></td>
 </tr>
</table>
</form> 
 



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 9.11.2005, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Сорри, пришлось поднять старый свой пост, так как обнаружилась такая проблема:
В последней колонке обновление даты и имени, дата обновляется на последнюю добавленную пользователем, а вот имя не меняется.
Понять не могу, почему. Получается что работает до определенного момента, а именно добавив 2 ответа в топик, имя добавившего 3 ответ в пост не изменяется.
Ошибки не дает.
Чтобы это могло быть?
Код

<?
require("aut.php");
if ($auth=="OK") {
        echo "Пользователь: ".$imya;
}
?>
<html>
<head>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<table width=900>
<tr>
<td align=right><a href="add.php"><img src="img/nt.gif" border=0></a></td>
</tr>
</table>
 <table width=900 border align=center border bordercolor=blue style=border-collapse:collapse cellpadding=0 cellspacing=0>
 <tr>
 <td>
 <table width=900 border align=center  bgcolor=#EDE9ED border bordercolor=white style=border-collapse:collapse cellpadding=0 cellspacing=0>
 <tr>
 <td colspan=6 bgcolor=#C4CDEE class=2 style="padding-left:20"> Тема</td>
 </tr>
 <tr>
 <td width=20 align=center class=1>&nbsp;</td>
 <td width=300 align=center class=1>Темы форума</td>
 <td width=200 align=center class=1>Автор</td>
 <td width=85 align=center class=1>Ответов</td>
 <td width=85 align=center class=1>Просмотров</td>
 <td width=200 align=center class=1>Обновление</td>
 </tr>
<?
if (!isset($s)) $s=0;
$res2=@mysql_query("SELECT id,data,caption,txt,name,parent,cnt,smile FROM review WHERE parent=0 order by id desc limit $s,10");
for($i=0;$i<mysql_num_rows($res2);$i++)
{
        $mas=mysql_fetch_row($res2);
        $mas[1]=stripslashes($mas[1]);
        $mas[2]=stripslashes($mas[2]);
        $mas[4]=stripslashes($mas[4]);
        $mas[7]=stripslashes($mas[7]);
        $res3=mysql_query("SELECT id FROM review WHERE parent=".$mas[0]) or die(mysql_error());
        $col=mysql_num_rows($res3);
$add=mysql_query("SELECT MAX(data) FROM review WHERE parent=".$mas[0]) or die(mysql_error());
$arr_add=mysql_fetch_row($add);
if ($arr_add[0]=='') $arr_add[0]=$mas[1];
echo "SELECT MAX(name) FROM review WHERE parent=".$mas[0];
$name=mysql_query("SELECT MAX(name) FROM review WHERE parent=".$mas[0]) or die(mysql_error());
$name_add=mysql_fetch_row($name);
if ($name_add[0]=='') $name_add[0]=$mas[4];
if ($mas[7]==0) $smile="";
else $smile="<img src=smile/$mas[7].gif>";

   echo "<tr><td align=center>$smile</td>

<td align=center><a href=comment.php?idp=$mas[0]>$mas[2]</a></td>
<td align=center>$mas[4]</td>
<td align=center><a href=\"javascript:window.open('answer.php?idp=$mas[0]','example','scrollbars,resizable,width=200,height=300');void(0);\">$col</a></td>
<td align=center>$mas[6]</td>
<td align=center>$arr_add[0]<br><u><b>автор:</b></u> $name_add[0]</td>
</tr>";
}
 echo "</table></td></tr></table><br>";

$res4=mysql_query("select count(id) from review WHERE parent=0");
$num=mysql_fetch_row($res4);

$numstr=ceil($num[0]/10);
echo "<table><tr><td style=padding-left:30>Страницы: ($numstr)</td>";
for($i=1; $i<=$numstr; $i++){
        $start=($i-1)*10;
        if ($start==$s OR ($s==0 AND $i==1));
        print "<td><a href=index.php?s=$start>[$i]</a></td> ";
}
?>
</tr></table>
</body>
</html>

Проверить можно тут: http://www.admin.traktora.spb.ru/
Почему он прекращает выбирать последнее имя не понятно, но присходит это даже если запрос проверить в РНРадмин.


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
PARROT
Дата 9.11.2005, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Спасибо, проблему решили с IZ@TOP smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 9.11.2005, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Код

mysql_query("SELECT data, name FROM review WHERE parent=".$mas[0]." order by data desc limit 1");

Думаю так можно убить двух кроликов разом. MAX предназначен для работы с числами.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Гитарист
Дата 9.1.2006, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 10.12.2005

Репутация: нет
Всего: нет



Мда, весь топ просматрел!!! Приятно, что знающие люди встают на наше место и не отмахиваются от вопросов, а четко, локонично, методично объясняют!!!

Только я начал PHP изучать 2 дня назат и мне многое не понятно, но как только я втянусь, я то же буду вопросы задавать!!! Можно???

Заранее спасибо!!!


С уважением гитарист!!!
PM MAIL   Вверх
PARROT
Дата 2.3.2006, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Ну вот продолжаю:
Пока вместо регистрации решила сделать голосование для своего форума, есстественно как у нас на Винград smile
Вопрос:
Мне не совсем понятен алгоритм хранения голосов.
Где их хранить? В файле не хочется, в базе, тогда как? Если максимум пунктов опроса может быть 25.
Делать отдельую таблицу для голосования, со связью?
Надеюсь с выводом не возникнет особых трудностей smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.3943 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.