Forum Webscript.Ru

Программирование => PHP => Тема начата: agressor от 07 Июня 2003, 20:46:57

Название: Почему не работает?
Отправлено: agressor от 07 Июня 2003, 20:46:57
Задумка, сделать шаблоны без ООП
Ну написал небольшую программу, но работает не так как нужно: выводит весь цикл одинаковую первую строку, находящуюся в файле, в чем дело:confused:

$data = file ("he.txt"); //файл-база
$temp = file ("he.htm"); //файл-шаблон, содержимое писать не буду, там только теги и три переменных "%....%"
for ($i = 0; $i < sizeof ($data); $i++) {
list ($name, $message, $email) = split (":::", $data[$i]);
for ($n = 0; $n < sizeof ($temp); $n++) {
$temp[$n] = str_replace ("%name%", $name, $temp[$n]);
$temp[$n] = str_replace ("%message%", $message, $temp[$n]);
$temp[$n] = str_replace ("%email%", $email, $temp[$n]);
echo "$temp[$n]";
}
echo "

$i

";
}
?>

Название: Почему не работает?
Отправлено: D1g174LM4n14c от 07 Июня 2003, 21:52:43
короче, не углубляясь в подробности, скажу просто как исправить:

используй вместо ф-ции file() ф-цию get_file_contents() ...

если интересно почему выводит только первую строку, см. на возвращаемый результат ф-ции file() ;)
Название: Почему не работает?
Отправлено: agressor от 08 Июня 2003, 12:08:55
у меня функцию get_file_contents пхп вообще не поддерживает :-(
Название: Почему не работает?
Отправлено: D1g174LM4n14c от 08 Июня 2003, 14:04:33
ставь новую версию!

или юзай так:
$data = join(\'\', file(\'somefile\'));
Название: Почему не работает?
Отправлено: Меняздесьдавнонет от 08 Июня 2003, 17:54:08
Цитировать
[$data = join(\'\', file(\'somefile\'));

за это руки отрывать надо.
Название: Почему не работает?
Отправлено: Yukko от 08 Июня 2003, 19:37:59
Цитировать
agressor:
Задумка, сделать шаблоны без ООП

Есть у меня один знакомый, так он на подобное говорит сразу:
А смысл? не пойму, что лень разобраться, как РНР работает с классами, объектами?
Название: Почему не работает?
Отправлено: Neter от 08 Июня 2003, 21:41:15
Цитировать
RomikChef:
за это руки отрывать надо.

Как вариант :)


$data = readfile(\'file.txt\')
Название: Почему не работает?
Отправлено: Меняздесьдавнонет от 08 Июня 2003, 22:59:08
Neter
за это надо просто написать echo $data;
Название: Почему не работает?
Отправлено: Neter от 08 Июня 2003, 23:46:13
RomikChef :(
Забыл что readfile сразу выводит содержимое файла и возвращает количество байт..


$filename = "fie.txt";
$fp = fopen ($filename, "r");
$content = fread ($fp, filesize ($filename));
fclose($fp);
Название: Почему не работает?
Отправлено: Меняздесьдавнонет от 09 Июня 2003, 01:01:03
Цитировать
Neter:
$filename = "fie.txt";
$fp = fopen ($filename, "r");
$content = fread ($fp, filesize ($filename));
fclose($fp);


в зависимости от размера файла этот код может работать в десятки раз быстрее, чем имплод файла.
Название: Почему не работает?
Отправлено: D1g174LM4n14c от 09 Июня 2003, 11:32:47
Цитировать
RomikChef:
$data = join(\'\', file(\'somefile\'));

за это руки отрывать надо.

почему?
Название: Почему не работает?
Отправлено: Меняздесьдавнонет от 09 Июня 2003, 11:46:14
в десятки.
то есть - в двадцмть, тридцать, сорок раз.
то есть, не сорок секунд, к примеру, а одну секунду.

понятно, или все еще нет?
Название: Почему не работает?
Отправлено: agressor от 09 Июня 2003, 12:06:00
Но дело все в том, что что с fread (), что с file(), все равно весь цикл выводится данные из $data[0]...
А при чем здесь join (), как это может помочь?
Название: Почему не работает?
Отправлено: Neter от 09 Июня 2003, 13:28:38
agressor,

$data = file ("he.txt"); //файл-база

$fp = fopen ("he.htm", "r");
$content = fread ($fp, filesize ($filename));
fclose($fp);

for ($i = 0; $i < sizeof ($data); $i++) {
list ($name, $message, $email) = split (":::", $data[$i]);

$temp = str_replace ("%name%", $name, $temp);
$temp = str_replace ("%message%", $message, $temp);
$temp = str_replace ("%email%", $email, $temp);

echo "$temp";
}
echo "

$i

";
}

Название: Почему не работает?
Отправлено: Меняздесьдавнонет от 09 Июня 2003, 15:22:35
Нетер, если я не ошибаюсь, это работать не будет.

надо темп каждый раз присваивать
Название: Почему не работает?
Отправлено: Neter от 09 Июня 2003, 17:49:04
RomikChef, Забыл :)

$data = file ("he.txt"); //файл-база

$fp = fopen ("he.htm", "r");
$content = fread ($fp, filesize ($filename));
fclose($fp);

for ($i = 0; $i <= sizeof($data)-1; $i++) {
list ($name, $message, $email) = split (":::", $data[$i]);

$temp = $content;
$temp = str_replace ("%name%", $name, $temp);
$temp = str_replace ("%message%", $message, $temp);
$temp = str_replace ("%email%", $email, $temp);

echo "$temp";
}
echo "

$i

";
}

agressor  Всё понял?

Название: Почему не работает?
Отправлено: agressor от 10 Июня 2003, 16:08:30
И это тоже не работает нифуя, побежал разбираться с классами, объектами и методами :-)
Название: Почему не работает?
Отправлено: Меняздесьдавнонет от 10 Июня 2003, 16:59:28
Вот уж что что - а классы тут ну абсолютно не при чем.
Это все равно, что сделать автомобиль на квадратных колесах, увидеть, что не ездит, плюнуть и начать собирать дизельный движок вместо бензинового.

Ты хоть сам-то понимаешь, что объект - это всего лишь форма представления, а код в нем, внутри, ТОЧНО ТАКОЙ же будет?
Название: Почему не работает?
Отправлено: Меняздесьдавнонет от 10 Июня 2003, 17:09:20
вот что мне нравится в таких людях - непосредственность.

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

Зачем приходил? Зачем писал?
Зачем на форуме вопрос задавал, который даже сам понять толком не может?
Нет ответа.
Название: Почему не работает?
Отправлено: Меняздесьдавнонет от 10 Июня 2003, 17:11:38
Но вообще, да.
Вы, ребята, или вообще готовый код не пишите, а тыкайте носом в ошибки пока или не найдет, или нос не расквасит, или пишите без ошибок.

В принципе, я был бы на стороне этого томского самородка, если бы не его последнее заявление, показывающее фантастическое скудоумие.
И, боюсь, медицина здесь бессильна.
Название: Почему не работает?
Отправлено: Neter от 10 Июня 2003, 17:38:00
Это нервы :)

Цитировать
RomikChef:
или пишите без ошибок.


Всмысле? Где ошибки-то? Я Только чуть-чуть его код поменял..
Пусть сам разбирается..
Название: Почему не работает?
Отправлено: Меняздесьдавнонет от 10 Июня 2003, 17:47:39
поменял, да с ошибками.

вот поэтому и нервы, что и вопрос задает дурачок, и ответы ему дают - ни одного без ошибок нету
Название: Почему не работает?
Отправлено: Neter от 10 Июня 2003, 19:31:30
RomikChef Виноват, исправлюсь :)
Название: Почему не работает?
Отправлено: Меняздесьдавнонет от 10 Июня 2003, 20:26:09
работает
проверено ;-)

$data = file ("he.txt");

$fp = fopen ("he.htm", "r");
$content = fread ($fp, filesize ("he.htm"));
fclose($fp);

for ($i = 0; $i <= sizeof($data)-1; $i++) {
  list ($name, $message, $email) = explode (":::", $data[$i]);

  $temp = $content;
  $temp = str_replace ("%name%", $name, $temp);
  $temp = str_replace ("%message%", $message, $temp);
  $temp = str_replace ("%email%", $email, $temp);

  echo $temp;
  echo "

$i

";
}

Название: Почему не работает?
Отправлено: Neter от 10 Июня 2003, 23:43:05
RomikChef :)
Название: Почему не работает?
Отправлено: nagash от 11 Июня 2003, 02:00:42
а ещё str_replace массивы может поглощать...
тогда ненадо будет морочиться с 1000000-чами str_replace-ов =)
Название: Почему не работает?
Отправлено: agressor от 11 Июня 2003, 15:07:33
Обосрали в конец и все из-за того, что я забрел в форум, не зная что такое объект???
Название: Почему не работает?
Отправлено: Меняздесьдавнонет от 11 Июня 2003, 16:14:55
Да перестень ты молиться на объекты.
Они у тебя перед глазами, как мальчики кровавые.
Ты вообще о чем-нибудь, кроме них говорить в состоянии?

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

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

Все из-за того, что ты НЕ ЗНАЯ, начинаешь делать выводы, ни у кого не спросив - а правильные ли они.

тьфу.
еще и сопли вытирать пришлось