Visualizzazione risultati 1 fino 6 di 6

Discussione: Inviare dati tramite form html senza aggiornare pagina!

  1. #1
    mypreferites non è connesso Neofita
    Data registrazione
    27-03-2011
    Messaggi
    5

    Predefinito Inviare dati tramite form html senza aggiornare pagina!

    Ciao a tutti, sto creando un sito in cui gli utenti possono utilizzare un database.

    sulla home page ho inserito un form html con metodo post, attraverso il quale invio i dati al database e memorizzo il record.

    Quindi vi volevo chiedere, è possibile fare in modo che, una volta che l'utente ha cliccato il bottone della form, si inviino i dati e si ricarichi la medesima pagina in cui si trovava attualmente??

    mi servirebbe in pratica una funzione, da inserire nella pagina php che invia i dati al database, attraverso la quale il server risponde all'utente una nuova pagina come quella in cui lui era prima di cliccare il pulsante...

    penso sia una cosa banale ma non riesco a trovare nulla in merito...

  2. #2
    Guest

    Predefinito

    metti un refresh nella pagina php, ovvero inserire nella parte in cui invia i dati al db:

    echo "<meta http-equiv='refresh' content='numerosecondi; paginaincuisitrovavaprima.estensione'>";

    Sostituisci numersecondi col numero dei secondi che devono passare affinchè si avveri il refresh, se metti 0 sarà immediato, poi sostituisci paginaincuisitrovavaprima.estensione con la pagina del form.. esempio:

    echo "<meta http-equiv='refresh' content='3; inserisci.php'>";

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da mypreferites Visualizza messaggio
    sulla home page ho inserito un form html con metodo post, attraverso il quale invio i dati al database e memorizzo il record.
    Quindi, se dici che invii i dati al database e memorizzi il record, significa che questo sai farlo. Bene, il più è fatto.

    Citazione Originalmente inviato da mypreferites Visualizza messaggio
    Quindi vi volevo chiedere, è possibile fare in modo che, una volta che l'utente ha cliccato il bottone della form, si inviino i dati e si ricarichi la medesima pagina in cui si trovava attualmente??
    Basta che l'action del form punti alla stessa pagina in cui si trova il form. Se la pagina si chiama pippo.php, il form sarà <form action="pippo.php" ecc. > Poi, attraverso della condizioni che inserirai ad inizio pagina, farai in modo che l'output sia il primo (il form da compilare e inviare) o il secondo (record che viene scritto sul DB, immadiato recupero dei dati e nuova pagina a tuo piacere). Concettualmente:

    if (il form è stato compilato e inviato correttamente) {
    1. UPDATE DB

    2. SELECT DB
    3. fetch
    4. dichiarazione (e/o modifica) delle variabili che andranno a compliare la pagina
    } else {
    output del form, cioè come si presenta all'utente PRIMA del suo invio
    }

    Citazione Originalmente inviato da mypreferites Visualizza messaggio
    mi servirebbe in pratica una funzione, da inserire nella pagina php che invia i dati al database, attraverso la quale il server risponde all'utente una nuova pagina come quella in cui lui era prima di cliccare il pulsante...
    "come quella" o "proprio quella"? Perché se la pagina è un'altra il discorso cambia; volendo diventa anche più semplice. Ma se già sai inviare i dati al DB e recuperarli, non credo tu abbia un problema del genere.

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

    Predefinito

    Hai detto che hai fatto un form che salva i dati su db. A questo punto, non puoi mettere un semplice redirect (tramite php) alla pagina di provenienza?

    Codice PHP:
    //prelevo i dati
    //vari controlli
    //salvi i dati sul db

    //redirect
    header('Location: ./pagina.php');

    Altrimenti, se la pagina del form è la stessa di quella che salva i dati sul db, è più semplice:
    Codice PHP:
    <?php
    if(isset($_POST['nome1'],$_POST['nome2'],$_POST['nome3'])) //controllo se ho dei dati in ingresso
    {
    //vari controlli
    //salvi i dati sul db
    }
    ?>
    <html>
    [...]
    <form action="" method="post">
    < .. vari input >
    </form>
    </body>
    </html>

    ...Poi c'é anche la soluzione di inviare i dati senza nemmeno far ricaricare la pagina (come hai scritto nel titolo) tramite ajax (con javascript). Però è piuttosto complesso, quindi suggerisco di usare jQuery.ajax().

    Ciao!
    Ultima modifica di alemoppo : 30-03-2011 alle ore 22.24.36

  5. #5
    Guest

    Predefinito

    io adotterei un metodo differente.

    Metterei nel form un campo hidden di questo tipo
    Codice PHP:
    <input type="hidden" name="pagina_provenienza" value="<?php echo $_SERVER['PHP_SELF'; ?>" />
    Nella pagina che riceve i dati e che li processa i dati inviati farò
    Codice PHP:
    <?php
    $redirect
    = (isset($_POST['pagina_provenienza'])) ? $_POST['pagina_provenienza']: '/';
    header('location: '.$redirect);
    Si potrebbe semplificare ulteriormente con la variabile $_SERVER['HTTP_REFERER'] ma ha delle "controindicazioni"...
    Ultima modifica di miniscript : 30-03-2011 alle ore 23.07.06

  6. #6
    mypreferites non è connesso Neofita
    Data registrazione
    27-03-2011
    Messaggi
    5

    Predefinito

    Ringrazio tutti per le risposte che mi avete dato...!!

    Alla fine ho seguito il consiglio di Exabyte, per un semplice motivo:

    voglio gestire il login attraverso cookie (o non so in quale altro modo.. xD) in modo tale che l'utente che ha effettuato il login non debba ogni volta che carica la pagina immettere i suoi dati, ma lasciari caricati per qualche tempo, o finchè non fa un logout.

    quindi ho inserito un refresh della pagina login.php (dove era il form di invio dati) nella pagina inserisci.php (che serve a caricare i dati nel database) , che poi si aprirà senza dover immettere i dati, facendo quello che volevo!!


    Ora la nuova domanda è: "potreste darmi una dritta in campo di login (con cookie o non so cos'altro)? come vengono generalmente gestiti i login sui siti?"


    grazie mille ancora!!!

    se vi interessa, il sito in costruzione è: http://mypreferites.altervista.org/

Regole di scrittura

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