Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: AJAX + PHP. Problem ala koszyk.
Forum PHP.pl > Forum > Przedszkole
casperii
Witam, w pliku index.php mam kod:

  1. $.ajax({
  2. type: 'POST',
  3. url: 'dodaj.php',
  4. data:
  5. {
  6. 'kod': kod
  7. }
  8. })

oraz drugą funkcję w index.php
  1. $.ajax({
  2. type: 'POST',
  3. url: 'pokaz.php',
  4. dataType: 'html',
  5. success: function(dane)
  6. {
  7. }
  8. })

w pliku dodaj.php
  1. $_SESSION['kod'] = $_POST['kod'];


oraz w pliku pokaz.php
  1. <?php echo $_SESSION['kod']; ?>


Do tej pory wszystko działa ok, lecz chciałbym aby w pliku pokaz.php zrobić jakiś while na sesjach czyli żeby mi pokazało wszystkie wyklikane zmienne $kod. Nadmienię, że każda wartość value jest inna dla tej zmiennej $kod.
Na chwilę obecną wygląda to tak, że jak wybiorę $kod to pokaże mi się ona wczytana poprzez AJAX, ponowne wybranie innej wartości po prostu tylko nadpisuje a nie dodaje kolejnego poniżej tamtej wartości zmiennej $kod. Mam nadzieję , że zrozumieliście mój problem.
pitu
Wrzucaj je do tablicy np.:
  1. $_SESSION['kody'][] = $_POST['kod'];


Następnie wyświetlaj:
  1. foreach($_SESSION['kody'] as $kod){
  2. echo $kod;
  3. }
casperii
A jeśli będę chciał osiągnąć taki wynik:
$kod = wartość różna pobrana z ID i pobrana ajaxem.
$zmienna2 = wartość różna wpisywana z inputa

  1. foreach($_SESSION['kody'] as $kod){
  2. echo $kod;
  3. }


i w powyższej pętli chcę osiągnąć żeby wyświetlić wartość $zmienna2.

Czyli jeżeli w formularzu wpisze w input name="$zmienna2" wpisze TEST i klikne w "Dodaj" to ma wysłać ajaxem 2 wartości zmiennych $kod, $zmienna2
Następnie to samo wykonam z tym, że w input name="$zmienna2" wpisze TEST2. To w pliku pokaz.php ma mieć postać:

KOD 123 - zmienna TEST
KOD 133 - zmienna TEST2

i tak ma się zwiększać za każdym razem co prześle wartości ajaxem.
nospor
No to zamiast pojedynczej wartosci wpisuj do sesji tablice wartosci
  1. $_SESSION['kody'][] = array(
  2. 'kod' =>$_POST['kod'],
  3. 'cosinnego' => $_POST['cosinnego']
  4. );

I wyswietlaj
  1. foreach($_SESSION['kody'] as $rek){
  2.  
  3. echo $rek['kod'];
  4. echo $rek['cosinnego'];
  5.  
  6. }
casperii
Dziękuję koledzy smile.gif

Jeszcze tylko 1 prośba. Jak zrobić by nie dopisywało kolejnych hmm rekordów (?) do pętli for, tylko już istniejące w session aktualizowało.

Bo teraz to wygląda tak:
KOD 123 - TEST
KOD 321 - TEST2
KOD 123 - COŚ INNE
KOD 321 - TEŻ COŚ INNE

A chcę osiągnąć efekt taki , że jeśli KOD 123 - TEST już jest w pętli foreach to kolejna próba dopisania spowoduje nadpisanie już tej session $kod.
Próbowałem coś takiego ale wywala błąd:

  1. $_SESSION['kod'] = $_POST['kod'];
  2. if(!isset($_SESSION['kod']){
  3. $_SESSION['kody'][] = array(
  4. 'kod' => $_POST['kod'],
  5. 'inny' => $_POST['inny']);
  6. }


Warning: Invalid argument supplied for foreach()
nospor
Poprostu zapisuj kody jako klucze.

nie:
$_SESSION['kody'][] = array(
'kod' =>$_POST['kod'],
'cosinnego' => $_POST['cosinnego']
);

a:
$_SESSION['kody'][$_POST['kod']] = array(
'kod' =>$_POST['kod'],
'cosinnego' => $_POST['cosinnego']
);

Reszta bez zadnych zmian. I mysl troszke, bo takie glupoty wypisujesz ze az glowa boli wink.gif
casperii
Nospor dzięki za pomoc, ale z tym kasowanie session nie mogę sobie poradzić.
Btw. ten temat Temat: usuwanie session AJAX PHP nieco innego problemu się tyczy więc nie rozumiem, czemu ma być zamknięty?
nospor
Problem dotyczy tego samego wątku.

Pisalem juz bys troszke myslal.... Skoro postem wysylasz kod, to masz kasowac ten kod a nie tekst 'kod'... Naprawde nie widzisz roznicy miedzy tekstem 'kod' a konkretną wartością kodu questionmark.gif

Przy zalozeniu, ze zrobiles to co napisalem w poprzednim poscie, to kasowanie robi sie tak:

unset($_SESSION['kody'][$_POST['kod']]);
casperii
Bez nerwów, czasem człowiek głupoty robi zanim wpadnie na właściwy tor. Nikt nie jest od razu we wszystkim ASem.
Sugerowałem się tym ,co napisał kolega w tamtym wątku : $_SESSION[$_POST['kod']]

Nie jestem typem , który czeka na gotowca, ale zawsze możesz wskazać właściwy tor.
nospor
Nikt nie mowi o byciu ASem tylko o mysleniu nad tym, co sie pisze.

np. tu:
$_SESSION['kod'] = $_POST['kod'];
Najpierw ustawiasz pod session kod, a potem sprawdzasz, czy nie jest ustawiony
if(!isset($_SESSION['kod']){

Jak moze nie byc ustawiony skoro linijke wczesniej go ustawiles. To jest wlasnie niemyslenie nad tym co się pisze i o to mi chodzi.

przenosze na przedszkole.

Cytat
ale zawsze możesz wskazać właściwy tor.

W tym watku caly czas podaje ci poprawne odpowiedzi, wiec nie rozumiem o czym piszesz. Usuwanie też ci podalem jak masz zrobic.
casperii
Źle mnie zrozumiałeś smile.gif Nie pisałem, że mi nie pomogłeś (nawet dałeś gotowca), tylko zamiast byciem złym (przynajmniej ja takie wrażenie odczułem) lepiej jakbyś wskazał / wyjaśnił tym bardziej , że jesteś moderatorem i w jakiś stopniu reprezentujesz te forum. Ogólnie miałem na myśli by być dla siebie milszym - mam na myśli grupę społeczną tego forum, by nie było zaraz jakiegoś homo nie wiadomo :-) Jeszcze raz dzięki.
nospor
NIe jestem zły. Poprostu nie głaszcze dzieci po główce. Zamiast tego mowie, by zaczeli troche myslec nad tym co piszą. Przykład konkretnego niemyslenia ci podalem. I tu nie ma nad czym sie cackac, tylko trza sie wziasc do roboty. To jest forum programistyczne a nie forum "o jej, dzidzi się ulało, daj, wytre" wink.gif
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.