Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak przypisać zapytanie sql do kliknięcia w link ?
Forum PHP.pl > Forum > Przedszkole
-Piter-
Mam link:

  1. <a href=""></a>


W jaki sposób mogę zapisać ilość kliknięć w ten link ?
Chciałbym, żeby po kliknięciu wykonało się dane zapytanie sql ale jak to zrobić ?


Daimos
no bez jaj...
sprawdź może zadziała Ci tak:
  1. <a href="link" onclick="UPDATE tabela SET pole = pole + 1 WHERE yourToLazyToReadSomeTutorials = true">tekst</a>
-Piter-
Przepraszam, ale ten dział to przedszkole a ja jestem początkujący.

Niestety Twój sposób nie działa.
Żeby wykonało się jakieś zapytanie to przecież trzeba dodać po zapytaniu:
$result = mysql_query($sql);
a w tym przykładzie tego nie ma.

Jeśli ktoś byłby tak miły i podał sposób, który działa, będę bardzo wdzięczny.
peter13135
Cytat
Niestety Twój sposób nie działa.

biggrin.gif:D:D:D:D:D


  1. <a href="plik.php?a=1">

  1. <?php
  2. if(isset($_GET['a']))
  3. {
  4. mysql_query("UPDATE...")
  5. }
  6. ?>
  7. oczywiscie wcześniej musisz się połączyć za pomocą mysql_connect i wybrać bazę za pomocą mysql_select_db
Kshyhoo
Cytat(-Piter- @ 18.07.2011, 20:33:16 ) *
Przepraszam, ale ten dział to przedszkole a ja jestem początkujący.

Ale i przedszkole musi mieć jakiś poziom... wcześniej są kursy, google, itp. Każdy tak zaczynał - a nauka najlepiej idzie, jak się uczy samodzielnie i na błędach - a nie na gotowcach.
-Piter-
Oczywiście szukałem odpowiedzi w google, coś znalazłem, ale nie pomogło.
Podobnie sposób petera:

Utworzyłem link:

  1. <a href="index.php?a=1">W</a>


dodałem kod:

  1. if(isset($_GET['a']))
  2. {
  3. $sql = 'UPDATE `ttt` SET licznik=licznik+1 WHERE `id`=1'';
  4. $result = mysql_query($sql);
  5. }


W żadnym wypadku to nie działa :/
Czy ma ktoś jeszcze jakieś pomysły ?
IceManSpy
  1. if(isset($_GET['a']))
  2. {
  3. $sql = "UPDATE `ttt` SET licznik=licznik+1 WHERE `id`={$_GET['id']}";
  4. $result = mysql_query($sql);
  5. }
gac3k
stary no, nawet parser na forum, pokazuje Ci gdzie masz błąd, koledzy mają rację nawet w przedszkolu musisz umieć układać klocki.

  1. if(isset($_GET['a']))
  2. {
  3. $sql = 'UPDATE `ttt` SET licznik=licznik+1 WHERE `id`=1';
  4. $result = mysql_query($sql);
  5. }


masz na zachętę smile.gif
-Piter-
Przecież te wasze kody musiałyby być umieszczone w pliku do którego prowadzi link a nie w którym jest wywoływany żeby działały!
Trzeba chyba użyć jakichś eventów i onclick z js?
Daimos
Trzymajcie mnie, bo krzesło już połamałem wink.gif

Jeśli chcesz to zrobić w zdarzeniu onclick, przed przejściem na stronę, to proszę:
Ajax
W innym wypadku, wstawiasz ten kod PHP, który Ci koledzy napisali, na stronie docelowej.

Jeśli dalej nie łapiesz, to proponuję zmienić dział (zlecenia). Jak zaoferujesz dobrą cenę, to chętnych nie zabraknie. Z innej strony, jeśli chcesz się czegoś nauczyć, to zacznij od podstaw - tutoriale, samouczki, książki itd.
thek
Boże... Widzisz i nie grzmisz. Może choć piekło pochłonie?
Po kliknięciu w link wykonuje się skrypt zliczający kliknięcie, a potem kierujący na docelową stronę. Inna sprawa, że powinno być WHERE `id` = $_GET['a'] i jeszcze nie zapomnij o filtrowaniu tej zmiennej by Ci ktoś sql-injection nie zaserwował. A możesz motyw z przekierowaniem zrobić bo to przecież Twój serwer. No i z JS też można skorzystać. Ale z reguły lepiej jest poprzez taki sposób jak Ci podają, bo ścinasz pozycjonowanie adresu. Po co zewnętrzna witryna ma się lepiej pozycjonować? No ale tu wchodzimy już w SEO, co wykracza poza ramy tego tematu.
Daimos
Cytat(thek @ 18.07.2011, 23:16:34 ) *
Boże... Widzisz i nie grzmisz. Może choć piekło pochłonie?
Po kliknięciu w link wykonuje się skrypt zliczający kliknięcie, a potem kierujący na docelową stronę. Inna sprawa, że powinno być WHERE `id` = $_GET['a'] i jeszcze nie zapomnij o filtrowaniu tej zmiennej by Ci ktoś sql-injection nie zaserwował. A możesz motyw z przekierowaniem zrobić bo to przecież Twój serwer. No i z JS też można skorzystać. Ale z reguły lepiej jest poprzez taki sposób jak Ci podają, bo ścinasz pozycjonowanie adresu. Po co zewnętrzna witryna ma się lepiej pozycjonować? No ale tu wchodzimy już w SEO, co wykracza poza ramy tego tematu.

A co ma przekierowanie do SEO? 301 załatwia sprawę, ale po co robić przekierowanie, jak są dwie inne możliwości, opisane wcześniej
-Piter-
Cytat(Daimos @ 18.07.2011, 22:07:49 ) *
Jeśli chcesz to zrobić w zdarzeniu onclick, przed przejściem na stronę, to proszę:
Ajax


Dokładnie o to mi chodzi (przed przejściem na stronę), a wszyscy piszą o jakichś oczywistych sposobach, ale na inną okazję ;]

Czyli tylko AJAX tutaj pomoże questionmark.gif

thek
A widzisz różnicę między:
<a href="http://www.domena.pl" onclick="skrypt_klika">link</a>
<a href="klik.php?id=1"">link</a>
Od strony SEO jest znaczna jeśli nie zadbasz o choćby nofollow dla linka.

Z 301 to chyba żartujesz smile.gif Przekierowanie 301 oddaje moc strony linkowi do którego kieruje! Tak więc jeśli zrobimy sobie "proxy" poprzez własny skrypt przekierowujący to jaki będzie efekt? Ano strona www.domena.pl NIE dostanie ułamka mocy naszej strony. A w przypadku pierwszym jak najbardziej ją pozycjonujemy, bo wskazujemy ją na naszej stronie jako docelową i tym samym podnosimy jej wartość. Może czas zabrać się za lekturę materiałów o SEO w końcu?

Pomyślałeś dlaczego podczas zmiany systemu adresów ustawia się 301 na stare tak, by kierowały na nowy format linka? Ano właśnie ze względu na SEO i fakt, by nowy format linka seo-friendly "przejął" moc starej wersji.
Daimos
Cytat(thek @ 18.07.2011, 23:46:07 ) *
A widzisz różnicę między:
<a href="http://www.domena.pl" onclick="skrypt_klika">link</a>
<a href="klik.php?id=1"">link</a>
Od strony SEO jest znaczna jeśli nie zadbasz o choćby nofollow dla linka.

Z 301 to chyba żartujesz smile.gif Przekierowanie 301 oddaje moc strony linkowi do którego kieruje! Tak więc jeśli zrobimy sobie "proxy" poprzez własny skrypt przekierowujący to jaki będzie efekt? Ano strona www.domena.pl NIE dostanie ułamka mocy naszej strony. A w przypadku pierwszym jak najbardziej ją pozycjonujemy, bo wskazujemy ją na naszej stronie jako docelową i tym samym podnosimy jej wartość. Może czas zabrać się za lekturę materiałów o SEO w końcu?

Pomyślałeś dlaczego podczas zmiany systemu adresów ustawia się 301 na stare tak, by kierowały na nowy format linka? Ano właśnie ze względu na SEO i fakt, by nowy format linka seo-friendly "przejął" moc starej wersji.

Sprawdź sobie w pliku klik.php?id=1, czy nie zostanie przekazana moc dla http://www.domena.pl, jeśli zrobisz tam przekierowanie. Przynajmniej w google (innych teraz nie jestem pewny)
Inna sprawa, że mi tu nie chodzi o zewn. domeny, autor tego nie zaznaczył, więc zakładam linki wewnętrzne
-Piter-
Link jest do strony wewnętrznej, w której jest przekierowanie do zewnętrznej za pomocą nagłówków, jednak nie o to chodzi w tym temacie.

Zapytam jeszcze raz, czy AJAX to jedyne rozwiązanie na zliczanie kliknięć, przed przejściem na stronę docelową ?
thek
@Daimos: Czy Ty czytasz co napisałem? Gdzie wspomniałem, że wewnętrzne przekierowanie w klik.php będzie 301, które przekaże moc? Ja jedynie Tobie wytknąłem, że 301 jakie proponujesz/sugerujesz to kiepski pomysł. W absolutnie żadnym wypadku nie dałbym wewnątrz pliku klik.php R=301 smile.gif

I ja na odwrót uważam z linkami, bo linkowanie wewnętrzne nie potrzebuje takiego cudowania. W zasadzie wystarczy sprawdzać referera w zmiennej $_SERVER, choć mam świadomość możliwości jego blokowania czy modyfikowania przez paranoików. Ale tacy userzy TYM bardziej zablokują skrypty JS mające zliczać kliki wink.gif

Piter... Skoro taka jest kolejność to czemu przed zrobieniem Location i przekierowania nie inkrementujesz licznika w bazie? To jest właśnie to co wkleili IceManSpy czy gac3k.
Wywołujesz
  1. <a href="klik.php.id=1">link</a>
a w pliku klik.php
  1. <?php //tu połaczenie z bazą;
  2. //tu zapytanie inkrementujące licznik w bazie;
  3. //tu nagłówki do przekierowania i samo przekierowanie;
  4. ?>

EDIT: i jeśli dobrze zrozumiałem post autora powyżej to dobrze odczytałem intencje autora... Skrypt jeden odwołujący się do bazy by spod id pobrać link i przekierować na stronę zewnętrzną. Jedynie pomiędzy odczytem a przekierowaniem powinno być jeszcze inkrementowanie.
-Piter-
Cytat(thek @ 19.07.2011, 00:01:58 ) *
Piter... Skoro taka jest kolejność to czemu przed zrobieniem Location i przekierowania nie inkrementujesz licznika w bazie?


Dlatego, że interesuje mnie inny sposób na zliczanie klików.
Co prawda w tym przypadku mogę tak zrobić, jednak chciałem się dowiedzieć jak zliczać kliki, bez tego pośredniczącego pliku w którym mam przekierowanie,
a konkretnie jak przypisać dane zapytanie SQL do takiego zdarzenia jakim jest kliknięcie w link.
cer98
może napiszecie jak pozbyć się tego, że ktoś podstawi w adresie get np index.php?usun=1 na usun=2 ? Nie używam include
rzymek01
nie ma to jak dobra porcja humoru na nockę smile.gif

@cer98, z której wierzby płaczącej się urwałeś?

@-Piter-, sposób ze zliczaniem kliknięć przed przejściem na stronę jest IMO bez sensu, i tak przejdziesz na te stronę za ułamek sekundy, to po się bawić w AJAX?, jeśli chcesz odróznić kliknięcia od bezpośrednich wejść to sprawdzaj referera jak thek pisał

coś takiego byłoby rozsądne, jakbyś robił sobie taką mapę, że zliczenie następuje już po najechaniu na link, i potem byś sobie trafienia sprawdzał, ale to też bez sensu, bo jak ktoś się zdecyduje najechać myszą na link to zazwyczaj klika smile.gif

Najlpiej jest śledzić ruch myszy i wszystkie kliknięcia, co pozwala wykryć, przykładowo klknięcia w element, który nie jest linkiem i takie tam
marcinrm5
Mój sposób
  1. //połączenie z bazą
  2. mysql_connect("","","") or die(mysql_error()."Nie mozna polaczyc sie z baza danych. Prosze chwile odczekac i sprobowac ponownie.");
  3. mysql_select_db("") or die(mysql_error()."Nie mozna wybrac bazy danych.");
  4.  
  5. $sql = mysql_query("UPDATE...");
  6. echo "<a href="$sql"></a>


Nie wiem czy zadziała, też jestem początkujący.
peter13135
$sql będzie miało wartość true lub false - i to ma być url?
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.