тетрадь - 13р. 40шт.
ручка - 2р. 20шт.
папка - 7р. 10шт.
так вот они у меня занесены в сессию:
$_SESSION['name'][$_POST['name']] = $_POST['name'];
$_SESSION['id'][$_POST['id']] = $_POST['id'];
$_SESSION['kolichestvo'][$_POST['kolichestvo']] = $_POST['kolichestvo'];
так вот как мне записать в файл данные не одного товара а всех товаров который выбрал покупатель
вот кое что что я намутил:
foreach($_SESSION['id'] as $scan )
{
if (isset($_POST['SubmutSaveZakaz']))
{
$text = '$zId='.$_SESSION['id'][$scan].'$zShop='.$_SESSION['kolichestvo'][$scan];
$h = fopen("zakaz/tovar.txt","a");
if (fwrite($h,$text))
{
echo "запись прошла успешно!";
}
else
{
echo "Произошла ошибка при записи данных";
}
fclose($h);
}
}
вот что он записывает в файл tovar.txt
$zId=
$zShop=
$zId=1
$zShop=40
$zId=2
$zShop=20
$zId=3
$zShop=10
что я не то сделал? ведь у меня выводит 2 значения без записей
$zId=
$zShop=
и скажите как я могу теперь вывести из файла $zId не как запись а как переменную например
если я напишу такую вот тему
$s = fopen("zakaz/$numerid.txt","r");
if ($s)
{
while (!feof($s))
{
$mytext = fgets($s);
echo $zId."<br /><br />";
}
}
else echo "Ошибка при открытии файла";
fclose($s);
где написанно echo $zId[1] выводил на экран 1 а не пустой экран, он не видит переменную $zId;
Спустя 16 минут, 29 секунд (19.02.2012 - 20:36) Игорь_Vasinsky написал(а):
да ты намусолил чёрт знает что..
во-первых - ты смело разбераешь весь массив сессии, а там что ещё кроме выбранных юзером товаров?
во вторых...для записи в файл удобней пользоваться file_put_contents, а на новую строку переносить - штатной константой PHP_EOL
во-первых - ты смело разбераешь весь массив сессии, а там что ещё кроме выбранных юзером товаров?
во вторых...для записи в файл удобней пользоваться file_put_contents, а на новую строку переносить - штатной константой PHP_EOL
Спустя 19 минут, 27 секунд (19.02.2012 - 20:55) Gigabit написал(а):
Цитата |
во-первых - ты смело разбераешь весь массив сессии, а там что ещё кроме выбранных юзером товаров? |
Да ни че, вся всячина я $_SESSION['id'][$_POST['id']] вывожу из БД товар где сходиться id в базе и $_SESSION['id'][$_POST['id']] и показываю всю инфу на экран
потом когда покупатель просмотрел свою корзину он отправляет список на заказ, то есть жмет кнопку "заказать" и я хочу что бы когда он отправит заказ то в файл занеслись данные о id товара и количество сколько покупает user.
после этого админ открывает свою панель и и на экран выводиться новй заказ , то есть выводит список товаров из БД но id товара из бд мускула будет у мну сходиться id в файле в котором мы его занесли и количество , думаю врят ли ты меня понял попробую показать на примере
Покупатель покупает товары
№ заказа 3234
тетрадь (#id 1) - 20 шт.
ручка (#id 2) - 5 шт.
папка (#id 3) - 6 шт.
стерка (#id 4) - 11 шт.
жмет на кнопку "ЗАКАЗАТЬ"
после этого создается файл (имя файла создается номером заказа) 3234.txt
далее надо что бы в файл вписались список товаров, именно мне нужны 2 значение id товара и количество товаров типа этого
$id=1; $coll=20шт.;
$id=2; $coll=5шт.;
$id=3; $coll=6шт.;
$id=4; $coll=11шт.;
эти данные записываются в файл 3234.txt
потом я их использую например в таком запросе
$query = "SELECT * FROM `zakaz` WHERE id=".$id ;
$sql = mysql_query ($query) or die (mysql_error());
$tovar= mysql_fetch_assoc($sql);
echo $tovar['name'];
видишь в запросе я использую переменную $id? вот как раз таки эта переменная из того файла 3234.txt , думаю ты че то понял))
Спустя 1 минута, 5 секунд (19.02.2012 - 20:56) Gigabit написал(а):
записать это одно как мне вывести данные из файла не как текстовая запись а как переменная со значение!
Спустя 3 минуты, 39 секунд (19.02.2012 - 21:00) Игорь_Vasinsky написал(а):
чё то я понял, но для чего использовать файлы - когда есть БД - я не понял.
можно получить в таком виде
а можно в массив
2й вариант сразу игнорирует пустые строки в файле.
можно получить в таком виде
file_get_contents('file.txt');
а можно в массив
file('file.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
2й вариант сразу игнорирует пустые строки в файле.
Спустя 9 минут, 43 секунды (19.02.2012 - 21:10) Gigabit написал(а):
ну насчет использовать файлы использовать когда есть БД. я бы с радостью но смотри если у меня таблица "zakaz" в бд Mysql
в ней столбцы id | name | cena| coll| userId|
так вот мне получается надо заносить каждый товар в новую. запись в этой таблице?
id | name | cena | coll | userId|
-----------------------------------
1 |тетрадь|5 руб. |20шт. |Игорь |
2 |ручка |10 руб. |5шт. |Игорь |
3 |папка |1 руб. |6шт. |Игорь |
4 |стерка |7 руб. |11шт. |Игорь |
а если он закажет 100 наименований товара?)
это скока записей от каждого покупателя будет 1000 000 000 ?))
в ней столбцы id | name | cena| coll| userId|
так вот мне получается надо заносить каждый товар в новую. запись в этой таблице?
id | name | cena | coll | userId|
-----------------------------------
1 |тетрадь|5 руб. |20шт. |Игорь |
2 |ручка |10 руб. |5шт. |Игорь |
3 |папка |1 руб. |6шт. |Игорь |
4 |стерка |7 руб. |11шт. |Игорь |
а если он закажет 100 наименований товара?)
это скока записей от каждого покупателя будет 1000 000 000 ?))
Спустя 4 минуты, 18 секунд (19.02.2012 - 21:14) Gigabit написал(а):
вот я и подумал у меня генерируется № заказа , это число при создание файла будет именем.txt
туда если он закажет хоть сто наименований то в каждом файлы будет тока товары конкретного пользователя
Игорь 3175.txt
Юрий 3567.txt
Паша 2836.txt
Галя 4653.txt
не логично?
туда если он закажет хоть сто наименований то в каждом файлы будет тока товары конкретного пользователя
Игорь 3175.txt
Юрий 3567.txt
Паша 2836.txt
Галя 4653.txt
не логично?
Спустя 1 час, 57 минут, 26 секунд (19.02.2012 - 23:12) walerus написал(а):
Цитата |
записать это одно как мне вывести данные из файла не как текстовая запись а как переменная со значение! |
1) Можно формировать на запись файл в виде:
$to_save = "
$id = array(); $coll = array();
$id[]=1; $coll[]='20шт.';
$id[]=2; $coll[]='5шт.';
$id[]=3; $coll[]='6шт.';
$id[]=4; $coll[]='11шт.';
";
## Сохраняем файл
file_put_contents( '3234.php', implode( "\r\n", $to_save ) );
Потом инклюдить этот файл, что есть не безопасно ИМХО.
2) Вариант, сделать eval()
$load = file_get_contents( '3234.php' );
eval ( $load );
Что тоже не найс.
3) Как посоветовал Игорь_Vasinsky, юзать БД, в нее вносить все данные.
Допустим у тебя есть поле zakaz, к каждому пользователю, вот и вноси в это поле массив сериализированный, в чем проблема?? потом его десериализируешь и работай с массивом, все чисто и красиво будет, чем замарачиваться с файловой системой...
Спустя 16 минут, 20 секунд (19.02.2012 - 23:28) Gigabit написал(а):
а что значит сериализированный, потом его десериализируешь? это с чем едят?
Спустя 2 минуты, 10 секунд (19.02.2012 - 23:30) Gigabit написал(а):
а все нашел вроде, 3 вариант самому нравиться если сработвет спасибо!
Спустя 34 минуты, 33 секунды (20.02.2012 - 00:05) walerus написал(а):
Gigabit - ты жжошь в смс канале )
// Это у тебя список заказов
$id[]=1; $coll[]='20шт.';
$id[]=2; $coll[]='5шт.';
$id[]=3; $coll[]='6шт.';
$id[]=4; $coll[]='11шт.';
// Тут общий, сгруппированный заказ
$zakaz = array( 'id' => $id, 'coll' => $coll );
// В базу заносишь так
$to_base = serialize( $zakaz );
// Из базы
$to_work = unserialize( $to_base );
Спустя 5 минут, 53 секунды (20.02.2012 - 00:11) killer8080 написал(а):
Gigabit
не страдай фигней, пиши все в базу
не страдай фигней, пиши все в базу
Спустя 4 минуты, 4 секунды (20.02.2012 - 00:15) Gigabit написал(а):
во спасибо получилось!))) ну я думал в чате быстрее помогут))
Спустя 59 секунд (20.02.2012 - 00:16) Gigabit написал(а):
да вот уже начал писать, думал в затеи моей нет место БД mysql)
Спустя 2 дня, 7 часов, 1 минута, 25 секунд (22.02.2012 - 07:17) Gigabit написал(а):
ребята что у меня тут не правильного?
надо вывести из базы
a:2:{s:3:"zid";a:2:{i:0;a:2:{i:0;s:2:"11";i:1;s:2:"10";}i:1;a:2:{i:0;s:2:"11";i:1;s:2:"10";}}s:5:"zshop";a:2:{i:0;a:2:{i:0;s:1:"1";i:1;s:1:"1";}i:1;a:2:{i:0;s:1:"1";i:1;s:1:"1";}}}
/** запрос из базы таблица "zakaz" **/
$qg=mysql_query("SELECT * FROM zakaz ") or die(mysql_error());
$result = mysql_fetch_object($qg);
/** заносим в переменную unserialize из таблицы "zakaz" столбца z_shop**/
$massiv = unserialize( $result ->z_shop);
$zid[] = $massiv [zid];
/** цикл **/
foreach ($zid[0] as $got)
{
$shop[][$got] = $massiv [zshop];
echo "<pre>";
echo $got.' и товар'.$shop[zshop][$got];
echo "</pre>";
}
надо вывести из базы
a:2:{s:3:"zid";a:2:{i:0;a:2:{i:0;s:2:"11";i:1;s:2:"10";}i:1;a:2:{i:0;s:2:"11";i:1;s:2:"10";}}s:5:"zshop";a:2:{i:0;a:2:{i:0;s:1:"1";i:1;s:1:"1";}i:1;a:2:{i:0;s:1:"1";i:1;s:1:"1";}}}
Спустя 4 минуты, 2 секунды (22.02.2012 - 07:21) Игорь_Vasinsky написал(а):
1. имя элемента массив пишеться в апострофах
Цитата |
[zid] |
['zid']
а что не выходит?
Спустя 11 часов, 19 минут, 20 секунд (22.02.2012 - 18:40) Gigabit написал(а):
да не выходит и все, у меня в базе записи массивов с помощью serialize закинул теперь надо вывести а не как не получается(((. там всего лишь две записи
$zid - это айди товара
$shopIn - это кол-во товара
$zid[10] - Тетрадь -1 шт.
$$zid[11] - Ручка -20шт.
получается
мне надо вывести
сгруппированный массив
$zid[10] = $shopIn[1];
$$zid[11]= $shopIn[20];
чтобы у меня получилось типа так
$zid[10] - 1шт.
$zid[11] - 20 шт.
если я укажу ид номер то должно выйти его кол-во
$zid - это айди товара
$shopIn - это кол-во товара
$zid[10] - Тетрадь -1 шт.
$$zid[11] - Ручка -20шт.
получается
мне надо вывести
сгруппированный массив
$zid[10] = $shopIn[1];
$$zid[11]= $shopIn[20];
чтобы у меня получилось типа так
$zid[10] - 1шт.
$zid[11] - 20 шт.
если я укажу ид номер то должно выйти его кол-во