Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]rejestracja klikniecia linku w bazie danych
Ryach
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 1.10.2011

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


Szukam od jakiegoś czasu możliwości zapisania w bazie danych każdego kliknięcia na wybrany link, docelowo chciałbym aby zawierał on jakaś krotka informacje co, kto, i skąd, ale to dodam sam jak tylko uda mi się coś takiego uruchomić.
Może ktoś już próbował coś takiego zrobić i znalazł jakaś dokumentacje na ten temat, Będę wdzięczny za każdą pomoc
Go to the top of the page
+Quote Post
rad11
post
Post #2





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


  1.  
  2. <a href="#" data-co="klik" data-kto="janek" data-kiedy="2014-11-02">Kliknij</a>
  3.  



  1.  
  2. $('a').on('click', function(e){
  3.  
  4. var co = $(this).data('co');
  5. var kto = $(this).data('kto');
  6. var kiedy = $(this).data('kiedy ');
  7.  
  8. $.ajax({
  9. url: "link metody lub pliku",
  10. data: {
  11. co: co,
  12. kto: kto,
  13. kiedy: kiedy
  14. },
  15. type: "POST",
  16. dataType : "JSON",
  17. success: function(res) {
  18. console.log(res);
  19. }
  20. });
  21.  
  22.  
  23. });
  24.  


  1.  
  2. public function dodanie(){
  3.  
  4. //tutaj robisz insert tego kliknieciu
  5.  
  6. $co = $_POST['co'];
  7. $kto = $_POST['kto'];
  8. $kiedy = $_POST['kiedy'];
  9.  
  10. $pdo = new PDO('mysql:host=localhost;dbname=produkty;port=3305', 'root', 'root');
  11.  
  12. $stmt = $pdo -> prepare('INSERT INTO `klik` (`co`, `kto`, `kiedy`) VALUES(
  13. :co,
  14. :kto,
  15. :kiedy)');
  16.  
  17. $stmt -> bindValue(':co', $co, PDO::PARAM_STR);
  18. $stmt -> bindValue(':kto', $kto, PDO::PARAM_STR);
  19. $stmt -> bindValue(':kiedy', $kiedy, PDO::PARAM_STR);
  20.  
  21. }
  22.  


Ten post edytował rad11 19.12.2014, 12:34:05
Go to the top of the page
+Quote Post
maviozo
post
Post #3





Grupa: Zarejestrowani
Postów: 197
Pomógł: 24
Dołączył: 22.11.2010

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


Skoro to ma działać dla linków, to chyba prościej przy ładowaniu strony po prostu zapisać w logu, niż wysyłać jakieś ajaxy.
Wszystkie daty, użytkowników i tak będziesz miał w php.
Go to the top of the page
+Quote Post
Rysh
post
Post #4





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Cytat(rad11 @ 19.12.2014, 12:26:22 ) *
  1.  
  2. <a href="#" data-co="klik" data-kto="janek" data-kiedy="2014-11-02">Kliknij</a>
  3.  



  1.  
  2. $('a').on('click', function(e){
  3.  
  4. var co = $(this).data('co');
  5. var kto = $(this).data('kto');
  6. var kiedy = $(this).data('kiedy ');
  7.  
  8. $.ajax({
  9. url: "link metody lub pliku",
  10. data: {
  11. co: co,
  12. kto: kto,
  13. kiedy: kiedy
  14. },
  15. type: "POST",
  16. dataType : "JSON",
  17. success: function(res) {
  18. console.log(res);
  19. }
  20. });
  21.  
  22.  
  23. });
  24.  


  1.  
  2. public function dodanie(){
  3.  
  4. //tutaj robisz insert tego kliknieciu
  5.  
  6. $co = $_POST['co'];
  7. $kto = $_POST['kto'];
  8. $kiedy = $_POST['kiedy'];
  9.  
  10. $pdo = new PDO('mysql:host=localhost;dbname=produkty;port=3305', 'root', 'root');
  11.  
  12. $stmt = $pdo -> prepare('INSERT INTO `klik` (`co`, `kto`, `kiedy`) VALUES(
  13. :co,
  14. :kto,
  15. :kiedy)');
  16.  
  17. $stmt -> bindValue(':co', $co, PDO::PARAM_STR);
  18. $stmt -> bindValue(':kto', $kto, PDO::PARAM_STR);
  19. $stmt -> bindValue(':kiedy', $kiedy, PDO::PARAM_STR);
  20.  
  21. }
  22.  

Po co na siłę pchać tam AJAX'a? Tak jak pisze maviozo, lepiej dać przy ładowaniu insert nowego rekordu masz wszystko ładnie jak na tacy.


--------------------
Go to the top of the page
+Quote Post
Ryach
post
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 1.10.2011

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


dziękuje bardzo za nakierowanie na odpowiednie tory, poniżej moja poprawiona wersja która możne komuś pomoże ?
zostawiłem tez podgląd w textarea i alerty na wszelki wypadek, do osunięcia gdy już nie będą potrzebne


  1. <!doctype html>
  2. <meta charset="utf-8">
  3. <title>Klick Counter</title>
  4. <script src="http://code.jquery.com/jquery-latest.min.js"type="text/javascript"></script>
  5. </head>
  6.  
  7.  
  8. <textarea rows="20" cols="100" id="debug"></textarea>
  9. <br/>
  10. <p>test</p>
  11. <br/>
  12. <a href="http://link" alt="Shop-link">Kliknij</a>
  13. <br/>
  14.  
  15.  
  16. $('a').click(function(e) {
  17. // alert("clicked");
  18. // alert($(this).attr("alt"));
  19. if($(this).attr("alt").indexOf("Shop-link")!=-1) {
  20. //prevent the redirect;
  21. mylink = $(this).attr("href");
  22. myloc = window.location.href;
  23. myalt = $(this).attr("alt");
  24. mytarget = $(this).attr("target") ? $(this).attr("target") : "";
  25. e.preventDefault();
  26. //do your tracking
  27. var myparams = {co:mylink,kto:myloc,alt:myalt}
  28.  
  29. // alert(mylink);
  30. $.post("regist-Click.php",myparams,function(f) {
  31. $("#debug").val(f);
  32. // alert("xx");
  33. }).always(function() {
  34. if(mytarget == "") {
  35. window.location.replace(mylink);
  36. } else {
  37. if(mytarget == "_new") {
  38. window.open(mylink);
  39. } else {
  40. window.open(mylink,mytarget);
  41. }
  42. }
  43.  
  44. // alert("finished");
  45. });
  46. }
  47. });


plik regist-Click.php
dane do polacznia z DB w osobnym pliku include 'DB-dt.php';
  1. <?php
  2. include 'DB-dt.php';
  3. $co = $_POST['co'];
  4. $kto = $_POST['kto'];
  5. try {
  6. $conn = mysql_connect($servername, $username, $password);
  7. mysql_select_db($dbname, $conn) or die (mysql_error());
  8. $sql = mysql_query("INSERT INTO klik(co, kto, kiedy, time) VALUES( '$co', '$kto', now(), CURTIME())");
  9. print("ok!");
  10. } catch (Exception $e) {
  11. print($e->getMessage());
  12. echo $sql . "<br>" . $e->getMessage();
  13. }
  14. $conn = null;
  15.  
  16. ?>
  17.  
  18.  
  19.  
Go to the top of the page
+Quote Post
Rysh
post
Post #6





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Nie zabezpieczasz swojego skryptu przed SQL Injection?


--------------------
Go to the top of the page
+Quote Post
Ryach
post
Post #7





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 1.10.2011

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


Masz racje powinienem dodać:
  1. $sql = mysql_escape_string( mysql_query("INSERT INTO klik(co, kto, kiedy, time) VALUES( '$co', '$kto', now(), CURTIME()"));

myślę ze powinno to wystarczyć, proszę wyprowadź mnie z błędu jeżeli się mylę.
Umieściłem tutaj podstawowa wersje działającego skryptu nad którego funkcjonalnością prawdopodobnie jeszcze posiedzę
Go to the top of the page
+Quote Post
Rysh
post
Post #8





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Cytat(Ryach @ 6.01.2015, 13:34:19 ) *
Masz racje powinienem dodać:
  1. $sql = mysql_escape_string( mysql_query("INSERT INTO klik(co, kto, kiedy, time) VALUES( '$co', '$kto', now(), CURTIME()"));

myślę ze powinno to wystarczyć, proszę wyprowadź mnie z błędu jeżeli się mylę.
Umieściłem tutaj podstawowa wersje działającego skryptu nad którego funkcjonalnością prawdopodobnie jeszcze posiedzę

Tak lepiej, w każdym razie lepiej przeżuć się już na PDO i binduj wartości które chcesz wrzucić do tabeli - ewentualnie mysqli_query.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 01:47