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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Гостевая книга, Это финиш, прошу помощи. 
:(
    Опции темы
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   Вверх
Страницы: (9) Все « Первая ... 5 6 [7] 8 9 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0883 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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