Visualizzazione risultati 1 fino 14 di 14

Discussione: Problema con incremento numerico MySQL

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito Problema con incremento numerico MySQL

    Buonasera,
    ho una tabella con un campo INT (attualmente VARCHAR) di 12 contenente un valore che può essere solo incrementato.

    Adesso ho bisogno che per ogni volta che venga ricaricata una pagina si incrementi di +1 quel valore che inizialmente è 0 e per farlo utilizzo questa query:

    Codice PHP:
    mysql_query("UPDATE tabella3 SET visto = visto+1 WHERE id = '1');
    Il problema e che il contatore non segna i numeri dispari. Viene incrementato di +2 anzichè +1.

    Come posso risolvere?
    Apprezzi l'aiuto? Offrimi un caffè!

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    A me funziona correttamente, facendo:

    Codice PHP:
    mysql_query("UPDATE utenti SET pass = pass+1 WHERE id = '1'");
    L'unica cosa che non va bene (ma penso sia un errore di battitura, altrimenti provocava un errore), è che non hai chiuso la stringa...

    Sicuro che quella query non la esegui 2 volte?

    Ciao!

  3. #3
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Si sono certo. Inizialmente veniva eseguita 2 volte ma poi ho commentato la seconda stringa.
    Apprezzi l'aiuto? Offrimi un caffè!

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    Non so che dirti: a me quella query funziona. Presumo che l'errore sia altrove.

    Ciao!

  5. #5
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Questo è il codice della pagina. Essa non viene inclusa in nessun'altra pagina:

    Codice PHP:
    <?php

    session_start
    ();

    include(
    "database_connect.php");

    $id = $_GET['id'];
    $q = mysql_query("SELECT * FROM tabella3 WHERE id = '{$id}'");

    if(
    mysql_num_rows($q) == 1){
    $a = mysql_fetch_row($q);

    if(empty(
    $a[6])){
    mysql_query("UPDATE tabella3 SET visto = visto+1 WHERE id = '".$id."'");
    Header("Content-type: video/x-flv");
    echo
    file_get_contents("../files/".$a[4]);
    }else{
    $b = mysql_fetch_row(mysql_query("SELECT * FROM miksco_utenti WHERE id = '".$_SESSION['id']."'"));

    if(
    $b[6] == "@"){
    $aa = array(1,2,3);
    }else{
    $va = explode(" ",$a[6]);
    $ua = explode(" ",$b[6]);
    $aa = @array_intersect($va,$ua);
    }

    if(
    count($aa) > 0){
    //mysql_query("UPDATE tabella3 SET visto = '".($a[9]+1)."' WHERE id = '".$id."'");
    Header("Content-type: video/x-flv");
    echo
    file_get_contents("../files/".$a[4]);
    }else{
    //Header("HTTP/1.0 403 Forbidden");
    Header("HTTP/1.0 401 Authorization Required");
    }}

    }else{
    Header("HTTP/1.0 404 Not Found");
    }

    ?>
    Apprezzi l'aiuto? Offrimi un caffè!

  6. #6
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Aggiungi un mysql_error() a tute le queries.

  7. #7
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Non mi viene stampato nulla perchè comunque la query viene eseguita.

    Ovviamente (e lo dico prima che mi venga notificato) quando ho aggiunto or die(mysql_error()) alle query ho eliminato Header("Content-type: video/x-flv");.
    Apprezzi l'aiuto? Offrimi un caffè!

  8. #8
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Prova a contare in un altro modo (e.g., file di testo) quante volte la pagina viene richesta —potrebbe venir chiamata due volte, portando così al doppio incremento.

    Ad esemprio, hai presente quando Firefox ti chiede "vuoi scaricare questo file"? La domanda appare dopo una prima richiesta del file al server; se premi ok e vai avanti con il download, a volte il browser effettua una seconda richiesta, e scarica il file, portando ad un doppio conteggio.

  9. #9
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Ho provato a fare come mi hai detto dreadnaut. Purtroppo il conteggio è sempre doppio. Eppure non capisco dove sia il problema. Ho anche eliminato il file .htaccess della root.
    Apprezzi l'aiuto? Offrimi un caffè!

  10. #10
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Andiamo per gradi

    E' un problema della query?
    Non mi sembra ma prova
    Esegui la query dal manager di mySQL e vedi se aggiorna correttamente

    Se non è un problema della query è un problema del codice.
    Per prima cosa metti una traccia nel codice, stampa "eseguita query" ogni volta che fai quell'update e una stringa "pagina richiamata" all'inizio della richiesta dello script.

    Magari, sicuramente ti sfugge qualcosa di banale
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  11. #11
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Citazione Originalmente inviato da miki92 Visualizza messaggio
    Ho provato a fare come mi hai detto dreadnaut. Purtroppo il conteggio è sempre doppio. Eppure non capisco dove sia il problema. Ho anche eliminato il file .htaccess della root.
    Cosa intendi? Anche il conteggio su file incrementa di 2, oppure solo quello nel database?

  12. #12
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Il file TXT viene incrementato anch'esso di 2.

    Ho provato ad inserire in diversi punti del codice la stringa che aggiorna il TXT o MySQL ma il risultato non cambia. L'incremento è sempre di 2 anzichè 1.

    Eliminando tutto il codice dalla pagina il problema non si presenta. Non capisco proprio dove sia il problema.

    Questa la stringa utilizzata:
    Codice PHP:
    file_put_contents("data.txt",(file_get_contents("data.txt")+1));

    EDIT: Sembrerebbe che sia l'Header("Content-type: video/x-flv"); che causa il doppio incremento.
    EDIT2: Non so cosa abbia fatto ma adesso funziona. Eppure il codice è uguale a quello iniziale.
    Ultima modifica di miki92 : 29-03-2012 alle ore 17.05.35
    Apprezzi l'aiuto? Offrimi un caffè!

  13. #13
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Come ti ho scritto sopra, è probabilmente il browser che richiama la pagina due volte. Ci puoi fare poco, a meno di non controllare se l'utente ha effettuato un'altra richiesta identica pochi secondi prima.

  14. #14
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    E' una cosa assurda. Questo fatto mi farà saltare le statistiche se ricapita.
    Apprezzi l'aiuto? Offrimi un caffè!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •