|
|
|
| Что такое временные базы даных?
1. Это база которая хранит данные определенное время, после чего их удаляет?
или
2. Это база которая существует определенное время?
Если есть дайте ссылочку где можно более подробно об этом почитать =) | |
|
|
|
|
|
|
|
для: gwest
(09.04.2005 в 17:51)
| | Здесь речь скорее идёт о временных таблицах - это таблицы, которые существуют в пределах одного сеанса, т.е. открыли сеанс работы с базой данных - создали таблицу, заполнили, поработали, закрыли сеанс - в момент закрытия сеанса - она уничтожается. Пример работы с данной таблицей вы можете обнаружить в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=278. Временная таблица видна только одному клиенту - тому, кто её создаёт, в отличии от таблиц, которые располагаются в оперативной памяти, тип MEMORY (HEAP).
PS Если вам не сложно создавайте темы посвященные базам данных в разделе форума MySQL http://www.softtime.ru/forum/index.php?id_forum=3 | |
|
|
|
|
|
|
|
для: cheops
(10.04.2005 в 00:42)
| | Подскажите где можно накопать материал по этим втеменным таблицам, а то чета нечего найти немогу =(
Или напишите функции при помощи которых можно с таблицами работать(хотя бы самые основные). | |
|
|
|
|
|
|
|
для: gwest
(11.04.2005 в 14:58)
| | По ссылке http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=278 приводится пример работы с такими таблицами, они ничем ни отличаются от обычных, только вместо оператора CREATE TABLE используется CREATE TEMPORARY TABLE, а так все запросы на выборку, удаление, вставку и т.д. точно такие же как для обычных таблиц. | |
|
|
|
|
|
|
|
для: cheops
(11.04.2005 в 22:48)
| | Почему-то не получается!
Пишет ошибку Table 'database.base2' doesn't exist
вот часть кода:
foreach($subject as $key => $value)
{
if($value>0)
{
$query="CREATE TEMPORARY TABLE base2 SELECT name_sub, value";
$open ="insert into time_korz values ('$key', '$value');";
}
}
if(mysql_query($open))
{
}
else
{
echo"<a href='form1.php'>Вернуться</a><br>";
echo "Ошибка ".mysql_error()."";
exit();
}
|
| |
|
|
|
|
|
|
|
для: gwest
(13.04.2005 в 13:51)
| | У вас во вложенном запросе
CREATE TEMPORARY TABLE base2 SELECT name_sub, value
|
не указано из какой таблицы выбирает данные оператор SELECT. | |
|
|
|
|
|
|
|
для: cheops
(13.04.2005 в 22:24)
| | Можно создать таблицу подобным примером?
$query="CREATE TEMPORARY TABLE base2 (name_sub text, value text)type=myisam ;";
|
или же данные должни выбираться из другой таблицы | |
|
|
|
|
|
|
|
для: gwest
(14.04.2005 в 12:14)
| | Нет, вполне можно создать и пустую таблицу, так как в вашем запросе. | |
|
|
|
|
|
|
|
для: cheops
(14.04.2005 в 23:29)
| | Видел в некоторых кодах, что при открытии сеанса писали
Нужно ли в моем случае поступать темже образом?
Хм... И еще если в php.ini в строке session.auto_start поставить 1, можно будет не использовать в своем коде session_start =) | |
|
|
|
|
|
|
|
для: gwest
(15.04.2005 в 18:04)
| | Нет, сессии не связаны с базой данных MySQL они относятся к Web-серверу. Т.е. для работы с MySQL инициировать и работать с сессией не обязательно. | |
|
|
|
|
|
|
|
для: cheops
(15.04.2005 в 22:50)
| | Хм.. Возникает ошибка:
Я создаю временную таблицу и если код показа данных таблицы находится в той же форме, то все нормально создается. Если же этот код поместить в отдельный фаил, то появляется следующее: Ошибка Table 'base.base2' doesn't exist
То есть такой базы нет! Может я не так что то делаю? | |
|
|
|
|
|
|
|
для: gwest
(16.04.2005 в 11:08)
| | Дело в том, что таблица временная, и как только закрывается дескриптор соединения с базой данных (а это происходит в конце каждого PHP-файла) таблица автоматически уничтожается. | |
|
|
|
|
|
|
|
для: cheops
(16.04.2005 в 12:02)
| | Как же быть ? Что делать?
А в интернет магазинах корзина это временная таблица или простая таблица, которая создается, а потом удаляется. Я то приследую задачу создать корзину ? | |
|
|
|
|
|
|
|
для: gwest
(18.04.2005 в 13:19)
| | А нет вы зря каждый раз для каждого покупателя создаёте и уничтожаете таблицу - это слишком накладно. Обычно создают одну таблицу на всех и вводят поля для первичного ключа покупателя, поэтому когда необходимо извлечь товары для конретного покупателя достаточно указать WHERE id_user=1234, где 1234 - уникальный идентификатор покупателя (первичный ключ). Записи можно удалять только по требованию покупателя или при оформлении покупки, в этом случае можно добится эффекта как на Ozone - приходишь через пол года, а у тебя в корзине лежат не купленные пол года назад товары - хочешь выкидываешь, хочешь покупаешь... | |
|
|
|
|
|
|
|
для: cheops
(18.04.2005 в 13:35)
| | Возможно мой вопрос покажется глупым, но что-то не получается!
Вопервых хотелось бы узнать какие примерно должны быть столбцы?
Допустим есть две таблицы 1-заносятся товары, 2-информация о покупателе
1-таблица
create table table1(
id_subject int(6), \\порядковый номер товара
name_subject text, \\наименование
value text \\кол-во
)type=myisam;
|
2-таблица
create table table2(
id_client int(6) not null auto_increment, \\порядковый номер (можно задать как первичный ключ)
name text, \\имя
tel text, \\телефон и т.д
primery key (id_client)
)type=myisam;
|
В чем собственно вопрос:
Сначала человек работает с товаром (добовляет, редактирует корзину) и только потом оставляет свои данные.
Регистрации на сайте нет то есть каждый раз человек должен оставлять информяцию о себе.
Вопрос:
1) Куда должен записываться товар во время его добавления в корзину. Ведь если он будет записываться в общую таблицу тогда следует как-то товары разделить.
Я так думаю что когда человек заходит на сайт ему присваивается какое-то значение, допустим 1, второму 2 и т.д. Когда человек выбирает товар в 1-ю таблицу записывается название товара, количество и этот номер (следовательно нужно как то изменить таблицу), потом когда он оставляет свои данные то там тоже должно записываться это значение. А с выводом информации уже проще.
Дак вот именно как это сделать я и не знаю! (Есть предположение что надо использовать первичные и внешние клучи).
Еще раз извините за глупые вопросы =) | |
|
|
|
|
|
|
|
для: gwest
(18.04.2005 в 16:07)
| | Таблицу table1, которая я как понимаю предназначена для корзины, следует снабдить дополнительными полями
create table table1(
id_subject int(6), \\порядковый номер товара
name_subject text, \\наименование
value text, \\кол-во
sid text, // идентификатор сессии
id_client int // уникальный номер клиента
)type=myisam;
|
в sid следует помещать идентификатор текущей сессии - он уникален в пределах сервера, а в id_client - уникальные номера, зарегистрированных посетителей. Тогда отличить товары зарегистрированных посетителей можно по id_client, а не зарегистрированных (им в id_client следует помещать NULL или 0) по sid.
PS Часто корзину вообще не хранят в таблице MySQL, а полностью сохраняют в $_SESSION - недостаток: корзина разрушается при закрытии окна браузера. | |
|
|
|
|
|
|
|
для: cheops
(19.04.2005 в 00:08)
| | Спосибо!
Можно по подробнее что такое идентификатор сессии?
А id_client в моем случае не нужен (нет регистрации) =) | |
|
|
|
|
|
|
|
для: gwest
(19.04.2005 в 15:30)
| | Ага понял это функция session_id();
Хотелось бы узнать зачем нужна константа SID; | |
|
|
|
|
|
|
|
для: gwest
(19.04.2005 в 16:15)
| | Хм... Так получается что для каждого компа есть свой идентификатор сессии и если я зайду на сайт, допустим через месяц то номер не изменится?
А это случайно с куками не как не связано?
И еще как мне из таблицы вытащить те товары, которые принадлежат именно мне.
<?
session_id();
session_start();
$sid=session_id();
$sub=mysql_query("select * from table1 where value>0 and sid=$sid")
?>
|
Так не канает и вообще SQL синтаксис дружит с переменными PHP? | |
|
|
|
|
|
|
|
для: gwest
(19.04.2005 в 16:50)
| | Хм... Так получается что для каждого компа есть свой
>идентификатор сессии и если я зайду на сайт, допустим через
>месяц то номер не изменится?
>А это случайно с куками не как не связано?
Нет не совсем так, идентификатор назначается каждый раз разный (именно поэтому нужна авторизация для зарегистрированных пользователей) и действует этот идентификатор только на одну сессию (пока посетитель не выключит браузер) | |
|
|
|
|
|
|
|
для: gwest
(19.04.2005 в 16:50)
| | >Так не канает и вообще SQL синтаксис дружит с переменными
>PHP?
Да, но следует помнить, что $sid - это строка и её следует заключать в одиночные кавычки
"select * from table1 where value>0 and sid='$sid'"
|
| |
|
|
|
|
|
|
|
для: gwest
(19.04.2005 в 16:15)
| | >Ага понял это функция session_id();
>Хотелось бы узнать зачем нужна константа SID;
session_id() и SID возвращают одну и ту же величину. | |
|
|
|