Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Tablice wielowymiarowe w sesji
Agape
post 15.10.2009, 18:20:56
Post #1





Grupa: Zarejestrowani
Postów: 384
Pomógł: 13
Dołączył: 16.06.2006

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


Nie mogę już, latam w internecie od godziny i nigdzie nie dostałem dokładnej odpowiedzi jak poprawić błąd:
Cytat
Cannot use string offset as an array (...) in line 16


Jestem w trakcie pisania koszyka i mam takie coś:
  1. <?php
  2. include 'panel/funkcje/polaczenie.php';
  3.  
  4. if (isset($_GET['p']) && isset($_GET['id'])){ //jezeli przeslano wszystkie wymagane dane
  5.  
  6. if (!isset($_SESSION['koszyk'])){ //jezeli sesja nie zostala utworzona
  7. $_SESSION['koszyk']=true; //tworz sesje
  8. }
  9.  
  10. $pobierz_parametry_produktu = mysql_query('SELECT `nazwa`, `cena` FROM produkty WHERE uid="'.$_GET['id'].'"');
  11. $parametry_produktu = mysql_fetch_assoc($pobierz_parametry_produktu);
  12.  
  13.  
  14. $_SESSION['koszyk'] ['id'] = $_GET['id'];
  15. $_SESSION['koszyk'] ['id'] ['nazwa_produktu'] = $parametry_produktu['nazwa'];
  16. $_SESSION['koszyk'] ['id'] ['nazwa_produktu'] ['ilosc'] = 1;
  17. $_SESSION['koszyk'] ['id'] ['nazwa_produktu'] ['ilosc'] ['cena'] = $parametry_produktu['cena'];
  18.  
  19.  
  20. echo '<pre>';
  21. print_r($_SESSION['test']);
  22. echo '</pre>';
  23.  
  24. }else die("wystapil blad");
  25. ?>


Ten post edytował Agape 15.10.2009, 18:24:20


--------------------
Go to the top of the page
+Quote Post
potreb
post 15.10.2009, 18:42:46
Post #2





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Panie zrób po parametry_produktu = mysql_fetch_assoc($pobierz_parametry_produktu);
  1. print_r($parametry_produktu);


I dostaniesz odpowiedź.
I stosuj przy zapytaniach mysql_error.

Ten post edytował potreb 15.10.2009, 18:44:53


--------------------

Go to the top of the page
+Quote Post
Agape
post 15.10.2009, 19:02:52
Post #3





Grupa: Zarejestrowani
Postów: 384
Pomógł: 13
Dołączył: 16.06.2006

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


Jednakże myślę, że to nie o to chodzi, bo printuje mi odpowiednio:
Kod
Array ( [nazwa] => CCBT [cena] => 222 )


Zmieniłem, żeby wstawiało zwykły string do tabel:
  1. <?php
  2. include 'panel/funkcje/polaczenie.php';
  3.  
  4. if (isset($_GET['p']) && isset($_GET['id'])){ //jezeli przeslano wszystkie wymagane dane
  5.  
  6. if (!isset($_SESSION['koszyk'])){ //jezeli sesja nie zostala utworzona
  7. //$_SESSION['koszyk']=true; //tworz sesje
  8. }
  9.  
  10. $pobierz_parametry_produktu = mysql_query('SELECT `nazwa`, `cena` FROM produkty WHERE uid="'.$_GET['id'].'"') or die(mysql_error());
  11. $parametry_produktu = mysql_fetch_assoc($pobierz_parametry_produktu);
  12.  
  13. print_r($parametry_produktu);
  14.  
  15. $_SESSION['koszyk1'] ['id'] = 'a';
  16. $_SESSION['koszyk1'] ['id'] ['nazwa_produktu'] = 'a';
  17. $_SESSION['koszyk1'] ['id'] ['nazwa_produktu'] ['ilosc'] = 'a';
  18. $_SESSION['koszyk1'] ['id'] ['nazwa_produktu'] ['ilosc'] ['cena'] = 'a';
  19.  
  20.  
  21. //$_SESSION['koszyk'] ['koszt_calkowity'] += $parametry_produktu['cena'];
  22. //wracaj na $p
  23.  
  24. echo '<pre>';
  25. print_r($_SESSION['koszyk1']);
  26. echo '</pre>';
  27.  
  28. }else die("wystapil blad");
  29. ?>


ale wypluwa mi:
Kod
Warning: Cannot use a scalar value as an array in /......../koszyk.php on line 16

Warning: Cannot use a scalar value as an array in /......../koszyk.php on line 17

Warning: Cannot use a scalar value as an array in /......../koszyk.php on line 18

Warning: Cannot use a scalar value as an array in /......../koszyk.php on line 19
1


Tych dwóch błędów nie mogę nigdzie znależć, żeby było opisane co to powoduje. Szukałem ile się dało ale nie znalazłem solucji a jedynie poprawione przykłady, z których trudno wywnioskować co "nie grało".
A może to ja źle przypisuje zmienne do tablicy ?;/.

Ten post edytował Agape 15.10.2009, 19:11:09


--------------------
Go to the top of the page
+Quote Post
potreb
post 15.10.2009, 19:40:49
Post #4





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Trochę mnie zdziwiło bo nie spotkałem się z takim czymś, a raczej nie miałem możliwości testowania. W necie mało, co wg mnie świadczy że coś jest niedopracowane lub się mylę, ale dam ci inny przykład.
  1. $_SESSION['koszyk'] = array("id" => 1, "id" => array("nazwa_produktu" => "cos"));
  2. echo '<pre>';
  3. print_r($_SESSION['koszyk']);
  4. echo '</pre>';




--------------------

Go to the top of the page
+Quote Post
thek
post 15.10.2009, 20:54:15
Post #5





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Ja jestem ciekaw jak wygląda struktura Twoich danych. Dla mnie to jakiś dziwoląg, a nie tablica wielowymiarowa winksmiley.jpg Tablica wielowymiarowa ma strukturę:
nazwa[parametr1][parametr2]...[parametrN]
a nie:
nazwa[atrybut1][atrubut2]...[atrybutN]
Czyli ma być coś w stylu:
$_SESSION['koszyk']['przedmiot1']['id']
$_SESSION['koszyk']['przedmiot1']['nazwa']
$_SESSION['koszyk']['przedmiot1']['ilosc']
$_SESSION['koszyk']['przedmiot1']['cena']

$_SESSION['koszyk']['przedmiot2']['id']
$_SESSION['koszyk']['przedmiot2']['nazwa']
$_SESSION['koszyk']['przedmiot2']['ilosc']
$_SESSION['koszyk']['przedmiot2']['cena']

Co tworzy Ci sesyjną tablicę 3 wymiarową:
1 wymiar - nazwa zmiennej sesyjnej (tutaj koszyk)
2 wymiar - przedmiot w koszyku (tutaj przedmiot1 i 2)
3 wymiar - parametry przedmiotu( id, nazwa, ilość i cena)

Błąd jest w strukturze danych. To co stworzyłeś w żadnym wypadku nie jest 3-wymiarową tablicą tylko jakimś dziwolągiem strukturalnym.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 25.05.2025 - 05:23