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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: НЕ вытягивается текст из базы

Сообщения:  [1-10]    [11-20]  [21-22] 

 
 автор: sim5   (27.12.2007 в 14:55)   письмо автору
 
   для: Лена   (27.12.2007 в 14:19)
 

В шапке форума есть ссылки на книги, авторами которых явлются создатели этого форума: М. Кузнецов, И. Симдянов. Среди этих книг, есть и книга в которой описан пример создания сайта. Книги имеют вложенный CD c примерами. Но ведь каждую идею, которая вас может посетить, в книге не опишут, потому как идей (тонкостей) гораздо больше чем функций в языке. :) Главное ведь не выучить наизусть функции, а представлять способы решения ваших задач с помощью функций и конструкций языка.

   
 
 автор: Лена   (27.12.2007 в 14:19)   письмо автору
 
   для: sim5   (27.12.2007 в 12:19)
 

Спасибо, все получилось.
Согласна, что многого не знаю, но желание развиваться не пропало. Начинать с более простого - с чего? С учебников? Как мне показалось, основной недостаток учебников по программированию - они не имеют комплексного прикладного характера, то есть дается отдельный учебник по РНР, по MySQL, но ведь на странице эти языки могут сочетаться в разных вариациях, почему не существует учебника, например, описывающего пошагово, как создать динамичный сайт с нуля, какими средствами это сделать и почему не приводятся оптимальные варианты решений? Поэтому и бьюсь я, как рыба об лед - много читала, разбирала скрипты, но как дошла до конкретного (создание сайта), сразу растерялась. Может, вы подскажете, где взять дельный учебник? Я имею ввиду учебник - использование РНР с конкретными примерами - например, как было у меня (вытянуть один абзац из базы, разукрасить текст и т.д.)
Поэтому и пришлось мне пойти на форум, где проблема решается с ходу: написал-сделал-получилось. Не получилось - найдутся верные друзья-товарищи :-)))
Сложно это все объяснить...
Честно говоря, удивляюсь вашему терпению и выдержке, другой бы на вашем месте отмазался бы какими-то хитроумными фразами и я бы осталась с тем, чем была.
Еще раз огромное человеческое спасибо.

   
 
 автор: sim5   (27.12.2007 в 12:19)   письмо автору
 
   для: Лена   (27.12.2007 в 11:26)
 

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

<?
//это, например, ваш HTML текст
$text '<P CLASS="myclass">Text1 <img src="image1.jpg" /></P>
<P CLASS="myclass">Text2 <img src="image2.jpg" /></P>
<P CLASS="myclass">Text3 <img src="image3.jpg" /></P>
<P CLASS="myclass">Text4 <img src="image4.jpg" /></P>'
;
//разбиваем его на массив по разделителю </P>
$text explode('</P>'$text);
//посмотрим что мы получили в масиив
print_r($text);
//заметьте, что закрывающих тегов параграфа </P>
//элементы массива не содержат
//он вырезан функцией explode, как собственно
//был бы вырезан любой другой указанный разделитель
//а так же обратите внимание,  
//что последний элемент массива пустой
//подумайте почему так получается
//просмотрели и удалили print_r($text);
//а далее вывод всего

//для простоты встраиваем стиль в страницу
print '<STYLE TYPE="text/css">
.myclass {color : #669900;} 
.myclass2 {color : #FF3300;}
</STYLE>'
;

//выводим в цикле абзацы
//размер цикла определяется 
//числом элементов массива $text
//с вычетом 1, так как последний
//элемент массива пустой и нам не нужен 
for ($i=0$i<count($text)-1$i++) {
  if (
$i 1//если итерация цикла нечетная
  //выводим класс параграфа по умолчанию
  
print $text[$i]."</P>"//добавляя закрывающий тег 
  
else //иначе  
  //заменяем имя класса параграфа   
  
print str_replace("myclass""myclass2"$text[$i])."</P>";
}
?>

Укажите любую произвольную картинку и посмотрите, все будет работать. Закрывающий тег параграфа </P> можно и не выводить, но это есть не хорошо.

PS. Вы много не знаете, вам видимо надо с более простого начинать.

   
 
 автор: Лена   (27.12.2007 в 11:26)   письмо автору
 
   для: sim5   (26.12.2007 в 15:31)
 

В код добавила:


for ($i=0; $i<10; $i++):
    if($i%2==0):
    $newtext = str_replace("myclass", "myclass2", $text);
    endif;
endfor;
  print $newtext;


В каскадную таблицу стилей style.css добавила:

.myclass {color : Yellow;}
.myclass2 {color : #ADFF2F;}


Подключила style.css в index.php:

<link rel="stylesheet" href="style.css" type="text/css">

Выводится не в цвете, вот что появляется на странице:
<P id="head1" ">НЕ КУПИТЕСЬ НА РАСПРОДАЖУ

А дальше - 2 раза текст первого абзаца, без картинки, хотя у меня в базе прописано:
<img src="./resize-mims05-1-_tuning_191.jpg" width=150px height=100px alt="Авто" align="left">
Почему не получается?

   
 
 автор: sim5   (26.12.2007 в 15:31)   письмо автору
 
   для: Лена   (26.12.2007 в 13:55)
 

Допустим, у вас есть индексная страница, и она обрабатывает и описывает код только тот, что будет помещен в результате между тегами <BODY></BODY> (включая и их, может быть). А вот шапка страницы у вас формируется, например, скриптом head.php, и в этом скрипте у вас прописано (к примеру):

<?
print "<HEAD><TITLE>$head<TITLE>..."// и прочее
//этот файл вы подключаете к индексной странице
include("head.php");
//по умолчанию у вас заголовок определен как
$head "Мой сайт";
//а вот после того как вы будете делать запросы к базе
//и получать заголовки запрашиваемых страниц
//заголовок страницы будет изменяться
?>

Вы в таблице держите заголовок страницы и ее текст в отдельных полях, а получаете их сразу - и то, и другое одной функцией, присваивая результат переменной $text:

<?
$text 
mysql_fetch_row($result);
?>

Я вам давал ссылку, где можно читать и изучать MySQL, и если вы читали, то должны знать, что функция mysql_fetch_row() извлекает один ряд данных из результата, ассоциированного со специфицированным идентификатором результата. Ряд возвращается как массив. Каждый результирующий столбец хранится как смещение массива, начиная со смещения 0.
Поэтому $textх[0] будет содержать значение первого поля таблицы которое указано в запросе, $textх[1] второе и т.д., если полей больше. У вас первым полем в запросе стоит заголовок страницы, потом текст, поэтому $textх[0] вернет вам заголовок текста. Далее это значение (для примера), указывается переменной $head для включения ее в head.php и вывода на странице.
Затем вы получаете текст ($textх[1]), абзацы которого у вас заключены в теги прагарафа <P></P>. Вам уже более не нужен первоначальный массив $textх (вы забрали из него значение заголовка), поэтому, этому значению вы присваиваете новый массив, который получается в результате разбиения $textх[1] функцией explode() по разделителю </P>. После этого, $textх[0] будет содержать текст первого абзаца на странице, но без закрывающего тега </P>, так как он вырезается в результате работы функции explode(). А так как вам более не нужен массив текста, а его первое значение, то мы и использовали переменную $text, просто переназначив ее значение, добавив недостающий тег </P>:
$text = $text[0]."</P>";
Конечно, если эта переменная будет требоваться, то следует использовать другие переменные, или просто в конструкции вывода производить операции, не присваивая их результата какой либо переменной.
Четное это 0, 2, 4... нечентное 1,3, 5... Если вы проходите цикл, например, от 0 до 10, то можете узнать какова у вас итерация в данный момент. Например в цикле:
for ($i=0; $i<10; $i++) можно проверять значение $i либо делив ее по модулю, либо логической операцией И, результат которой вам и будет указывать четный или нечетный шаг на данный момент у цикла.

   
 
 автор: Лена   (26.12.2007 в 13:55)   письмо автору
 
   для: sim5   (25.12.2007 в 16:06)
 

Не понятна строка
 $text = $text[0]."</P>"; 

из вышеприведенного кода. Почему $text[0], если это заголовок, ведь сам текст статьи у нас в $text[1] и делили мы на абзацы $text[1], значит, восстановить тэг </P> нужно в $text[1]?
Подскажите, как оформляется четная и нечетная итерация цикла. Приведите, пожалуйста, только шаблон, код я хочу сама попробовать написать

   
 
 автор: sim5   (25.12.2007 в 16:06)   письмо автору
 
   для: Лена   (25.12.2007 в 14:54)
 

Вы опять пытаетесь сделать все наоборот - переменную, которую еще не определили, разбиваете на массив:
$text = explode('</p />', $text);
причем не правильно, закрывающий тег параграфа пишется так </p>, а потом только ее определяете:
$text=mysql_fetch_row($result).
Вы запросом получили одну строку записи, и цикла не требуется.

<?
if(mysql_num_rows($result) < ) die('В таблице "txt" нет ни одной записи');
else {
  
//получаем запись - читать о mysql_fetch_row
  
$text mysql_fetch_row($result);
  
//получаем заголовок рубрики
  //если его требуется вставить также в заголовок страницы
  //в тег <TITLE>$title</TITLE>, например, то сохраним его
  //в переменную $title для подключаемого скрипта шапки страницы
  
$title $text[0];
  
//выводим заголовок на страницу, например в теге H1  
  
print "<H1>".$title."</H1>";
  
//получаем и разбиваем текст статьи на абзацы
  //следить за тегом параграфа, он должен быть прописан
  //в верхнем регистре - </P> 
  
$text explode("</P>"$text[1]);
  
//после explode, закрывающий тег параграфа </P> теряется
  //восстановим его, и теперь $text уже не массив
  
$text $text[0]."</P>";
  
//выводим первый абзац рубрики на страницу
  
print $text;
  
//======
  //если, например, параграф рубрик имеет имя класса myclass
  //и при получении нескольких  записей (страниц)
  //теперь уже в цикле, пулучив текст первого абзаца,
  //с помощью str_replace меняем имя класса каждую
  //четную итерацию цикла на myclass2  
  
$newtext str_replace("myclass""myclass2"$text);
  
//а нечетной не трогаем,
  //тогда, если для первого класса шрифт, например, черный,
  //а для второго красный, то при выводе они будут черодоваться  
  
print $newtext;
}
?>

   
 
 автор: Лена   (25.12.2007 в 14:54)   письмо автору
 
   для: sim5   (25.12.2007 в 11:53)
 

Не получается. Выводится весь текст+заголовок:

<?php
mysql_connect
('localhost''lena''alena') or die( 'Соединение не установлено' );
mysql_select_db('news') or die( 'База данных не выбрана' );
$sql "SELECT `head`, `text` FROM `txt` WHERE id = 4";
if( !(
$result mysql_query($sql)) )
{
die( 
'Failure: ' mysql_error() . ', File: ' __FILE__ ', Line: ' __LINE__ );
}

if(
mysql_num_rows($result) < )
{
die( 
'В таблице "txt" нет ни одной записи' );
}

$text explode('</p />'$text);
while(
$text=mysql_fetch_row($result)) {
echo 
$text[0], $text[1];
}

?>


А нужно заголовок+1 абзац...

   
 
 автор: sim5   (25.12.2007 в 11:53)   письмо автору
 
   для: Лена   (25.12.2007 в 10:40)
 

Ошибка №1. Если у вас встроенный стиль, то его надо обрамлять в теги <STYLE>:

<STYLE TYPE="text/css">
#head1 {
  font-family : "Courier New";
  color="blue";
  font-size : "larger";
}

.hypertext {
  text-align : justify;
  background : White;
  font-family : "Times New Roman";
  font-size : medium;
  letter-spacing : normal;
  line-height : normal;
  text-indent : 5px;
  color : Olive;
}
</STYLE>

Ошибка №2. Имя класса hypertext в параграфе должно быть прописано без точки. Эта точка приписывается в таблице стилей и по просту понимается как P.hypertext.

Если таблица стилей находится в отдельном подключаемом файле, то в этом файле прописаны только стили, без обрамления тегами <STYLE></STYLE>. В этом случае в заголовке страницы между тегами HEAD, нужно указать (подключить) файл стилей, так:
<link rel="stylesheet" media="all" href="path/file.css" type="text/css">
где path/file.css путь и имя файла стилей. Файлы стилей имеют расширение CSS.

Чтобы получить и заголовок и текст интересующей вас записи, то нужно указывать соответсвующие поля таблицы в запросе, например:
$sql = "SELECT `field1`, `field2`, `field2` FROM `txt` WHERE id = 4";
или
SELECT * ....
В общем вам надо читать документацию MySQL.

У вас каждый абзац заканчивается тегом </P>, и в абзаце же находится изображение, поэтому лучше (это быстрее), воспользоваться explode('</P>',$text); Берете первый элемент полученного массива, выводите его с добавлением в конце </P>.

   
 
 автор: Лена   (25.12.2007 в 10:40)   письмо автору
 
   для: sim5   (24.12.2007 в 17:35)
 

Попробовала создать в таблице еще одно поле - поле заголовка head
Теперь я могу вытянуть из базы только заголовок:

<?php
mysql_connect
('localhost''lena''alena')
 or die( 
'Соединение не установлено' );
mysql_select_db('news'
or die( 
'База данных не выбрана' );
$sql "SELECT `head` FROM `txt` 
WHERE id = 4"
;
if( !(
$result mysql_query($sql)) )
{
 die( 
'Failure: ' mysql_error() . 
', File: ' __FILE__ ', Line: ' 
__LINE__ );
}
$text mysql_result($result0);
print 
$text;
?>


В таблице в поле head написала так:
<P id="head1" ">НЕ КУПИТЕСЬ НА РАСПРОДАЖУ</P>
В файле между <HEAD> и </HEAD>прописала вот что:
#head1 {
font-family : "Courier New";
color="blue";
font-size : "larger";
}
Но заголовок вытягивается без нужного цвета и размера. Почему?

И как теперь с помощью регулярного выражения вытянуть 1 абзац? В таблице я оформила его как

<P class=".hypertext ">Часто магазины 
прибегают ко всяким уловкам, чтобы 
избавиться от неходового товара. Одной из 
таких уловок и является хорошо знакомая 
нам распродажа. Раскроем вам несколько 
секретов магазинных хитростей, чтобы вы 
смогли обуздать свои хватательные рефлексы.
<img src="./resize-mims05-1-_tuning_191.jpg" 
width=150px height=100px alt="Авто" 
align="left"></P>

В каскадной таблице написала:
.hypertext {
text-align : justify;
background : White;
font-family : "Times New Roman";
font-size : medium;
letter-spacing : normal;
line-height : normal;
text-indent : 5px;
color : Olive;
}
Как одновременно вытянуть и заголовок, и 1 абзац?

   

Сообщения:  [1-10]    [11-20]  [21-22] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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