Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [MySqli] Impedire inserimento doppio

    Ciao a tutti,
    Mi capita che quando utilizzo una query i valori mi vengono inseriti a doppio nel db, come posso evitarlo?

  2. #2
    Quote Originariamente inviata da deamon75 Visualizza il messaggio
    Ciao a tutti,
    Mi capita che quando utilizzo una query i valori mi vengono inseriti a doppio nel db, come posso evitarlo?
    Ci mostri lo script con il quale fai la query e come valorizzi le variabili ?

  3. #3
    1. codice:
      $connessione = mysqli_connect(blabla);
      $query = "INSERT INTO tabella (campo) VALUES (valore)";
      mysqli_query($connessione,$query);
      mysqli_close($connessione)
    2. In pratica il mio browser è come se caricasse due volte la stessa pagina quindi il valore viene inserito a doppio, come posso evitare ciò?


    In precedenza usavo un FORM e valorizzavo le variabili con $_GET[] però per risalire al problema ho scritto solo questo codice in un file php e l'ho eseguito, scoprendo che in pratica è il browser che fa una doppia chiamata alla pagina, infatti con altri browser il campo viene aggiunto una sola volta a caricamento...
    Ultima modifica di deamon75; 23-04-2014 a 08:48

  4. #4
    Quote Originariamente inviata da deamon75 Visualizza il messaggio
    In precedenza usavo un FORM e valorizzavo le variabili con $_GET[] però per risalire al problema ho scritto solo questo codice in un file php e l'ho eseguito, scoprendo che in pratica è il browser che fa una doppia chiamata alla pagina, infatti con altri browser il campo viene aggiunto una sola volta a caricamento...
    Quale browser effettua una doppia chiamata della pagina ?

  5. #5
    Chrome (credo sia qualche Estrensione)
    Non c'è modo per evitarlo programmaticamente e senza toccare le estensioni?

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Hai provato con altri browsers? Fallo, magari ti accorgi che accade anche con altri e allora il problema sta nel tuo codice.

  7. #7
    A me chrome non ha mai fatto scherzi del genere.
    Lato server, con php, puoi inserire dei controlli che controllino se i dati sono dei duplicati e eventualmente non inserirli.

  8. #8
    Vi assicuro che è il browser in quanto ho provato con IE, Mozilla e Chrome e lo scherzetto lo fa solo con Chrome...
    Metto Chrome in "modalità incognito" ed ecco che il valore viene aggiunto una sola volta, ecco perchè ho detto che sarà certamente qualche estensione...

    Per quanto riguarda quella soluzione la mia table è strutturata cosi:
    ID(Univoca Primaria NoNull) - Commento(NoNull)
    Quindi in pratica se faccio un controllo sul campo ID non cambia nulla e viene comunque aggiunto in quanto l'id si autoincrementa(giustamente)
    Se faccio un controllo sul campo commento vuol dire che nego di far rispondere due persone allo stesso modo cioè se tu vieni sul mio sito e scrivi "Grazie" nessun'altro lo potrà fare (se faccio un controllo su tutto il campo), o se (faccio un controllo solo sul ultimo value inserito) lo stesso nego a chiunque di scrivere "Grazie" finchè tra i due commenti non appare un commento diverso...

    Soluzioni senza queste contro indicazioni si possono trovare?

  9. #9
    Io sto pensando che potrei mettere qualcosa alla fine della pagina che vada a creare una session o un cookie, poi dove ho l'inserimento metto una condizione che inserisca solo se session/cookie non è settato.

    Ho provato a farlo con una variabile, cioè ho messo dopo la chiusura della connessione la valorizzazione di una variabile e prima del invio un if(empty(var)){INVIA} però lo stesso inviava in quanto quello che fa il mio browser è proprio un ricaricamento (tipo un refresh) quindi la variabile risultava comunque vuota quando passava alla condizione <-- Non so se mi sono spiegato

    *Quello che voglio dire con questa spiegazione è che mi serve un qualcosa che rimanga settato anche dopo il Refresh dell'intera pagina

  10. #10
    UP...
    Una domanda riguardante lo stesso argomento, se io devo estrarre un solo valore da una tabella del db come faccio? su internet trovo solo il metodo per estrarre più valori cioè "$mysqli->fetch_array($result)" ma se io volessi estrarre solo un valore? cioè tipo:
    codice:
    $query = "Select id from tabella where id2 = 10";
    $result = $mysqli->query($query);
    $valoreestratto = $mysqli->COSA?($result);
    Perché fa parte dello stesso argomento? semplicemente voglio provare ad estrarre il commento e fare un confronto prima del inserimento

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.