Visualizzazione dei risultati da 1 a 10 su 10

Hybrid View

  1. #1

    Aggiornamento in tabella

    Ciao a tutti
    Sto avendo un problemino con aggiornare una tabella in un campo numerico vi posto il code:

    codice:
    function addListenUser(id) {
        $.get("/script/player.php", { data_listen_id: id });
    }
    Codice PHP:
    if(isset($_GET["data_listen_id"])){
        
    $id trim($_GET["data_listen_id"]);
        
    $sql "UPDATE musica_archivio SET NumeroAscolti = NumeroAscolti + 1 WHERE IDMusica = '$id'";
        
    $db->query($sql);

    come vedete è un semplice aumento di 1 numero nel campo NumeroAscolti ma non capisco il perche invece di aggiungerne 1 per volte ne aggiunge 4 per volta e come se venisse richiamato 4 volte
    Ultima modifica di techno; 18-05-2021 a 10:13

  2. #2
    Utente di HTML.it L'avatar di diaz
    Registrato dal
    Apr 2000
    residenza
    Berlin
    Messaggi
    379
    Non risolverà il tuo problema, ma ti consiglio di modificare il metodo da GET a POST. Qualsiasi richiesta che modifica dati dovrebbe essere sempre inviata come POST (oppure PATCH o DELETE).

    Secondo punto, fai molta attenzione a SQL injections. Il tuo codice sembrerebbe avere un alto rischio di sicurezza! Se non ne sei a conoscenza, ti consiglio di leggere informazioni su SQL injections e come usare parameterised queries (con PDO, bindParam, bindValue).

    Infine, per quanto riguarda il tuo problema, quindi la query viene eseguita immagino - altrimenti non cambierebbe nessun valore nel DB. Il +1 è inequivocabile, percui il problema è forse che la richiesta viene inviata più volte invece di solo 1. Hai provata con i Developer Tools (Chrome Dev Tools, Firefox Dev Tools) per vendere quante richieste vengono inviate? Oppure usando un console.log() o senza dev tool usando un alert() per debugging. Se ne dovessi vedere più di 1 per azione-utente, in questo caso il problema sarebbe nel front-end con JS e non PHP. Bisognerebbe capire cosa chiama addListenUser().
    E da quel giorno, se andavo da qualche parte, io ci andavo correndo!

    Tweeting @apphancer | Views my own – except when I say things I don’t really think.

  3. #3
    Utente di HTML.it L'avatar di diaz
    Registrato dal
    Apr 2000
    residenza
    Berlin
    Messaggi
    379
    Riguardando il codice, mi puzza un po' il modo in cui usi il success handler `function(e) { ... }`. Mi potrei anche sbagliare ma, il terzo argomento `function(data) { ... }` passa il risultato (dati) della richiesta e non l'evento. Per cui `e.stopPropagation();` non dovrebbe avere effetto in questa funzione. Dovresti spostare il metodo `stopPropagation();` fuori dalla funzione del success handler e spostarlo dove l'azione ha luogo (per esempio click).

    Ti consiglio di leggere la documentazione per il metodo $.get che stai usando https://api.jquery.com/jquery.get/ e comunque controllare la parte di codice resposabile per chiamare il tuo metodo addListenUser(). Sicuramente è li che devi fermare la propagazione.
    E da quel giorno, se andavo da qualche parte, io ci andavo correndo!

    Tweeting @apphancer | Views my own – except when I say things I don’t really think.

  4. #4
    Quote Originariamente inviata da diaz Visualizza il messaggio
    Riguardando il codice, mi puzza un po' il modo in cui usi il success handler `function(e) { ... }`. Mi potrei anche sbagliare ma, il terzo argomento `function(data) { ... }` passa il risultato (dati) della richiesta e non l'evento. Per cui `e.stopPropagation();` non dovrebbe avere effetto in questa funzione. Dovresti spostare il metodo `stopPropagation();` fuori dalla funzione del success handler e spostarlo dove l'azione ha luogo (per esempio click).

    Ti consiglio di leggere la documentazione per il metodo $.get che stai usando https://api.jquery.com/jquery.get/ e comunque controllare la parte di codice resposabile per chiamare il tuo metodo addListenUser(). Sicuramente è li che devi fermare la propagazione.
    Dove lo vedi function(e)?

  5. #5
    Utente di HTML.it L'avatar di diaz
    Registrato dal
    Apr 2000
    residenza
    Berlin
    Messaggi
    379
    Lo devi vedere tu, mica io
    E da quel giorno, se andavo da qualche parte, io ci andavo correndo!

    Tweeting @apphancer | Views my own – except when I say things I don’t really think.

  6. #6
    Quote Originariamente inviata da diaz Visualizza il messaggio
    Lo devi vedere tu, mica io
    In fatti non ce l'evento sulla funzione.

    Ho notato che se nella funzione metto un alert va bene mi aggiunge 1 se lo tolgo mi fa quel problema

  7. #7
    Utente di HTML.it L'avatar di diaz
    Registrato dal
    Apr 2000
    residenza
    Berlin
    Messaggi
    379
    Quote Originariamente inviata da techno Visualizza il messaggio
    In fatti non ce l'evento sulla funzione.

    Ho notato che se nella funzione metto un alert va bene mi aggiunge 1 se lo tolgo mi fa quel problema
    Qui sul forum ora non c'è ma prima c'era - forse lo hai modificato per sbaglio? Controlla anche nel tuo codice.
    Alert può fermare l'event propagation a seconda di cosa la causa. console.log() è non-blocking, per cui se vedi 4 eventi sicuramente il problema è causato dal codice che chiama la tua funzione.
    Usi jQuery o VanillaJS?
    E da quel giorno, se andavo da qualche parte, io ci andavo correndo!

    Tweeting @apphancer | Views my own – except when I say things I don’t really think.

  8. #8
    Con console.log() me ne da 4 infatti
    Ultima modifica di techno; 18-05-2021 a 12:57

  9. #9
    Sto usando jQuery perchè?

  10. #10
    Utente di HTML.it L'avatar di diaz
    Registrato dal
    Apr 2000
    residenza
    Berlin
    Messaggi
    379
    Perché purtroppo nessuno può aiutarti senza avere un maggiore contesto.

    Se non ancora non sei riuscito a risolvere magari posta il codice completo o comunque la parte che chiama la funzione addListenUser() e cerco di aiutarti.
    E da quel giorno, se andavo da qualche parte, io ci andavo correndo!

    Tweeting @apphancer | Views my own – except when I say things I don’t really think.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.