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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Что случилось с тегом переноса и тегом отступа?
 
 автор: TetRiska   (03.10.2009 в 16:00)   письмо автору
 
 

Всем добрый день. Столкнулся с такой незадачкой. Изменяю в texarea текст ставлю пробелы перед началом абзаца и делаю соответственно абзацы, но эти переносы и абзацы не сохраняются в базе, при выводе текст сплошняком выдается :( А если явно использовать в тексте <br> и &nbsp;, то все ок...При редактировании никаких обработок кода не произвожу на очистку от хтмл кода.
Вот собственно код, сначала выводит текст, а потом после редактирования изменяет в базе.
<?php

$res 
mysql_query("SELECT * FROM `".PREFIX."index`")    
or die (
"Ошибка запроса №1 : adminpanel/index.php" mysql_error()); 
$catrow mysql_fetch_array($res);

$text $catrow['text'];

if(!empty(
$_POST['index']))
{
    
$res2 mysql_query("UPDATE `".PREFIX."index` SET text = '".$_POST['text']."'"
or die (
"Ошибка запроса №2 : adminpanel/index.php" mysql_error()); ;
    
header("location: ".DOMEN."/adminpanel");
}

?>

Прошу помощи.

  Ответить  
 
 автор: Trianon   (03.10.2009 в 16:05)   письмо автору
 
   для: TetRiska   (03.10.2009 в 16:00)
 

>Что случилось с тегом переноса и тегом отступа?

Вы их туда не поместили.

  Ответить  
 
 автор: neadekvat   (03.10.2009 в 16:09)   письмо автору
 
   для: Trianon   (03.10.2009 в 16:05)
 

Ну, если переносы надо nl2br() обработать, то пробелы, по-моему, все равно поудаляются, если только не заменить их на тот же &nbsp;
Или есть и для этого функция?)

  Ответить  
 
 автор: Trianon   (03.10.2009 в 16:41)   письмо автору
 
   для: neadekvat   (03.10.2009 в 16:09)
 

конечно. str_replace()

  Ответить  
 
 автор: neadekvat   (03.10.2009 в 21:43)   письмо автору
 
   для: Trianon   (03.10.2009 в 16:41)
 

> если только не заменить их на тот же &nbsp;
Значит, этот вариант?

  Ответить  
 
 автор: TetRiska   (03.10.2009 в 16:38)   письмо автору
 
   для: Trianon   (03.10.2009 в 16:05)
 

Я заметил что их там нет, вопрос почему.

  Ответить  
 
 автор: Trianon   (03.10.2009 в 16:43)   письмо автору
 
   для: TetRiska   (03.10.2009 в 16:38)
 

потому что их и не было там никогда.
textarea не работает ни с какими тегами.
textarea работает с plain-text, а не с html

  Ответить  
 
 автор: TetRiska   (03.10.2009 в 18:12)   письмо автору
 
   для: Trianon   (03.10.2009 в 16:43)
 

Ясно, ну тогда как написав такой текст:

   Добро пожаловать!
   Сегодня.............................мы планируем................................
открыть.....
   Ждем всех желающих.

Сохранить в базу и чтобы он так же вывелся на странице?

  Ответить  
 
 автор: Trianon   (03.10.2009 в 20:09)   письмо автору
 
   для: TetRiska   (03.10.2009 в 18:12)
 

>Ясно, ну тогда как написав такой текст:
>Сохранить в базу и чтобы он так же вывелся на странице?

а как бы Вы это сделали безо всякого редактирования, без всякой базы?

Есть такой текст.
   Добро пожаловать!
   Сегодня.............................мы планируем................................
открыть.....
   Ждем всех желающих.

Как вывести его на страницу?

  Ответить  
 
 автор: Diplex   (03.10.2009 в 22:00)   письмо автору
 
   для: Trianon   (03.10.2009 в 20:09)
 

TetRiska, ведь уже Вам посоветовали что сделать, используйте при выводе тег - nl2br()

Например:

<?
echo nl2br($text); // $text - это выводимый из бд текст
?>


p.s. Trianon - мучитель))))) Вечно вставляете мозги)))

  Ответить  
 
 автор: Trianon   (03.10.2009 в 22:47)   письмо автору
 
   для: Diplex   (03.10.2009 в 22:00)
 

По-моему, мучитель - тот, кто мозг выносит, а не вставляет.
Хотя, конечно, всё сильно зависит от того, в какой мере оценивающий оным прибамбасом укомплектован.

  Ответить  
 
 автор: TetRiska   (03.10.2009 в 23:33)   письмо автору
 
   для: Diplex   (03.10.2009 в 22:00)
 

Испробовал, ввожу такое в texarea.....

   Приветики мальчуганы!
   Как живете поижваете?
Со мной все супер!
   Пока

Все строки начинаются с абзаца, но строка "Со мной все супер!" не должна с абзаца начинаться :(

кстати поставил nl2br при апдейте.
$res2 = mysql_query("UPDATE `".PREFIX."index` SET text = '".nl2br($_POST['text'])."'") 
or die ("Ошибка запроса №2 : adminpanel/index.php" . mysql_error()); ;

  Ответить  
 
 автор: Trianon   (03.10.2009 в 23:38)   письмо автору
 
   для: TetRiska   (03.10.2009 в 23:33)
 

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

  Ответить  
 
 автор: TetRiska   (03.10.2009 в 23:44)   письмо автору
 
   для: Trianon   (03.10.2009 в 23:38)
 

Если сделать при выводе, то выводит все в строку...Если как сейчас, то при 1 апдейте добавляет тег абзаца, ну если не редактировать ничего, а клацать клацать, то много тегов переноса, но все таки редактировать если будут, то весь текст с тегами...И как сделать по разумному, чтобы ставило правильные теги?

  Ответить  
 
 автор: Trianon   (04.10.2009 в 00:02)   письмо автору
 
   для: TetRiska   (03.10.2009 в 23:44)
 

Вы не ответили на мой вопрос (03.10.2009 в 20:09)

  Ответить  
 
 автор: TetRiska   (04.10.2009 в 00:21)   письмо автору
 
   для: Trianon   (04.10.2009 в 00:02)
 

тот пример был написан просто так для наглядности

  Ответить  
 
 автор: Trianon   (04.10.2009 в 00:25)   письмо автору
 
   для: TetRiska   (04.10.2009 в 00:21)
 

В Вашем - может быть.
В моем вопросе - вовсе не для наглядности. Именно для того, чтобы вникнуть в суть процесса.

Но даже если вопрос для наглядности, и задан Вам - на него стоит отвечать, уж коль скоро Вы хотите, чтоб другие отвечали на Ваши вопросы.

  Ответить  
 
 автор: TetRiska   (04.10.2009 в 00:53)   письмо автору
 
   для: Trianon   (04.10.2009 в 00:25)
 

Начнем с начала...Когда я оформлял текст таким методом как указал, то выводит все в одну строку. Когда делаю при апдейте nl2br, то абзацы есть, но они везде.

  Ответить  
 
 автор: Trianon   (04.10.2009 в 01:09)   письмо автору
 
   для: TetRiska   (04.10.2009 в 00:53)
 

понятно. Отвечать не хотим.

  Ответить  
 
 автор: TetRiska   (04.10.2009 в 01:17)   письмо автору
 
   для: Trianon   (04.10.2009 в 01:09)
 

а Вы задайте вопрос как для первоклассника! а то не всегда уловишь полет вашей мысли.

  Ответить  
 
 автор: Trianon   (04.10.2009 в 01:25)   письмо автору
 
   для: TetRiska   (04.10.2009 в 01:17)
 

Вообще-то первоклассникам веб-девелопментом заниматься противопоказано.
Но если Вы ставите вопрос так - пожалуйста.

<?php 

$text 
"   Добро пожаловать!
   Сегодня.............................мы планируем................................
открыть.....
   Ждем всех желающих."
;


// .....

?>

допишите код, который просто выведет текст в браузер. В том виде, в котором, Вы его ожидаете увидеть.

  Ответить  
 
 автор: neadekvat   (04.10.2009 в 01:28)   письмо автору
 
   для: Trianon   (04.10.2009 в 01:25)
 

> Вообще-то первоклассникам веб-девелопментом заниматься противопоказано.
плюстыщапицот

  Ответить  
 
 автор: TetRiska   (04.10.2009 в 02:11)   письмо автору
 
   для: Trianon   (04.10.2009 в 01:25)
 

Так немного разобрался...Я применял nl2br не в том месте для вывода...Когда ввожу текст ставлю абзацы, они нормально срабатывают на странице, а когда ставлю пробелы, не действует, лишь когда ставлю &nbsp; принудительно, то отступы есть.

  Ответить  
 
 автор: neadekvat   (04.10.2009 в 02:22)   письмо автору
 
   для: TetRiska   (04.10.2009 в 02:11)
 

Я бы посоветовал
$text = str_replace (' ', '&nbsp;', $text);
Да боюсь, опять бредом назовут.

  Ответить  
 
 автор: TetRiska   (04.10.2009 в 02:35)   письмо автору
 
   для: neadekvat   (04.10.2009 в 02:22)
 

$index = str_replace(' ','&nbsp;',nl2br($catrow['text']));

Вывело в сплошную линию. Вызов в шаблоне такой <?php echo $index ?>

  Ответить  
 
 автор: neadekvat   (04.10.2009 в 02:40)   письмо автору
 
   для: TetRiska   (04.10.2009 в 02:35)
 


<?
if ( !empty($_POST['text']) ) {
  
$text $_POST['text'];
  
$text str_replace (' ''&nbsp;'$text);
  
$text nl2br($text);
  echo 
$text;
}
?>


И у меня вывело все переносы, все пробелы, которые я ввел в текстовое поле.

  Ответить  
 
 автор: TetRiska   (04.10.2009 в 02:54)   письмо автору
59.6 Кб
 
   для: neadekvat   (04.10.2009 в 02:40)
 

$res = mysql_query("SELECT * FROM `".PREFIX."index`")    or die ("Ошибка запроса №1 : index/index.php" . mysql_error()); 

$catrow = mysql_fetch_assoc($res);
  $text = $catrow['text'];
  $text = str_replace (' ', '&nbsp;', $text);
  $text = nl2br($text); 

в шаблоне вывел <?php echo $text ?> Результат на картинке. + как выглядит в редакторе оформление

  Ответить  
 
 автор: neadekvat   (04.10.2009 в 02:56)   письмо автору
 
   для: TetRiska   (04.10.2009 в 02:54)
 

А в базе то у вас текст как лежит?
Уж не сплошняком ли?

  Ответить  
 
 автор: TetRiska   (04.10.2009 в 02:57)   письмо автору
78.7 Кб
 
   для: neadekvat   (04.10.2009 в 02:56)
 

нет...вот как в базе. см скриншот

  Ответить  
 
 автор: neadekvat   (04.10.2009 в 02:59)   письмо автору
 
   для: TetRiska   (04.10.2009 в 02:57)
 

Мне так, для себя, поржать
А как скрипт должен узнать, где вы _хотите_ поставить дополнительные пробелы и сделать абзацы?
Обрабатывать надо тот текст, который только пришел из формы, а не тот, который вы сначала в бд занесли, а потом оттуда вытащили

  Ответить  
 
 автор: TetRiska   (04.10.2009 в 03:01)   письмо автору
 
   для: neadekvat   (04.10.2009 в 02:59)
 

я приложил скриншот

  Ответить  
 
 автор: neadekvat   (04.10.2009 в 03:04)   письмо автору
 
   для: TetRiska   (04.10.2009 в 03:01)
 

Что, вот так прямо и выглядит?
Вы там ручками ничего не подправляли, прежде чем скрин сделать?
У меня в бд все тексты лежат сплошняком друг к другу, и разделяют абзацы и лишние пробелы хтмл-тэги.

  Ответить  
 
 автор: TetRiska   (04.10.2009 в 03:06)   письмо автору
 
   для: neadekvat   (04.10.2009 в 03:04)
 

ручками ничего не правил..выше к сказанному...обрабатывать текст нужно при добавлении его в базу? .т.е забил текст со всеми абзацами и отступами и занес?

  Ответить  
 
 автор: neadekvat   (04.10.2009 в 03:10)   письмо автору
 
   для: TetRiska   (04.10.2009 в 03:06)
 

Вот ввели вы в форму текст
Отправили
Скрипт принял, обработал, поставил все пробелы и переносы
И только скрипт добавляет его в бд

  Ответить  
 
 автор: TetRiska   (04.10.2009 в 03:20)   письмо автору
 
   для: neadekvat   (04.10.2009 в 03:10)
 

Если я верно понял, то все же при добавлению в базу, то:
if(!empty($_POST['index']))
{
    $text = $_POST['text'];
    $text = str_replace (' ', '&nbsp;', $text);
    $text = nl2br($text); 
    $res2 = mysql_query("UPDATE `".PREFIX."index` SET text = '".$text."'") or die ("Ошибка запроса №2 : adminpanel/index.php" . mysql_error()); ;
    header("location: ".DOMEN."/adminpanel");
}

Отступы ставит на сайте, но абзацев нет..в базе есть оба тега, и через чур много тега отступа, после каждого слова ставит :(

  Ответить  
 
 автор: neadekvat   (04.10.2009 в 11:43)   письмо автору
 
   для: TetRiska   (04.10.2009 в 03:20)
 

А не проще ли оставить только
$text = nl2br($text); 

а в css сделать отсутпы для абзацов?

  Ответить  
 
 автор: TetRiska   (04.10.2009 в 13:25)   письмо автору
 
   для: neadekvat   (04.10.2009 в 11:43)
 

Допустим я сделал так, убрал
// $text = str_replace (' ', '&nbsp;', $text);

и в CSS добавил
 p {
 text-indent: 20px;
}

Тогда что поулчается, если не ставить принудительно текст в тег <p>Текст</p>, результата не увидим...а если поставим, то сам тег дает абзац неплохой + еще 1 абзац, выйдет не чоень красиво, а если убрать
   // $text = str_replace (' ', '&nbsp;', $text);
    //$text = nl2br($text); 

и проставить вручную тег <p>Текст</p> да красиво но 2 минуса:
- всеравно большой отступ
- нужно вручную прописывать тег

  Ответить  
 
 автор: ride   (04.10.2009 в 13:31)   письмо автору
 
   для: TetRiska   (04.10.2009 в 13:25)
 

у пробелов тоже есть минусы:
1. можно поставить 5, можно 6 или 7
2. нужно заботиться о замене пробелов на &nbsp; перед выводом

  Ответить  
 
 автор: TetRiska   (04.10.2009 в 13:41)   письмо автору
 
   для: ride   (04.10.2009 в 13:31)
 

перед выводом на страницу сделал
$text = str_replace (' ', '&nbsp;', $text); 

сплошной текст всеравно

  Ответить  
 
 автор: neadekvat   (04.10.2009 в 13:45)   письмо автору
 
   для: TetRiska   (04.10.2009 в 13:41)
 

И этот текст опять из бд?

  Ответить  
 
 автор: neadekvat   (04.10.2009 в 13:31)   письмо автору
 
   для: TetRiska   (04.10.2009 в 13:25)
 

Пользуйтесь редактором. Он за вас теги расставит.

  Ответить  
 
 автор: Николай2357   (04.10.2009 в 02:48)   письмо автору
 
   для: neadekvat   (04.10.2009 в 02:22)
 

Да боюсь, опять бредом назовут.
))) Вот простейшее решение задачи Trianon'a
<pre>
<?php  

$text 
"   Добро пожаловать! 
   Сегодня.............................мы планируем................................ 
открыть..... 
   Ждем всех желающих."


echo 
$text;
// ..... 

?>
</pre>

  Ответить  
 
 автор: neadekvat   (04.10.2009 в 01:27)   письмо автору
 
   для: TetRiska   (04.10.2009 в 01:17)
 

Да обработайте сначала текст, а потом в запроси пихайте
От того, что вы еще одну переменную введете, процессор не взорвется
$text = nl2br($_POST['text']);
sql = "UPDATE ... = '{$test}' WHERE...";

  Ответить  
 
 автор: Trianon   (04.10.2009 в 01:33)   письмо автору
 
   для: neadekvat   (04.10.2009 в 01:27)
 

>$text = nl2br($_POST['text']);
>sql = "UPDATE ... = '{$test}' WHERE...";
ну ведь чушь?

Зачем Вы человека с толку сбиваете - он и так едва плавает, а Вы явную лажу предлагаете.

  Ответить  
 
 автор: neadekvat   (04.10.2009 в 02:07)   письмо автору
 
   для: Trianon   (04.10.2009 в 01:33)
 

Если вы не про опечатку, то я вас не понимаю.
Да, пробелов не оставит, но строки то перенесет.

  Ответить  
Rambler's Top100
вверх

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