Forum Webscript.Ru
Программирование => PHP => Тема начата: chaynik4 от 16 Января 2003, 15:00:46
-
Вот эта запись работает:
$f=file("./mshop.txt");
$e[1]=explode("\\\\",$f[1]);
print_r ($e[1][1]);
А эта нет:
$f=file("./mshop.txt") ;
for ($i=0; $i $e=explode("\\\\",$f); }
print_r ($e[1][1]);
Как будто $e[1][1] не существует.. Скажите, пожалуйста, в чем ошибка?
-
$e=explode("\\\\",$f);
попробуй
$e[$i]=explode("\\\\",$f[$i]);
-
Спасибо very much. Извиняюсь за собственную дурость.. (я только начинаю учить PHP)
Если не трудно может подскажете, как наиболее быстро
по id находить в файле нужную строку.
Т.е. файл mshop.txt:
ID\\Цена\\Наименование товара
5200801\\3290\\Toshiba Satellite 5200-801
5200701\\2450\\Toshiba Satellite 5200-701
5205S703\\3090\\Toshiba Satellite 5205-s703
и т.д.
Скрипту приходит в переменной номер id
а нужно быстро найти строку соответствующую id чтобы обработать данные именно из этой строки.
Т.е. класическая (наверно) задача инет-магазина.
Так вот может есть функция, позволяющая
сразу из масива $f=file("./mshop.txt"); по id, содержащемся в строках файла, вычленить нужную переменную $f[$i], где $i номер искомой строки ..? (может используя регулярные выражения?)
И ещё, если не внапряг, подскажите нужно ли и если нужно то как лучше проверять содержание переменной id, передаваемой в url типа: http://shop.com/basket.php?c=add&id=5200701 если база находится в файле типа как указано выше..
Благодарю за вашу компетентность. Приятно удивлен эффективностью форума!
-
Ну, во-первых, я бы не стал для поиска id читать весь файл целиком.
Можешь использовать примерно следующий код:
$f=fopen(\'mshop.txt\',\'r\');
$flag=1;
while ($line=fgets($f)&&flag)
{
list($item_id,$item_price,$item_name)=explode(\'\\\\\',$line);
if ($id==$item_id) $flag=0;
}
if (!$flag) print "Ничего не найдено";
else { ... }
У explode на самом деле в качестве параметра разделителя - два слеша в одиночных кавычках
-
Maniac
так будет очень медленно.
по строчке читать, каждой делать лист, експлод...
вот код для скоростной проверки пароля, который я вчера набросал:
$fp = fopen ($filename, "r");
$contents = fread ($fp, filesize ($filename));
fclose ($fp);
$pos1=strpos($contents,"\\n".$login."/");
if ($pos1===FALSE) die("Invalid login"); //ид не найден
$pos1=$pos1+strlen($login)+1;
$pos2=strpos($contents,"\\n",$pos1);
$pass=substr($contents,$pos1+1,$pos2-$pos1); // это твоя строка от ид.
unset($contents);
логин - это твой ид
-
chaynik4 файлы это хорошо, но для задач интернет-магазина рекомендую воспользоваться БД, иначе много человеко-часов будет потрачено на кодирование функций, которые уже существуют в оптимизированном и протестированном (годами и тысячами программистов) виде. Хотя если это просто для самообразования - GL.
-
всем спасибо, сижу разбираю скрипты - все очень полезно для самообразования :) Думаю ещё чего спросить, но потом..
GoBeer
у меня в магазине не более 50 товаров. (Нужно простое добавление по ссылке(пишу вручную) добавление в корзину и заказ.) Вы считаете что обработка файл с таким списком сильно затормозит? на сколько быстрее и в каких случаях БД?
которые уже существуют в оптимизированном и протестированном (годами и тысячами программистов) виде
Вы имеете в виду библиотеки (что-то где-то слышал).
А нельзя ли поподробней или где почитать?
Спасибо
-
Нет, он имел в виду базу данных.
Но для твоего случая и уровня знаний, файлы будут как раз.
Именно поняв неудобство и ограничения файлов, можно понять прелесть базы данных.
точно так же, как прелесть PHP можно понять, лишь сделав один нормальный сайт на чистом html, и активно подополняв его.
-
RomikChef абсолютно прав во всем, хотя наверно это высказывание никому ничем не поможет, но считаю, что как раз наоборот - использование базы данных намного проще для начинающего, чем использование файлов...
chaynik4 советую сецчас не терять время с файлами (это можно действительно делать только в целях самообразования) а начинать писать более универсальные вещи, подвязанные на БД, потому что уверен, что 50ю продуктами магазин не закончится, да 50 - это уже не 3-5...
-
Семя, ты не понимаешь одного.
Базы данных - это те же файлы. Только сложнее.
И не поняв, как это работает, человек сможет пользоваться базой только как обезьяна - не понимая, почему и как оно работает. Именно такие и заполонили все форумы - знают ответ на три самые распространенные задачи, и лезут отвечать на любые вопросы.
именно таким приходится отвечать на каждый чих, потому, что они не понимают, как оно работает, и не могут логически вывести ответ из имеющихся знаний.