![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 20.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam plik PHP, który wysyła zmienne do pliku HTML. Te zmienne, np. $sHash, $iId, $Alt, $sFileLink itd. służą do dynamicznego generowania galerii obrazów i w pliku HTML przyjmują postać __hash__, __alt__, __fileLink__ itd. Czyli mamy np. <a href="__fileLink__"><img src="__imgUrl__" alt="__alt__" width="100%" height="100%"></a> I teraz pytanie: Czy możliwe jest przesłanie jednej z tych zmiennych do funkcji JavaScript za pomocą onclick? Jeśli tak, to jak powinno to wyglądać? onclick="myCall('__ZMIENNA__');" ? Próbowałem, ale w tym przypadku do funkcji dociera nie zmienna, ale jej ostatnia wartość (np. alt albo hash ostatniego wyświetlonego na stronie zdjęcia). A po stronie JS? <script src="//code.jquery.com/jquery-1.11.0.min.js"></script> <script> function myCall( ![]() var request = $.ajax({ url: "URL DO INNEGO PLIKU PHP", type: "POST", dataType: "html" }); request.done(function(msg) { $("#mybox").html(msg); }); request.fail(function(jqXHR, textStatus) { alert( "Request failed: " + textStatus ); }); } </script> Z góry dziękuję za wskazówki! EDIT: Dodam jeszcze może dla wyjaśnienia, co chcę osiągnąć: Wyświetla się galeria zdjęć, użytkownik klika na link pod jednym ze zdjęć, co powoduje zmianę liczby wyświetleń danego zdjęcia o 1. Na zasadzie: "Views: 13". Click. "Views:14". Tak więc to kliknięcie powinno uruchomić skrypt i zwrócić zmienną (w tym przypadku hash zdjęcia), którą ajax wyśle dalej do pliku PHP, który z kolei uaktualni tabelę Photos w tym wierszu, w którym znajduje się konkretny hash. Wszystko to już zrobiłem, jedyne co nie działa to właśnie przesłanie odpowiedniej zmiennej, bo do tej pory czego bym nie próbował, +1 view dostaje zawsze ostatnie zdjęcie na stronie... Ten post edytował Singularity 20.05.2014, 18:55:51 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 479 Pomógł: 97 Dołączył: 6.09.2011 Skąd: php.net :) Ostrzeżenie: (0%) ![]() ![]() |
-------------------- Manual prawdę Ci powie.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 20.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Ok, to już jakiś krok do przodu, ale ja nie chcę przesyłać linku tylko hash. Próbuję tak, ale nie działa:
HTML: <a class="po_click" id="__hash__" href="#"><img></a> JS: <script> $('.po_click').on('click', function(){ var request = $.ajax({ url: "http://my-site/templates/viewscounter.php", type: "GET", data: {n : 'id'}, dataType: "html" }); }); </script> viewscounter.php: <?php Header("content-type: application/x-javascript"); $hash = $_GET['n']; mysql_connect("IP", "USER", "PASSWORD") or die(mysql_error()); mysql_select_db("DB NAME") or die(mysql_error()); mysql_query("UPDATE `bx_photos_main` SET `Views` = `Views` +1 WHERE `Hash` = '".$hash."'"); Linki i połączenie z bazą danych działa. Sprawdzałem. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 479 Pomógł: 97 Dołączył: 6.09.2011 Skąd: php.net :) Ostrzeżenie: (0%) ![]() ![]() |
Pokazałem Ci tylko wzór, wystarczy zmienić attr('href') na attr('id'), nie czekaj zawsze na gotowca tylko kombinuj :-)
-------------------- Manual prawdę Ci powie.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 20.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Kombinowałem
![]() Ale teraz jest nowy problem - wyskakuje mi kilka alertów 'undefined' a ilość wyświetleń zdjęcia zmienia się o losową(?) liczbę - 5,6, czasem kilkanaście! Może wkleję całe pliki. Najpierw PHP (w tym przypadku tylko funkcja, bo cały plik jest ogromny), który wysyła zmienne do html:
Teraz HTML + skrypt:
viewscounter.php i update bazy danych:
Jestem zupełnie nowy w tym, ale może chodzi o to, że w tym przypadku kliknięcie na pojedyncze zdjęcie tak naprawdę uruchamia skrypt dla każdego zdjęcia w galerii, wykonuje go tylko dla klikniętego, a resztę zwraca jako undefined? No i dlaczego pojedyncze kliknięcie powoduje kilka odwołań do bazy danych? EDIT: Już wiem. Wszystko zależy od kolejności zdjęcia. Dla ostatniego na stronie ilość odwiedzin rośnie o 0, dla przedostatniego o 1, trzeciego od końca o 2 itd. Jak zrobić, żeby niezależnie od kolejności wzrastała o 1 ? Ten post edytował Singularity 20.05.2014, 22:52:54 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 17.06.2025 - 13:03 |