[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод значение переменных из файла txt
Gigabit
Ребят такая вот ситуация имеется список товаров который выбрал покупатель:

тетрадь - 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

Спустя 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 написал(а):
чё то я понял, но для чего использовать файлы - когда есть БД - я не понял.


можно получить в таком виде
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 ?))

Спустя 4 минуты, 18 секунд (19.02.2012 - 21:14) Gigabit написал(а):
вот я и подумал у меня генерируется № заказа , это число при создание файла будет именем.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
не страдай фигней, пиши все в базу wink.gif

Спустя 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 написал(а):
ребята что у меня тут не правильного?

/** запрос из базы таблица "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 шт.

если я укажу ид номер то должно выйти его кол-во
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.