Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074

    verificare se un valore esiste in tabella

    Ho provato a cercare nel forum ma, forse anche per la difficoltà di definire in poche keywords il problema, non ho trovato nulla.
    In effetti, il mio problema è semplice.
    Ho una variabile, devo verificare se questo valore esiste in una tabella di db, e in caso positivo modificare il valore di un'altra colonna; altrimenti, aggiungo il valore della variabile alla tabella.
    Insomma, come se volessi conteggiare gli accessi di ogni singolo utente identificato ad una certa pagina, per esempio.
    Quindi, se l'utente TIZIO viene identificato, verifico che sia presente nel db; in caso positivo, aggiorno il valore relativo al conteggio dei suoi accessi, in caso negativo lo aggiungo al db, conteggiando un accesso.
    Chiaro?
    Mi vengono in mente solo soluzioni farraginose, mentre so che si può fare in modo semplice, usando qualcosa tipo isset, ma non riesco a ricordarmene!...
    Thanx_in_advance
    metatad
    graphic & web design

  2. #2
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Codice PHP:
    $u "Tizio";

    $sql "SELECT * FROM tabella WHERE user = '$u'";
    $result mysql_query($sql);
    $n mysql_num_rows($result);
    if(
    $n>0)
    {
       
    $row mysql_fetch_array($result);
       
    $v $row['accessi'] + 1;
       
    mysql_query("UPDATE tabella SET accessi = '$v' WHERE user = '$u'");
    }
    else
    {
       
    mysql_query("INSERT INTO tabella (user, accessi) VALUES ('$u', 1)");

    L'ho scritto direttamente qui sul forum quindi attento che non ci siano errori di battitura. Per il resto sostituisci (ovviamente) i nomi dei campi e della tabella con i tuoi.


  3. #3
    Mi hai anticipato solo perché stamattina il server ha problemi!

    Cmq correggo: 1 query in meno e minor possibilità di errori di concorrenza!

    Codice PHP:
    $u "Tizio"

    $result=mysql_query("UPDATE tabella SET accessi = '$v' WHERE user = '$u'");
    if (
    msql_affected_rows($result)==) {
       
    mysql_query("INSERT INTO tabella (user, accessi) VALUES ('$u', 1)"); 

    Salvatore De Bonis AKA Novice of Ricotta AKA NashCrash

  4. #4
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Ehm...

    Scusa ma l'UPDATE cosa updata?
    Cioè c'è una $v che di fatto non ha ancora un valore. Cosi facendo azzeri il record. Ocio!


  5. #5
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Originariamente inviato da NoR
    Mi hai anticipato solo perché stamattina il server ha problemi!

    Cmq correggo: 1 query in meno e minor possibilità di errori di concorrenza!

    Codice PHP:
    $u "Tizio"

    $result=mysql_query("UPDATE tabella SET accessi = '$v' WHERE user = '$u'");
    if (
    msql_affected_rows($result)==) {
       
    mysql_query("INSERT INTO tabella (user, accessi) VALUES ('$u', 1)"); 

    $result=mysql_query("UPDATE tabella SET accessi = accessi+1 WHERE user = '$u'");

  6. #6
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Originariamente inviato da Teuzzo
    $result=mysql_query("UPDATE tabella SET accessi = accessi+1 WHERE user = '$u'");
    Ecco! Questa è la soluzione decisamente migliore

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Ok, Drugo!
    Funziona perfettamente...
    Grazie a tutti.
    metatad
    graphic & web design

  8. #8
    Originariamente inviato da Il_Drugo
    Ehm...

    Scusa ma l'UPDATE cosa updata?
    Cioè c'è una $v che di fatto non ha ancora un valore. Cosi facendo azzeri il record. Ocio!

    Ehi guarda che quel $v l'ho preso dal codice che hai postato tu!!! Lo pensavo definito da qualche parte.

    Originariamente inviato da metatad
    ... in caso positivo modificare il valore di un'altra colonna...
    Io pensavo ad un NOW() su un campo data (si era detto di voler contare?), ma chiaramente accessi+=1 è mooolto meglio!!! Bravi a tutti!!!
    Salvatore De Bonis AKA Novice of Ricotta AKA NashCrash

  9. #9
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Beh prima di tutto stai calmo

    Poi...io nel mio codice l'ho dichiarato, ma nel tuo (anche se dichiarato) non aveva cmq senso.
    In ogni caso la correzione che ti ha fatto Teuzzo era perfetta, quindi il problema è risolto


  10. #10
    Nooo! Scusami, non mi sono spiegato!

    Non l'ho preso come una critica, ma come una giusta correzione....
    Salvatore De Bonis AKA Novice of Ricotta AKA NashCrash

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.