Contorizare click-uri

  1. capturezi evenimentul click în browser (javascript)
  2. transmiți informația la server (ajax)
  3. înregistrezi informația în db

Tu întrebi de pasul 3. Ai făcut pașii 1-2?

Folosesti blade deci presupun ca lucrezi cu Laravel. Exista pe request metoda care iti returneaza ip-ul:

request()->ip()

Dacă aș scrie tot codul necesar în partea de view fără să mă mai folosesc de altă rută ar fi ok?

NU, nu este ok

De ce nu este?

Daca am inteles bine e in laravel, practic poti face asta, dar ca structura a codului nu e frumos.

Poti da detalii, te rog?

Nu, vreu sa dau detalii, e opinia mea si fac ce vreau cu ea :smiley: :smiley:

Sincer nu cred ca ar fi ok.

View ar fin partea de afisare a informatiilor si numai aia ar trebui sa faca. Tot ce tine de backend, ar trebui sa fie treaba back-enddului

1 Like

Până la urmă toată treabă se face cu increment, ideea e că nu știu exact cum aș putea începe.

Poate pe unii ii ajuta sa-ti argumentezi opinia, sa inteleaga si DE CE, nu doar DA/NU.

2 Likes

Păi ce rost mai are să foloseşti framework-uri cu denumiri care mai de care mai fancy dacă tot le faci varză? :slight_smile: Bănuiesc că “view” nu se cheamă aşa doar pentru că nu au găsit altă rimă, ci că pur şi simplu aia e partea de afişare, nu de efectuat operaţii cu baza de date.

1 Like

Daca a studiat framework-ul laravel, cred ca a invatat MVC pentru a aplica.

Iar pe tine @msd te am inteles, mi-ai dat in obraz, ca fiecare raspuns oferit de mine sa fie si explicat. Multumesc pentru feedback :smiley:

1 Like

Inca ma bate grav problema asta :))

pai bate-o si tu pe ea !

in alta ordine de idei

  1. pe acel link pui onclick=clicks()
  2. initializezi o variabila cu 0 si apoi o incrementezi
  3. trimiti variabila click care are nr de click-uri la baza de date. Poti folosi ori fetch ori alt ceva

Pt ip poate trebuie sa folosesti ce stie acel Blade din Laravel. Cred ca ce a zis @Cristi_Nebunu, te ajuta pt partea de ip. Cred ca ar fi bine ca mai intai sa setezi o sesiune pt user-ul logat.

Edit: Am adaugat si partea de trimitere la server. De chestiile comentate este posibil, sau nu, sa ai nevoie. Cauti si tu pe mdn ce fac

Atat


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    let clicks = 0;
    const url = `your_url`;
    function clickMe() {
        clicks += 1;
        document.getElementById("clicks").innerHTML = clicks;
        sendClicks(url, {nr_clicks: clicks, ip: "192.168.0.45"})

    }

    function sendClicks(url = ``, data = {}){
        return fetch(url, {

            method: "post",
            //mode: "cors",
            //cache: "no-cache",
            //credentials: "same-origin",
            headers: {
                'Content-Type': 'application/json'
            },
            //redirect: "follow",
            //referrer: "no-referrer",
            body: JSON.stringify(data),

        })
        .then(response => response.json())
            .then(data => console.log(data))
            .catch(err => console.error(err));

    }
</script>
<a href="https://stackoverflow.com/questions/22402777/html-javascript-button-click-counter" onclick="clickMe()" target="_blank">Click</a>
<p>Clicks: <a id="clicks">0</a></p>
</body>


</html>
1 Like

Eu personal nu as reinventa roata, Piwik e super ok si te scuteste de implementarea rapoartelor uzuale.

Este recomandad ca View-urile și Controler-ele să își păstreze scopul. View afișează, controler procesează. Un prim beneficiu al acestei reguli ar fi faptul că astfel se evită codul de tip legacy: testele sunt mai ușor de scris, codul mai ușor de citit/interpretat/modificat.

Incearca pachetul asta

1 Like

Mi se pare cea mai bună soluție, văd că pot înregistra și când utilizatorul vede un post de exemplu, dar pot afișa mai departe ce post a văzut?

Cineva dispus sa imi implementeze asta? Platesc