Skocz do zawartości

Problem z jQuery oraz PHP


holee

Rekomendowane odpowiedzi

Witam;

Na początku zaznaczę, że jestem amatorem ;) jednak dość upartym i staram się na swoje potrzeby poduczać. Otóż mam problem, którego rozwiązania nie widzę.

Jest mapa Polski z województwami jako linkami. Klikam w województwo, za pomocą jQuery zapisuję w bazie. Na jeden produkt można głosować raz więc zapisuję ip klikającego i sprawdzam.

Wszystko działa jak należy.

Po każdym kliknięciu wyświetlać powinien się komunikat, albo "dziękuję za głos", albo "już głosowałeś".

I komunikaty mi się wyświetlają jednak tylko jeśli kliknę województwo, które uprzednio zostało już kliknięte przez kogoś. Jeśli kliknę w dane województwo jako pierwszy - głos się zapisze, jednak komunikat ni cholery nie chce się pojawić.

Działający przykład można zobaczyć pod adresem: https://www.winka.net/wino/amarena-1535.html (tuż nad komentarzami).

Wyświetlam tylko 10 województw z największą ilością głosów.

Co ciekawe wg firebuga, plik _POST.php jest wykonywany w każdym przypadku i wypluwa poprawne dane ;/ Daje dla sprawdzenia dump'a w _POST.php (przed jakimikolwiek warunkami) i wyświetla on się tylko przy tych województwach, które działają prawidłowo (tam gdzie komunikaty działają), tam gdzie nie komunikatów - tam nie wyświetla dump nic.

W pliku _POST.php jest prosto - jeśli wcześniej nie głosowałeś to zlicza głos, zapisuje ip i wyświetla komunikat że jest ok, jeśli Twoje ip było wcześnie zapisane - dostajesz komunikat, że nie możesz drugi raz.

Nie mam zielonego pojęcia czy z tym danych można coś wywnioskować, bo ja już traumę przechodzę ;) Może jakaś podpowiedź gdzie mogłem popełnić błąd ?

Będę wdzięczny za jakąkolwiek pomoc.

Pozdrawiam

Niedrogie wpisy w płatnych, zadbanych, długowiecznych katalogach (hurtem taniej - pisać na PW):

Odnośnik do komentarza
Udostępnij na innych stronach

Sprawdziłem jaka jest różnica w generowanym kodzie w przypadku kiedy informacja się wyświetla i wtedy kiedy się nie wyświetla. Różnice zaznaczyłem pogrubionym tekstem:

- informacja wyświetla się

<span class="w2">[b]100%[/b] </span><span class="w3">([b]1[/b] os.)

- informacja się nie wyświetla

<span class="w2">[b]0%[/b] </span><span class="w3">([b]0[/b] os.)

W tym drugim przypadku skrypt który tworzy okienko nie działa prawidłowo, prawdopodobnie nie potrafi zinterpretować tego kodu. Wnioskuję zatem, że problemem jest zapis 0% - ja bym spróbował usunąć ten procent i sprawdzić czy wtedy zadziała. Procenty potrafią być paskudne ;) Daj znać jak poszło.

Jesteś bezczelny, nieuprzejmy i nie przepuszczasz kobiet w drzwiach? Zapraszam na ulubione24.pl

Odnośnik do komentarza
Udostępnij na innych stronach

Darek, dzięki za odpowiedź. Prawdę mówiąc nie za bardzo rozumiem w jaki sposób może '%' przeszkadzać. Procentów nie zapisuję nigdzie bazie, a jedynie je obliczam za podstawie ilości głosów.

Oto plik _POST.php (jego część):

if ($_POST['akcja'] == 'wina_wojew') {

//Sprawdzam czy w bazie nie mam IP


if($count==0)
{

//Jeśli nie ma, zapisuję głos do bazy

//Następnie zapisują IP klikającego

//Wyświetlam komunikat

echo "
<script type=\"text/javascript\">
$(function() {
	$( \"#dialog:ui-dialog\" ).dialog( \"destroy\" );

	$( \"#dialog-modal\" ).dialog({
		height: 150,
		modal: true,
		title:'Informacja',
		width:410
	});
});
</script>

<div id=\"dialog-modal\" title=\"Basic modal dialog\">
<p>Dziękujemy za wskazanie miejsca spotkania powyższego wina.</p>
</div>

";
}
else
{

//Jeśli wcześniej klikał - wyświetlam inny komunikat


echo "
<script type=\"text/javascript\">
$(function() {
	$( \"#dialog:ui-dialog\" ).dialog( \"destroy\" );

	$( \"#dialog-modal\" ).dialog({
		height: 150,
		modal: true,
		width:410,
		title:'Błąd'
	});
});
</script>

<div id=\"dialog-modal\" title=\"Basic modal dialog\">
<p>Wskazywać miejsce spotkania powyższego wina możesz tylko raz.<br></p>
</div>
";
}

//Wczytuję dane z bazy i wyświetlam na stronie

echo '<span class="w2">'.$rank_woj.'% </span><span class="w3">('.$result[0].' os.)';


}

Nadal uważasz, że przyczyną mogą być procenty ?

Nie mówię, że tak nie jest - tylko nie wiem w jaki sposób można by było problem usunąć.

Pozdrawiam

Niedrogie wpisy w płatnych, zadbanych, długowiecznych katalogach (hurtem taniej - pisać na PW):

Odnośnik do komentarza
Udostępnij na innych stronach

Chodziło mi o samo usunięcie znaku procenta "%". To sekunda roboty, a chodzi tylko o to, aby sprawdzić czy wtedy zadziała. Miałem kiedyś problem właśnie z kodowaniem specjalnych znaków (trzeba je kodować aby były prawidłowo wyświetlane kiedy chcesz je wysłać do drugiego skryptu), a procent jest właśnie takim problematycznym znaczkiem. Nie mówię że to musi być akurat to, ale warto sprawdzić.

Jesteś bezczelny, nieuprzejmy i nie przepuszczasz kobiet w drzwiach? Zapraszam na ulubione24.pl

Odnośnik do komentarza
Udostępnij na innych stronach

Zakomentowałem linię kody echo... gdzie znajduje się %. Nadal nie działa prawidłowo.

Popzdrawiam

Niedrogie wpisy w płatnych, zadbanych, długowiecznych katalogach (hurtem taniej - pisać na PW):

Odnośnik do komentarza
Udostępnij na innych stronach

w JS masz:

success: function(html)
{
  $("#wynik2-"+id_woj).html(html);
}
});

problem wynika z tego, że dla województw, których nie masz w rankingu nie ma spana z wynikiem w kodzie stron, tak więc $("#wynik2-"+id_woj) zwraca pusty wynik

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki Bełdzio, mam nadzieję że jakoś dam radę to poprawić bo póki co to skomplikowanie zabrzmiało :) No, ale to po robocie.

Pozdrawiam

Niedrogie wpisy w płatnych, zadbanych, długowiecznych katalogach (hurtem taniej - pisać na PW):

Odnośnik do komentarza
Udostępnij na innych stronach

Załamać się idzie, zaraz zacznę ciskać piorunami :) Więc rozwiązaniem mogłaby być zmiana zapytania i wyświetlanie wszystkich województw w rankingu - nawet tych z zerowymi głosami ? Trochę mi to nie na rękę gdyż komplikuje mi to działanie tego rankingu.

Dane głosowania zapisuję w tabeli w postaci:

id | id-wina | id-wojewodztwa

W chwili obecnej łączę tabelę z zadeklarowanymi województwami z powyższą tabelą i wyświetlam te województwa które obecne są w obu tabelach. Dzięki temu mam jedno zapytanie i możliwość sortowania po ilości głosów. Jeśli chcę wyświetlać wszystkie województwa to muszę jak rozumiem dwoma zapytaniami zadziałać - jedno wyciąga wszystkie województwa, drugie dane głosowań. Jednak nie posortuję wówczas województw po ilości głosów ;/

Czy jest jakiś sposób aby zmodyfikować ten kod:

success: function(html)
{
  $("#wynik2-"+id_woj).html(html);
}
});

aby komunikaty działały mimo nie zwracania niczego ?

Próbowałem nawet drugi raz ten identyfikator wyświetlać aby zawsze znajdował się w kodzie, a jego treść ukrywać - i spoko komunikaty wyświetlają się we wszystkich województwach, jednak pojawił się kolejny problem gdyż oprócz wyświetlania wyników klikania i komunikatu - w treści wyświetla się komunikat po raz drugi (nie w warstwie, lecz w treści strony) ;/

Ja to chyba za nerwowy jestem. Jakby ktoś znalazł chwilę na przeczytanie mojego pokrętnego posta i pomoc, to będę wdzięczny.

Pozdrawiam

Niedrogie wpisy w płatnych, zadbanych, długowiecznych katalogach (hurtem taniej - pisać na PW):

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności