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

Форум PHP

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

 

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

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

тема: Ccылки с помощью php
 
 автор: Лена   (19.12.2007 в 10:13)   письмо автору
 
 

Каким образом можно оформить на странице ссылку, чтобы эта ссылка "вытягивала" информацию из базы данных?
Пробовала делать вот так:
На странице, где должна быть ссылка писала:
<?php
$auto="auto.php";
print "<a href=\"$auto"> Покупка авто</a><br>\n"
?>
И существует файл auto.php, который вытягивает информацию из базы.
Может, как-то по-другому? Где можно про это почитать? Заранее всем спасибо.

   
 
 автор: Trianon   (19.12.2007 в 10:18)   письмо автору
 
   для: Лена   (19.12.2007 в 10:13)
 

можно писать и прямо <a href=auto.php >Покупка авто</a><br>

php-язык для написания ссылок Вам может понадобиться, если ссылки у Вас разные,например подставляют из БД код марки/модели автомобиля (в параметрах ссылки) или его название (в текстовой части )

   
 
 автор: Лена   (19.12.2007 в 10:32)   письмо автору
 
   для: Trianon   (19.12.2007 в 10:18)
 

И еще два вопроса:
1. Если я хочу, чтобы на странице, кроме заголовка, вытягивался и первый абзац текста, который есть в базе, для этого нужно написать код? Или все делается с помощью обычного html?
2. Если у меня есть разные рубрики, я хочу, чтобы при нажатии на рубрику посреди страницы высвечивалось все, что есть в этой рубрике, мне для этого нужно написать отдельный php-файл и включить его в сценарий menu.php? А как тогда сделать так, чтобы названия рубрик по-прежнему остались слева?

   
 
 автор: sim5   (19.12.2007 в 15:42)   письмо автору
 
   для: Лена   (19.12.2007 в 10:32)
 

1. Да. HTML не может "вытягивать" данные из базы.
2. Получение контента рубрик у вас может осуществляться одним скриптом, формирование меню другим, а так же "шапки" и "подвала" страницы другими скриптами. Вы их можете подключать в индексном файле, причем шапка и контент рубрики могут меняться в зависимости от параметров запроса полученных из меню. Меню, контент рубрик и прочее на странице выводится в определенные для этого области страницы, в простейшем случае это таблица. При запросах страница будет перегружаться с новым контентом, но их положение изменяться естественно не будет.

   
 
 автор: Лена   (20.12.2007 в 15:29)   письмо автору
 
   для: sim5   (19.12.2007 в 15:42)
 

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

   
 
 автор: sim5   (20.12.2007 в 15:41)   письмо автору
 
   для: Лена   (20.12.2007 в 15:29)
 

Ну не знаю как вы пишите статьи, и что подразумевается под абзацем. Например, если каждый абзац у вас заключен в HTML теги <P></P> и вся ваша страница сохраненная в базе это HTML код, то это одно. Если же это просто текст, а каждый абзац разделен двойным переводом строки (два раза нажали ENTER), например, то это другое. Может потребуется разбор ваших статей с помощью регулярных выражений, а может простой функции explode() хватит.
Если вы статьи формируете как набор абзацев, которые пишутся с перерывами во времени, а уже потом собираете из них страницу - то вполе возможно и будет разумным иметь таблицу с абзацами, у которых будет ID, указано время создания, а также ID родителя - статьи, которой они пренадлежат.
В общем вам виднее должно быть, мне так кажется. :)

   
 
 автор: Лена   (20.12.2007 в 16:10)   письмо автору
 
   для: sim5   (20.12.2007 в 15:41)
 

я, можно сказать, в легком шоке. Узнаю о вещах, о которых даже не подозревала. Спасибо, что есть просветители, которые просвещают и не устают это делать! После такого торжественного вступления перейду к делу :)))
1. Даже не знала, что статьи в базе можно сохранять в HTML-коде. А как тогда при выводе в броузер убирать теги <P></P> ? Тоже с помощью какой-то функции, которая блокирует эти теги?
2.Статьи пишу сразу, не собираю из отдельных абзацев. Каждый абзац отделяю ЕДИНИЧНЫМ переводом строки, не пойму, к чему нужен ДВОЙНОЙ?
3. Если разбирать абзац с помощью регулярных выражений, то рег выражения ищут символы в какой-то строке, а у меня же в абзаце несколько строк получается. Что в этом случае использовать?
explode() попробую

   
 
 автор: sim5   (20.12.2007 в 16:19)   письмо автору
 
   для: Лена   (20.12.2007 в 16:10)
 

1. При выводе в браузер не надо убирать теги <P></P> - так отмечается параграф на странице.
2. Ну один раз ENTER значит один, тогда функцией explode() по этому переводу разделить всю статью можно. Но если вам где-то потребуется перевод строки в абзаце, и вы это сделаете, то после explode() у вас получится не тот результат, который вы могли бы ожидать.
3. Про регулярные выражение, это отдельная тема (а на форуме есть и отдельный раздел для этого), так как это будет зависеть от того, как оформлен текст ваших статей. И насколько это можно судить, в вашем случае можно обойтись и без них. Есть такая функция в РНР nl2br(), возможно ее и explode() хватит для вас.

   
 
 автор: Лена   (20.12.2007 в 16:35)   письмо автору
 
   для: sim5   (20.12.2007 в 15:41)
 

Я, можно сказать, в легком шоке. Узнаю о таких вещах, о которых ранее не подозревала. Хорошо, что есть просветители, которые просвещают и не устают это делать. Последние слова прошу расценивать не как способ подмазаться, а - от чистого сердца. После вступительной части перейдем к делу :))))
1. Если каждый абзац заключать в теги <P></P>, то что это мне даст и как потом выводить статью в броузер, чтобы теги не высвечивались? Существует какой-то способ блокировать эти теги?
2. Я оформляю абзацы ОДИНАРНЫМ переводом строки, а что дает ДВОЙНОЙ перевод? Это можно потом как-то использовать в регулярных выражениях?
3. Регулярные выражения, насколько я знаю, ищут символы в отдельной строке, а как вести поиск целого абзаца? Выделить его с помощью того же двойного перевода строки?
explode() попробую

   
 
 автор: sim5   (20.12.2007 в 17:41)   письмо автору
 
   для: Лена   (20.12.2007 в 16:35)
 

Дубль2, только запоздалый почему-то :)

   
 
 автор: Лeнa_   (20.12.2007 в 18:06)   письмо автору
 
   для: sim5   (20.12.2007 в 17:41)
 

Всем спасибо, испытания нового XRumer'a с Искусственным Интелектом (ИИ) закончены. Еще раз всем спасибо!

   
 
 автор: Лена   (21.12.2007 в 11:59)   письмо автору
 
   для: Л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;
?>

Страшно даже теперь читать, что мне напишут... :-)))

   
 
 автор: Unkind   (21.12.2007 в 17:22)   письмо автору
 
   для: Лена   (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) < )
{
    die( 
'Записи не существует' );
}

if( 
$text == '' )
{
    die( 
'Текст отсутствует' );
}

// Получение текста после успешного выполнения запроса

// Третий аргумент в данном случае необязателен, т.к. столбец всего один - "text"
$text mysql_result($result0);
// Получение hypertext'а
$text htmlspecialchars$text );
// Замена переводов строк на "<br />"
$text nl2br$text );
// Разбивка текста на абзацы (получается массив)
$text explode('<br />'$text);

// Первый абзац
echo $text[0];
?>

   
Rambler's Top100
вверх

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