Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MYSQL Tabela tymczasowa
Forum PHP.pl > Forum > Bazy danych > MySQL
kr3t
Czesc,

Stworzylem sklepik w php, ale mam jeden problem,
chodzi o tabele mysql i jej automatyczne wykasowanie :

Gosc wchodzi na strone - zakladana jest tabela (z polami
ID, ID_TOWARU,ILOSC). z nazwa taka jak identyfikator sesji
Jak po skonczonych lub nieskonczonych zakupach skasowac ta tabele :?:

Czytalem cos o transakcjach/tabelach tymczasowych, ale praktycznie nie wiem jak to zastosowac....

Z gory dzieki.
adwol
Cytat
Czytalem cos o transakcjach/tabelach tymczasowych, ale praktycznie nie wiem jak to zastosowac....

Tabele tymczasową tworzysz bardzo podobnie jak zwykłą, musisz tylko poprzedzić słowo kluczowe TABLE słowem TEMPORARY.
[sql:1:3966deb571]create temporary table ...[/sql:1:3966deb571]
Usuwa się ją identycznie jak każdą inną:
[sql:1:3966deb571]drop table ...[/sql:1:3966deb571]
Ponieważ tabele tymczasowe istnieją tylko w obrębie jednego połączenia, jeśli zamkniesz połączenie z bazą, wszystkie tabele tymczasowe zostaną usunięte.

Poza tym oprócz kilku wyjątków tabel takich używa się jak zwykłych.
uboottd
Dodam tylko ze nazwy tabeli sa musza byc unikalne tylko w obrebie jednego polaczenia (wiec nie musisz generowac jej nazwy, moze zawsze tworzyc taka sama). Uwaga na polaczenie persistant - to jest jedno polaczenie.
kr3t
Hmmm... no tak niby wszystko ok.... ale tylko na chwile.

Mianowice lacze sie ze strona on przy wejsciu tworzy koszyk ( tabele ), ale po 1 akcji dodawania .. juz wszystko znika....
jakgdyby gubilby polaczenie lub sie laczyl ponownie...

Czy to ze mam na poczatku skryptu mysql_select_db("baza");
moze jakos wplywac na to?
adwol
Jest to normalne zachowanie gdy łączysz się za pomocą mysql_connect. Wtedy każdorazowe uruchomienie skryptu (żądanie/wyrenderowanie strony) to osobne połączenie z bazą

Do przechowywania danych między poszczególnymi wywołaniami używaj raczej sesji niż tabel tymczasowych. Jeśli jednak koniecznie chcesz je wykorzystać zainteresuj się funkcją mysql_pconnect.
kr3t
Dzieki za tak szybka odpowiedz...
chyba jestem w polowie drogi... doslownie, bo co drugie klikniecie lapie i widac co jest w tej tymczasowej bazie ... ale doslownie co drugie... 8O

Oto poczatek prostego kodu ( ktory nie wiem czy potrzebnie jest wywolywany za kazdym razem )
[php:1:63481e12ec]<?php

$conn = mysql_pconnect("localhost","user","pass");
mysql_select_db("baza");
if (mysql_errno()) {
echo mysql_error() . ": " . mysql_errno() . "<br>n";
exit;
}

$nazwa_ttabeli=session_id();
mysql_query("CREATE TEMPORARY TABLE $nazwa_ttabeli (
id INT(3) NOT NULL auto_increment,
id_produktu INT(7) NOT NULL,
ilosc INT(5) NOT NULL,
PRIMARY KEY (id))");
?>[/php:1:63481e12ec]

Moze trzeba jakies warunki dodac
- czy bylo juz nawiazane polaczenie z baza
- czy zostala juz utworzona tymczasowa tabela...

( ale jak to w PHPie napisac... ? ) - nie wiem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.