Nie owijając w bawełnę, mam pewien problem ze skryptem, którego piszę. Dokładniej rzecz biorąc piszę skrypt umożliwiający użytkownikom wybór ulubionych piosenek oraz dodanie ich na swoją listę. Sam skrypt ma działać bez bazy danych, a lista danych utworów powinna być dostępna tylko dla danego użytkownika. Początkowo zamierzałem dane te zapisać w $_SESSION, lecz niestety nie rozwiązało to sprawy - po zamknięciu przeglądarki dane ulegają usunięciu, a nie na tym to ma polegać. Przy użyciu $_COOKIE wyglądało początkowo, że wszystko jest w porządku jednak sam zapis danych do $_COOKIE trwa zbyt długo, co utrudnia działanie skryptu. W momencie dodania utworu do listy wywoływane są dwie funkcje, z czego pierwsza funkcja służy do zapisu utworu do COOKIE a druga do odświeżenia całej listy. W przypadku $_SESSION te rozwiązanie odniosło skutek pozytywny i całość przebiegała poprawnie. W przypadku $_COOKIE funkcja pierwsza trwa zbyt długo i zostaje wywołana funkcja wyświetlania zawartości $_COOKIE przed zmianą.
<?php function edytujListe() { else { $wynik .= "<table width='700px'>"; foreach ($_COOKIE["utwor"] as $i => $value) { $wynik .= "<tr><td>".$value."</td><td><a href='#' onclick=\"xajax_usunUtwor('".$i."'); xajax_edytujListe();\">Usuń</td></tr>"; } $wynik .= "</table>"; } $objResponse = new xajaxResponse(); $objResponse->assign("wynik","innerHTML",$wynik); return $objResponse; } function usunUtwor ($arg) { $cookie = 'utwor['.$arg.']'; } //funkcja dodająca dany utwór z listy function dodajDoPlaylisty($nick, $key, $utwor_nazwa) { $utworUrl = 'http://'.$nick.'.localhost/'.$key; $cookie = 'utwor['.$utworUrl .']'; } ?>
Przy wywoływaniu tego:
<?php <a href='#' onclick="xajax_usunMP3('".$i."'); xajax_edytujListe();\">Usuń</a> ?>
Powinno najpierw usunąć utwór a następnie ponownie wyświetlić listę. A niestety tak nie jest. Najpierw jest wyświetlana lista a dopiero później zmiana $_COOKIE, przy $_SESSION problem ten nie występował. Proszę o pomoc.
Z góry dziękuję za pomoc.