Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 31
  1. #1

    Comparazione campi mysql

    Salve ragazzi...
    Ho un problemino; sto facendo alcune prove e vorrei inserire una riga nel db mysql, solo se il campo che già è scritto nel db, è differente da quello nuovo in arrivo.
    Spiego meglio, ho creato un file in .php che se interrogato preleva le proprietà del browser utilizzato per connettersi e le salva in un campo. Ora vorrei (se possibile) fare in modo che se interrogo successivamente quel file con un browser (che so faccio un wget anzichè usare firefox o chrome ecc...) differente da quello usato l'ultima volta, nel database si scriva una nuova riga, mentre se uso lo stesso, non si scriva nulla e rimanga tutto inalterato.
    il codice che ho scritto, inserisce sempre una riga nuova ignorando ciò che speravo facesse ed è questo:

    codice:
    <?php
    $host = "host";
    $user = "user";
    $password = "password"; 
    $db = "prova";  
    $obj = new mysqli($host, $user, $password, $db);
    
    //CONNECTION
    
    if (mysqli_connect_errno()) {
         printf("Connect failed: %s\n", mysqli_connect_error());
         exit(); 
    }
       
    $browser = getenv("HTTP_USER_AGENT");
    
    // Confronto le variabili locali con i records presenti nel DB (devono essere presenti tutti).
    // Se non li trovo, allora farò una insert nel DB
    
    $SQL = "SELECT * FROM client WHERE (browser = '$browser')";
    $result = $obj->query($SQL);
    
    // Conto i risultati; se non sono differenti da zero allora faccio un insert  
    
    if(mysql_num_rows($result) != 0); {
         $SQL = sprintf("INSERT INTO client (browser)     
         values('$browser')");
         $result = $obj->query($SQL);
         if($result) {
             echo "Ok! data stored.";
         } else {
             echo "Errore in Query";
         }
     } 
    ?>
    Cosa sbaglio?
    Qualcuno mi può aiutare?
    Grazie in anticipo!
    A. Einstein: Due cose sono infinite; L'universo e la stupidità dell'uomo, ma sull'universo ho ancora dei dubbi!

    ®xnotar®

  2. #2
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    codice:
    if(mysql_num_rows($result) != 0);
    questo vuol dire che c'è già qualcosa, invece, se ho capito bene vorresti fare l'INSERT se NON c'è nulla...
    If you think your users are idiots, only idiots will use it. DropBox

  3. #3
    Ciao, grazie della risposta.
    Dunque, nel db ora ci sono già alcune righe di prova. Io vorrei che se risultasse vuoto oppure con dati differenti da quelli appena rilevati, facesse un insert, altrimenti non dovrebbe fare nulla.
    A. Einstein: Due cose sono infinite; L'universo e la stupidità dell'uomo, ma sull'universo ho ancora dei dubbi!

    ®xnotar®

  4. #4
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    ti basta verificare se il campo esiste già o meno e quindi fare l'insert in caso negativo..
    If you think your users are idiots, only idiots will use it. DropBox

  5. #5
    vuoi confrontare il dato che inserisci se è già stato inserito ?

    Codice PHP:

    if (!$result)

    {

    //azione

    }
    ...

    if (
    $dato_confronto != $dato_db
    {

    //azione

    }

    ... 
    ovviamente è un esempio... devi inserire script mysql...

  6. #6
    Originariamente inviato da homerbit
    ti basta verificare se il campo esiste già o meno e quindi fare l'insert in caso negativo..
    No, non il campo, ma ciò che ci sta scritto all'interno. Se è uguale identico a quello che ha rilevato, non deve scrivere nulla, altrimenti dovrebbe farmi un insert.
    A. Einstein: Due cose sono infinite; L'universo e la stupidità dell'uomo, ma sull'universo ho ancora dei dubbi!

    ®xnotar®

  7. #7
    Originariamente inviato da seokey
    vuoi confrontare il dato che inserisci se è già stato inserito ?
    Si esattamente, vorrei confrontare l'ultimo dato inserito e se è uguale a quello appena rilevato, dovrebbe uscire mentre se è diverso, allora vorrei che inserisse una nuova riga.

    Ho provato a paciugare con il tuo codice suggerito, ma non ho ottenuto successo (considera che sono alle prime armi con questo tipo di cose). Ho ottenuto solamente che (come prima), ad ogni connessione, si inserisce una nuova riga.
    Dimenticavo...
    Nel DB esiste un campo id PRIMARY Autoincrement, forse non ci vuole, oppure non dovrebbe essere Autoincrement?
    A. Einstein: Due cose sono infinite; L'universo e la stupidità dell'uomo, ma sull'universo ho ancora dei dubbi!

    ®xnotar®

  8. #8
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    scusami ma ovviamente intendevo il contenuto nel campo non il suo nome
    e cmq dal tuo codice leggo:
    codice:
    // Conto i risultati; se non sono differenti da zero allora faccio un insert  
    
    if(mysql_num_rows($result) != 0); {
    ....
    dove ..se non sono differenti da zero allora faccio un insert ovvero SE sono UGUALI a ZERO
    quindi, come ti avevo suggerito qualche post fa
    Codice PHP:
    // Conto i risultati; sono uguali a zero (cioè il db non contiene il tuo valore) allora faccio un insert  

    if(mysql_num_rows($result) == 0); {
    .... 
    spero di aver capito il tuo problema
    If you think your users are idiots, only idiots will use it. DropBox

  9. #9
    Originariamente inviato da homerbit
    scusami ma ovviamente intendevo il contenuto nel campo non il suo nome
    e cmq dal tuo codice leggo:


    spero di aver capito il tuo problema
    Si, hai capito correttamente, scusami tu, ma sono io che non capisco bene come modificare.

    Allora... se ho ben capito, al posto di questo:

    codice:
    if(mysql_num_rows($result) != 0); {
    dovrei modificare per ottenere quest'altro:
    codice:
    if(mysql_num_rows($result) == 0); {
    Giusto?
    Ora provo!
    A. Einstein: Due cose sono infinite; L'universo e la stupidità dell'uomo, ma sull'universo ho ancora dei dubbi!

    ®xnotar®

  10. #10
    Niente da fare... Continua ad inserire sempre anche se i dati sono identici!
    A. Einstein: Due cose sono infinite; L'universo e la stupidità dell'uomo, ma sull'universo ho ancora dei dubbi!

    ®xnotar®

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.