Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problemy z tabelami w sesji, funkcje unsset
gitbejbe
post
Post #1





Grupa: Zarejestrowani
Postów: 516
Pomógł: 63
Dołączył: 27.08.2012

Ostrzeżenie: (0%)
-----


Witam.

To mój pierwszy post i zarejestrowałem z tej przykrej przyczyny, ze stoję w miejscu przy robieniu koszyka, a dokładniej - przy usuwaniu dodanych w sesji zakupów.

  1. <input type="submit" name="submit" value="'.$row['id'].'"style="margin-left:10px;"/> <!-- value posiada wartość ID produktu w bazie danych-->


  1. if(isset($_POST['submit']))
  2. {
  3. $z1=$_POST['submit'];
  4. $koszyk = "SELECT * FROM marka2 WHERE id='$z1'";
  5. $result1 = mysql_query($koszyk) or die (mysql_error());
  6. $dane = mysql_fetch_array($result1);
  7. extract($dane); // ^pobiera dane z bazy pod danym id produktu.
  8.  
  9. if(!isset($_SESSION['koszyk'][$_SESSION['idd']]))
  10. {
  11. if(array_search($dane['naglowek']."|".$dane['cena']."|".$_SESSION['idd'].'', $_SESSION['koszyk']) === false) //Blokuje powtarzanie tej samej sesji
  12. {
  13. $_SESSION['koszyk'][$_SESSION['idd']]=$dane['naglowek']."|".$dane['cena']."|''; //dodaje sesje z danymi z bazdy MySQL
  14. $_SESSION['idd']++;
  15. }
  16. }

No i tutaj działa wszystko jak trzeba. Sesje tworzą się po mojej myśli. Schody zaczeły się w głupim i pewnie banalnym miejscu. Mianowicie przy odwołaniu się do usunięcia konkretnej tabeli z sesji.
  1. if(isset($_SESSION['idd']))
  2. {
  3. foreach($_SESSION['koszyk'] as $value)
  4. {
  5. $wynik = explode("|", $value);
  6. echo'<li class="koszyk">nazwa produktu: <b>'.$wynik[0].'</b> - cena: <b>'.$wynik[1].'</b> //wyświetla wszystkie tabele
  7. <input type="submit" name="usun1" value="'.$value.'"> <br></li>'; // input posiada wartość całej tabeli w sesji
  8. }
  9. }

No i teraz gwiazda tego tematu: funkcja UNNSET
  1. if(isset($_POST['usun1']))
  2. {
  3. unset($_SESSION['koszyk'][1]);
  4. }

Efekt tego skryptu jest taki, ze po wykasowaniu wszystkich sesji i dodaniu na nowo paru kolejnych produktów, mogę usunąć tylko jeden z nich. Każdy kolejny po naciśnieciu submita ani drgnie aż do ponownego wyczyszczenia całej sesji. Próbowałem googlowach i tworzyć coś na wzór rzeczy które znalazłem, ale żadna z nich nie działa. Finalnie przedstawiłem tą o to wersje, bo jest chyba najbardziej przejrzysta. Mało ogarniam programowanie w PHP, ale staram się naucz czegoś nowego, a akurat teraz w dodatku dostałem zlecenie zrobienia prostego sklepu. Byłbym bardzo wdzięczny za pomoc. Pozdrawiam

Ten post edytował gitbejbe 27.08.2012, 19:43:20
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
gitbejbe
post
Post #2





Grupa: Zarejestrowani
Postów: 516
Pomógł: 63
Dołączył: 27.08.2012

Ostrzeżenie: (0%)
-----


cały skrypt polega na tym, ze do tej samej sesji o nazwie "koszyk", dodawane są kolejne wartości (którymi są produkty w sklepie). W przypadku wybrania 6 produktów gdzie sesja przechowuje dane o nazwie produktu i jego cenie, za cholerę nie potrafię odwołać się do indexu np trzeciego produktu. To już 2 dzień walki a ja nadal stoje w miejscu. NAprawdę z mojej strony mam olbrzymią prośbę, aby móc mnie jaśniej naprowadzić o co w tym wszytskim chodzi i jak to działa. Nie bez powodu jestem w dziale "Przedszkole" bo taki jest mój poziom wiedzy o PHP. Za przykład w postaci kodu jestem w stanie oddać pół królestwa i rękę mojej siostry !

@edit: z tego ja wnioskuje, to mam w tym projekcie 2 sesje, "koszyk" oraz "idd". Tylko sesja Id ulega inkrementacji.
  1. if(array_search($dane['naglowek']."|".$dane['cena']."|", $_SESSION['koszyk']) === false)
  2. {
  3. $_SESSION['koszyk'][$_SESSION['idd']]=$dane['naglowek']."|".$dane['cena']."|";
  4. $_SESSION['idd']++;
  5. }

W takim razie jak mam odszukać index sesji "koszyk". Nawet nie wiem czy się on tworzy , a już tym bardziej -jeśli się tworzy, jak go wyszukać.

Ten post edytował gitbejbe 28.08.2012, 17:27:06
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.12.2025 - 21:33