Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][JavaScript][PHP]Z PHP przez HTML do JS i z powrotem ;)
Singularity
post
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( (IMG:style_emoticons/default/questionmark.gif) ? ) {
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Singularity
post
Post #2





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 20.05.2014

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


Kombinowałem (IMG:style_emoticons/default/smile.gif) Dzięki!

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:

  1. function _getSharedThumb ($iId, $sFileLink, $sHash = '')
  2. {
  3. $sIdent = strlen($sHash) > 0 ? $sHash : $iId;
  4. $result = mysql_query("SELECT `title` FROM `bx_photos_main` WHERE `Hash` = '".$sHash."'");
  5. $aUnit = array(
  6. 'imgUrl' => $this->getImgUrl($sIdent),
  7. 'hash' => $sHash,
  8. 'fancyUrl' => str_replace("browse","file",$this->getImgUrl($sIdent)),
  9. 'fileLink' => $sFileLink,
  10. );
  11. return $this->oModule->_oTemplate->parseHtmlByName('thumb.html', $aUnit);
  12. }


Teraz HTML + skrypt:

  1. $('.single_image').on('click', function(){
  2. var id = $(this).attr('id');
  3. var request = $.ajax({
  4. url: "/templates/base/viewscounter.php",
  5. type: "GET",
  6. data: { n : id },
  7. dataType: "html",
  8. });
  9.  
  10. request.done(function() {
  11. alert( $(this).attr('id') );
  12. return false;
  13. });
  14.  
  15. request.fail(function(jqXHR, textStatus) {
  16. alert( "Request failed: " + textStatus );
  17. });
  18. });
  19.  
  20. <div class="sys_file_search_pic bx_photos_file_search_pic">
  21. <a class="single_image" id="__hash__" href="__fileLink__"><img src="/images/enlarge.png" width="28px" height="28px"></a>
  22. </div>


viewscounter.php i update bazy danych:

  1. <?php
  2. Header("content-type: application/x-javascript");
  3.  
  4. $hash = $_GET['n'];
  5.  
  6. // Make a MySQL Connection
  7. mysql_connect("...", "...", "...") or die(mysql_error());
  8.  
  9. // Retrieve all the data from the "example" table
  10. mysql_query("UPDATE `bx_photos_main` SET `Views` = `Views` +1 WHERE `Hash` = '".$hash."'");


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
Go to the top of the page
+Quote Post

Posty w temacie


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.12.2025 - 20:39