| |
|
|
| | Каким образом можно оформить на странице ссылку, чтобы эта ссылка "вытягивала" информацию из базы данных?
Пробовала делать вот так:
На странице, где должна быть ссылка писала:
<?php
$auto="auto.php";
print "<a href=\"$auto"> Покупка авто</a><br>\n"
?>
И существует файл auto.php, который вытягивает информацию из базы.
Может, как-то по-другому? Где можно про это почитать? Заранее всем спасибо. | |
| |
|
|
| |
|
|
| |
для: Лена
(19.12.2007 в 10:13)
| | | можно писать и прямо <a href=auto.php >Покупка авто</a><br>
php-язык для написания ссылок Вам может понадобиться, если ссылки у Вас разные,например подставляют из БД код марки/модели автомобиля (в параметрах ссылки) или его название (в текстовой части ) | |
| |
|
|
| |
|
|
| |
для: Trianon
(19.12.2007 в 10:18)
| | | И еще два вопроса:
1. Если я хочу, чтобы на странице, кроме заголовка, вытягивался и первый абзац текста, который есть в базе, для этого нужно написать код? Или все делается с помощью обычного html?
2. Если у меня есть разные рубрики, я хочу, чтобы при нажатии на рубрику посреди страницы высвечивалось все, что есть в этой рубрике, мне для этого нужно написать отдельный php-файл и включить его в сценарий menu.php? А как тогда сделать так, чтобы названия рубрик по-прежнему остались слева? | |
| |
|
|
| |
|
|
| |
для: Лена
(19.12.2007 в 10:32)
| | | 1. Да. HTML не может "вытягивать" данные из базы.
2. Получение контента рубрик у вас может осуществляться одним скриптом, формирование меню другим, а так же "шапки" и "подвала" страницы другими скриптами. Вы их можете подключать в индексном файле, причем шапка и контент рубрики могут меняться в зависимости от параметров запроса полученных из меню. Меню, контент рубрик и прочее на странице выводится в определенные для этого области страницы, в простейшем случае это таблица. При запросах страница будет перегружаться с новым контентом, но их положение изменяться естественно не будет. | |
| |
|
|
| |
|
|
| |
для: sim5
(19.12.2007 в 15:42)
| | | Хотя бы намекните, пожалуйста, как можно вытянуть из базы первый абзац текста после заголовка? Получается при создании таблицы в базе данных нужно заранее создавать отдельную ячейку, где будет храниться только один абзац и потом писать код типа SELECT, где будет вытягиваться определенный массив - заголовок статьи - первый абзац, дата создания и т.д. | |
| |
|
|
| |
|
|
| |
для: Лена
(20.12.2007 в 15:29)
| | | Ну не знаю как вы пишите статьи, и что подразумевается под абзацем. Например, если каждый абзац у вас заключен в HTML теги <P></P> и вся ваша страница сохраненная в базе это HTML код, то это одно. Если же это просто текст, а каждый абзац разделен двойным переводом строки (два раза нажали ENTER), например, то это другое. Может потребуется разбор ваших статей с помощью регулярных выражений, а может простой функции explode() хватит.
Если вы статьи формируете как набор абзацев, которые пишутся с перерывами во времени, а уже потом собираете из них страницу - то вполе возможно и будет разумным иметь таблицу с абзацами, у которых будет ID, указано время создания, а также ID родителя - статьи, которой они пренадлежат.
В общем вам виднее должно быть, мне так кажется. :) | |
| |
|
|
| |
|
|
| |
для: sim5
(20.12.2007 в 15:41)
| | | я, можно сказать, в легком шоке. Узнаю о вещах, о которых даже не подозревала. Спасибо, что есть просветители, которые просвещают и не устают это делать! После такого торжественного вступления перейду к делу :)))
1. Даже не знала, что статьи в базе можно сохранять в HTML-коде. А как тогда при выводе в броузер убирать теги <P></P> ? Тоже с помощью какой-то функции, которая блокирует эти теги?
2.Статьи пишу сразу, не собираю из отдельных абзацев. Каждый абзац отделяю ЕДИНИЧНЫМ переводом строки, не пойму, к чему нужен ДВОЙНОЙ?
3. Если разбирать абзац с помощью регулярных выражений, то рег выражения ищут символы в какой-то строке, а у меня же в абзаце несколько строк получается. Что в этом случае использовать?
explode() попробую | |
| |
|
|
| |
|
|
| |
для: Лена
(20.12.2007 в 16:10)
| | | 1. При выводе в браузер не надо убирать теги <P></P> - так отмечается параграф на странице.
2. Ну один раз ENTER значит один, тогда функцией explode() по этому переводу разделить всю статью можно. Но если вам где-то потребуется перевод строки в абзаце, и вы это сделаете, то после explode() у вас получится не тот результат, который вы могли бы ожидать.
3. Про регулярные выражение, это отдельная тема (а на форуме есть и отдельный раздел для этого), так как это будет зависеть от того, как оформлен текст ваших статей. И насколько это можно судить, в вашем случае можно обойтись и без них. Есть такая функция в РНР nl2br(), возможно ее и explode() хватит для вас. | |
| |
|
|
| |
|
|
| |
для: sim5
(20.12.2007 в 15:41)
| | | Я, можно сказать, в легком шоке. Узнаю о таких вещах, о которых ранее не подозревала. Хорошо, что есть просветители, которые просвещают и не устают это делать. Последние слова прошу расценивать не как способ подмазаться, а - от чистого сердца. После вступительной части перейдем к делу :))))
1. Если каждый абзац заключать в теги <P></P>, то что это мне даст и как потом выводить статью в броузер, чтобы теги не высвечивались? Существует какой-то способ блокировать эти теги?
2. Я оформляю абзацы ОДИНАРНЫМ переводом строки, а что дает ДВОЙНОЙ перевод? Это можно потом как-то использовать в регулярных выражениях?
3. Регулярные выражения, насколько я знаю, ищут символы в отдельной строке, а как вести поиск целого абзаца? Выделить его с помощью того же двойного перевода строки?
explode() попробую | |
| |
|
|
| |
|
|
| |
для: Лена
(20.12.2007 в 16:35)
| | | Дубль2, только запоздалый почему-то :) | |
| |
|
|
| |
|
|
| |
для: sim5
(20.12.2007 в 17:41)
| | | Всем спасибо, испытания нового XRumer'a с Искусственным Интелектом (ИИ) закончены. Еще раз всем спасибо! | |
| |
|
|
| |
|
|
| |
для: Лeнa_
(20.12.2007 в 18:06)
| | | Предыдущее сообщение - не мое и с ума сошла явно не я...
А по поводу nl2br() вот какие появились мысли:
<?php
$conn = mysql_connect ("localhost", "lena", "***")
or die ("Соединение не установлено!");
mysql_select_db ('news', $conn) or die ("База данных не выбрана");
/* выбираю из базы весь текст
$sql="SELECT `text` FROM `txt` WHERE id=4";
/* заменяю каждый перевод строки на <br>
$br=nl2br("$sql");
/* разбиваю текст на отдельные абзацы
$strarray=explode("<br>","$sql")
$first=
/* вытягиваю только первый абзац
if ($first):
/* А КАК ЕГО ВЫТЯНУТЬ?
else:
/* все остальное оставляю в базе
endif;
$result=mysql_query ($first, $conn);
$res=mysql_result($result,0,"text");
print $res;
?>
Страшно даже теперь читать, что мне напишут... :-))) | |
| |
|
|
| |
|
|
| |
для: Лена
(21.12.2007 в 11:59)
| | | > /* выбираю из базы весь текст
Это еще не выбор текста из базы данных. Только составление запроса.
> /* заменяю каждый перевод строки на <br>
> $br=nl2br("$sql");
В $sql до сих пор лежит только сам запрос "SELECT `text` FROM `txt` WHERE id=4" :)
Нужно заменять переводы строк в тексте, полученным из БД после успешного выполнения запроса функцией mysql_query() и получения результата mysql_result() или mysql_fetch_assoc() (либо какими-то другими).
> /* разбиваю текст на отдельные абзацы
> $strarray=explode("<br>","$sql")
В конце точку с запятой забыли. Функция nl2br() заменяет переводы строк на тег "<br />" (xHTML-вариант). Поэтому если уж разделитель должен быть не "<br>", а "<br />".
Кстати, а что Вы сделали с переменной $br? Уже забыли про нее? С $sql, повторюсь, до сих пор ничего (!) не произошло. Она так же принимает значение "SELECT `text` FROM `txt` WHERE id=4".
Зато Вы создали уже две переменные - $br и $strarray. И ничего с ними не делаете...
> /* все остальное оставляю в базе
:) Вы из базы данных оператором SELECT только считываете данные, т.е. их никто никуда не перемещает, поэтому немного неправильно применять слово "вытягивать". По крайней мере, оно Вас путает.
Я бы переписал Ваш код так:
<?php
mysql_connect('localhost', 'lena', '***') or die( 'Соединение не установлено' );
mysql_select_db('news') or die( 'База данных не выбрана' );
// Текст запроса
$sql = "SELECT `text` FROM `txt` WHERE `id` = 4;";
// Запрос
if( !($result = mysql_query($sql)) )
{
// Если запроса выполнился неудачно, то происходит остановка скрипта с
// выводом ошибки
die( 'Failure: ' . mysql_error() . ', File: ' . __FILE__ . ', Line: ' . __LINE__ );
}
// Важно делать проверку наличия возвращенных рядов
// перед использованием mysql_result()
if( mysql_num_rows($result) < 1 )
{
die( 'Записи не существует' );
}
if( $text == '' )
{
die( 'Текст отсутствует' );
}
// Получение текста после успешного выполнения запроса
// Третий аргумент в данном случае необязателен, т.к. столбец всего один - "text"
$text = mysql_result($result, 0);
// Получение hypertext'а
$text = htmlspecialchars( $text );
// Замена переводов строк на "<br />"
$text = nl2br( $text );
// Разбивка текста на абзацы (получается массив)
$text = explode('<br />', $text);
// Первый абзац
echo $text[0];
?>
|
| |
| |
|
|