Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] usowanie zmiennej z tablicy
XP'ek
post
Post #1





Grupa: Zarejestrowani
Postów: 263
Pomógł: 9
Dołączył: 3.05.2009
Skąd: Wroc

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


Witam

Mam taki problem, tworze koszyk zakupow na sesjach i gdy usuwam jeden produkt z koszyka usowa mi wszystkie pod nim, czemu tak sie dzieje?

oto kod:

  1. <?php
  2.  
  3.  
  4.  
  5. if(isset($_POST['basked_add']) && $_POST['basked_add'] == 1)
  6. {
  7. $product = Array('name' => 'jakis protukt', 'nr' => '2', 'sp' => '120', 'price' => '32.99');
  8. $_SESSION['basked'][] = $product;
  9. }
  10.  
  11.  
  12. if(isset($_POST['basked_reset']) && $_POST['basked_reset'] == 1)
  13. {
  14. unset($_SESSION['basked']);
  15. }
  16.  
  17.  
  18. if(isset($_POST['basked_delete']))
  19. {
  20. $nr = $_POST['basked_delete'];
  21. unset($_SESSION['basked'][$nr]);
  22. }
  23.  
  24.  
  25.  
  26. $i=0;
  27. $r=0;
  28. $p=0;
  29.  
  30. while(isset($_SESSION['basked'][$i]))
  31. {
  32. ".$_SESSION['basked'][$i]['name']."*
  33. ".$_SESSION['basked'][$i]['nr']."*
  34. ".$_SESSION['basked'][$i]['sp']."*
  35. ".number_format($_SESSION['basked'][$i]['price'], 2)."zł<br />
  36. <form action='' method='POST'>
  37. <input type='hidden' name='basked_delete' value='".$i."'>
  38. <input type='submit' value='usuń'>
  39. </form>";
  40.  
  41. $p=$p+$_SESSION['basked'][$i]['price'];
  42. $i++;
  43. }
  44.  
  45.  
  46. print "Suma: ".number_format($p, 2)."zł<br />
  47. W koszyku masz ".($i)." produktów";
  48.  
  49.  
  50.  
  51. print "<form action='' method='POST'>
  52. <input type='hidden' name='basked_reset' value='1'>
  53. <input type='submit' value='Wyczyść koszyk'>
  54. </form>
  55.  
  56. <form action='' method='POST'>
  57. <input type='hidden' name='basked_add' value='1'>
  58. <input type='submit' value='dodaj'>
  59. </form>";
  60.  
  61. ?>


prosze sie nie przestraszyc to dopiero wersja w trakcie pracy

Ten post edytował XP'ek 9.09.2010, 20:40:28
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




nie: usowam
a: usuwam

bbcode nie: CODE
bbcode a: PHP

  1. if(isset($_POST['basked_delete']))
  2. {
  3. $nr = $_POST['basked_delete'];
  4. echo 'przed, nr:'.$nr;
  5. print_r($_SESSION['basked']);
  6. unset($_SESSION['basked'][$nr]);
  7. echo 'po';
  8. print_r($_SESSION['basked']);
  9.  
  10. }
Go to the top of the page
+Quote Post
XP'ek
post
Post #3





Grupa: Zarejestrowani
Postów: 263
Pomógł: 9
Dołączył: 3.05.2009
Skąd: Wroc

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


nie rozumiem..

Co ma mi pokazac twoj kod, wydrukowal mi jedynie tablice
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Twoj kod ma np. wydrukowac:
"przed, nr"
oraz całą resztę. Wklej więc dokladnie co wydrukował.
Go to the top of the page
+Quote Post
XP'ek
post
Post #5





Grupa: Zarejestrowani
Postów: 263
Pomógł: 9
Dołączył: 3.05.2009
Skąd: Wroc

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


Skasowałem tablice nr 1 czyli drugi produkt i kurcze widze ze tablica nie przesunela sie, jak moglbym to latwo obejsc?


nr: 1

Array ( [0] => Array ( [name] => jakis protukt [nr] => 2 [sp] => 120 [price] => 32.99 ) [1] => Array ( [name] => jakis protukt [nr] => 2 [sp] => 120 [price] => 32.99 ) [2] => Array ( [name] => jakis protukt [nr] => 2 [sp] => 120 [price] => 32.99 ) [3] => Array ( [name] => jakis protukt [nr] => 2 [sp] => 120 [price] => 32.99 ) )

Array ( [0] => Array ( [name] => jakis protukt [nr] => 2 [sp] => 120 [price] => 32.99 ) [2] => Array ( [name] => jakis protukt [nr] => 2 [sp] => 120 [price] => 32.99 ) [3] => Array ( [name] => jakis protukt [nr] => 2 [sp] => 120 [price] => 32.99 ) )
Go to the top of the page
+Quote Post
everth
post
Post #6





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Wiesz gdzie prawdopodobnie leży błąd? W użyciu dwóch formularzy na stronie. Patrz linia 53-56 i zastanów się dlaczego, jak wysyłasz formularzem 'dodaj' to jednocześnie aktywujesz kod php między liniami 13-16.
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Czyli jednak nie kasowalo ci nastepnych. Skad wiec ten wniosek zmysliles?
Cytat
t i kurcze widze ze tablica nie przesunela sie
Normalne. Indeksy nie są przeliczane.
Po co wogóle potrzebna ci ciągłość numeracji? Kod co tu pokazales moglby się bez tego spokoknie obejsc
Ale jesli się nadal uperasz na to to uzyj array_values()

Cytat
jak wysyłasz formularzem 'dodaj' to jednocześnie aktywujesz kod php między liniami 13-16.
Tja.... zrob sobie dwa formularze testowe, wyslij jeden i sprawdź ile formularzy się wysłało... potem wróc i zedytuj posta (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
XP'ek
post
Post #8





Grupa: Zarejestrowani
Postów: 263
Pomógł: 9
Dołączył: 3.05.2009
Skąd: Wroc

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


ale to przeciez sa dwa osobne formularze i kazdy zwraca inna zmienna POST takze nie moze aktywowac innej funkcji

nospor:
;p nie zmyslilem poprostu nie wydrukowalem tablicy a jak usunelem ze srodka nie wyswietlalo mi nastepnych i przyszlo mi do glowy ze skasowaly sie (IMG:style_emoticons/default/winksmiley.jpg)


jak móglbym wyswietlic wszystkie elementy bez ciaglosci tablicy?

Ten post edytował XP'ek 9.09.2010, 21:01:02
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
p nie zmyslilem poprostu nie wydrukowalem dablicy a jak usunelem ze srodka nie wyswietlalo mi nastepnych i przyszlo mi do glowy ze skasowaly sie
Następnym razem niech ci nic nie przychodzi a po prostu sprawdź. Jako przedstawiciel początkujących programistów, odpowiedz mi proszę na pytanie:
Czemu wy nigdy nie sprawdzacie tylko uważacie że wasze kody są doskonałe? Przecież dopiero zaczynacie, więc powinniście podchodzić bardzo podejrzanie do tego co piszecie, a wy wręcz odwrotnie. Why?

Cytat
a jak usunelem ze srodka nie wyswietlalo mi nastepnych
Nic dziwnego, zamiast zrobic foreach to ty robisz cos takiego:
while(isset($_SESSION['basked'][$i]))
totalny bezsens. A potem płaczesz ze masz dziure w numeracji.

Cytat
jak móglbym wyswietlic wszystkie elementy bez ciaglosci tablicy?
FOREACH - zanim zaczniesz programować to weź zapoznaj sie z podstawami języka.

ps : przenosze
Go to the top of the page
+Quote Post
XP'ek
post
Post #10





Grupa: Zarejestrowani
Postów: 263
Pomógł: 9
Dołączył: 3.05.2009
Skąd: Wroc

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


To ze nei znalem funkcji prin_t ani nie uzywam funkcji forerach nie znaczy ze mi sie nie chce sprawdzac tydzien siedzialem nad jedna funkcja a nie pisalem na forum wiec chyba warto zaoszczedzic czasami czas i napisac na forum. A po za tym zaloze sie ze czasami nawet tobie najprostsze rzeczy sprawiaja problem (IMG:style_emoticons/default/winksmiley.jpg) pzdr
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
A po za tym zaloze sie ze czasami nawet tobie najprostsze rzeczy sprawiaja problem
Nie odpowiedziałeś na moje pytanie (IMG:style_emoticons/default/tongue.gif)
Nie, jak zaczynam programować coś nowego, to siadam w pierwszy lepszy kurs by poznać podstawy. Jak zaczynam używać jakiś rzeczy w danym języku, to poznaję podstawy o tej rzeczy. W Twoim przypadku jeśli bawisz się tablicami, to masz zajrzej do manuala, gdzie opisane są tablice i masz to przestudiować. Znajdziesz tam bardzo wiele pozytecznych informacji.

Cytat
To ze nei znalem funkcji prin_t
Patrz punkt o podstawach.

Cytat
tydzien siedzialem nad jedna funkcja a nie pisalem na forum wiec chyba warto zaoszczedzic czasami czas i napisac na forum
Chyba warto jednak oszczedzić czas i poznac podstawy niż siedzieć tydzień nad pierdułą? (IMG:style_emoticons/default/tongue.gif)

ps: masz gratisa:
Temat: Jak poprawnie zada pytanie
wkuj na pamięć.
Go to the top of the page
+Quote Post
everth
post
Post #12





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


@nospor - hm, wychodzi na to że masz rację. Dla mnie to o tyle dziwne że zawsze należało unikać tworzenia podwójnych formularzy. Gdzieś tam mi siedzi na zwojach że normalnie po submicie przeglądarka wysyła wszystkie formy jak leci. No cóż, teraz wiem że nie.

Postu nie zamierzam edytować bo i po co? Człowiek się wygłupił to niech cierpi (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
XP'ek
post
Post #13





Grupa: Zarejestrowani
Postów: 263
Pomógł: 9
Dołączył: 3.05.2009
Skąd: Wroc

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


wiesz czasami podstawy potrafia wyfrunac gdy sie ich nie uzywa (IMG:style_emoticons/default/tongue.gif) (IMG:style_emoticons/default/sciana.gif)

Ten post edytował XP'ek 9.09.2010, 21:16:40
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Dla mnie to o tyle dziwne że zawsze należało unikać tworzenia podwójnych formularzy.
Nie wolno zagnieżdzać formularzy. A rownoleglych formularzy można tworzyc do bólu - oczywiscie jesli jest to potrzebne (IMG:style_emoticons/default/smile.gif)

Cytat
wiesz czasami podstawy potrafia wyfrunac gdy sie ich nie uzywa
To należy wówczas je odświeżyć.
Go to the top of the page
+Quote Post
everth
post
Post #15





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Właśnie sprawdzałem skąd mi się to mogło wziąć i chyba masz rację - z zagnieżdżania formularzy i ew. konfliktów nazw musiało mi paść na tworzenie formularzy ogólnie. W każdym razie dzięki, bo tkwiłbym dalej w tym nieuświadomionym błędzie.
Go to the top of the page
+Quote Post

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: 26.08.2025 - 07:50