Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    disabilita pulsante premuto

    Clicco su un pulsante, il browser comincia a leggere il codice php della nuova pagina ed esegue le istruzioni.
    A questo punto per errore l'utente clicca di nuovo sul solito pulsante o link che carica la stessa pagina e esegue nuovamente le istruzioni.
    E' facile che alcune istruzioni (tra cui potrebbero esserci anche la creazione di nuovi record o tabelle o campi) vengano ripetute due volte e potete immaginare che cosa accada: record, tabelle o campi doppi.

    Volevo che ciò fosse evitato e per questo chiedo se c'è un istruzione, meglio in html o php, che inibisce il clic al pulsante una volta premuto o che inibisce tutti pulsanti una volta che uno di questi è stato premuto.


    Grazie anticipate
    Prima o poi anch'io vi insegnerò qualcosa

  2. #2
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Non ti conviene farlo in html/javascript, perchè in questo modo impedisci all'utente solamente di ricliccare il bottone, ma se il tuo script inserisce un record nel db, allora probabilmente anche un refresh della pagina avrebbe come risultato un duplicato nel database.

    Ti conviene farlo in php.

  3. #3
    e come?
    Prima o poi anch'io vi insegnerò qualcosa

  4. #4
    pyoi fare un controllo con mysql_insert_id(), e controllare che il nuovo record inviato dal form sia diverso da quello precedente
    debian:~$ uname -r
    2.6.18-1-686
    debian:~$

    Il quiz manager è nato!!! visitate http://shenk.altervista.org !!

  5. #5
    Non conosco questo comando ma credo che non avrei problemi ad impararlo. Il problema, forse posto in maniera troppo soggettiva, è che non si tratta solo di inserimento, modifica o cancellazione di un record, ma lo avrei anche con semplici istruzioni di assegnazione di valori alle variabili, cioè ho bisogno che nessuna istruzione venga eseguita due volte.

    E' possibile?
    Prima o poi anch'io vi insegnerò qualcosa

  6. #6
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Io di solito faccio così, supponendo che il form abbia un pulsante di invio fatto così

    <input type="submit" name="invio" value="Invia il form">

    Codice PHP:
    if (isset($_POST['invio']) { // il form è stato inviato
      
    if ($_SESSION['form_sent']) {
        
    insert...
        
    istruzioni da eseguire dopo invio
        $_SESSION
    ['form_sent'] = true;
      }
      else {
        echo 
    "Form inviato due volte";
      }
    }
    else { 
    // il form viene caricato per la prima volta
      
    $_SESSION['form_sent'] = false;
      
    mostra il form;  

    L'unico problema è che se mostri il form dopo l'inserimento dei dati pronto per essere compilato di nuovo, la variabile $_SESSION['form_sent'] non verrà resettata e quindi il secondo invio, sebbene valido, non sarà accettato.

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.