Visualizzazione dei risultati da 1 a 6 su 6

Discussione: ripetere operazioni

  1. #1

    ripetere operazioni

    Ciao a tutti,
    sto cercando di imparare abbiate pazienza,
    il mio problema e' quello di creare un loop del codice:
    ho creato il file .html che crea la maschera di immissione dati

    <html>
    <body>

    <form action="insert.php" method="post">
    First Name: <input type="text" name="nome">
    Last Name: <input type="text" name="cognome">
    Età: <input type="text" name="età">
    <input type="submit">
    </form>

    </body>
    </html>

    poi ho creato lo script .php che scrive i dati in database sql

    <?php
    $connection=mysqli_connect("localhost","root",""," database1");
    if (mysqli_connect_errno())
    {
    echo "Impossibile connettersi a MySQL: " . mysqli_connect_error();
    }
    $sql="INSERT INTO users (Nome, Cognome, Età)
    VALUES
    ('$_POST[nome]','$_POST[cognome]','$_POST[età]')";
    //L’istruzione POST richiama i dati inseriti nel modulo.
    if (!mysqli_query($connection,$sql))
    {
    die('Error: ' . mysqli_error($connection));
    }
    echo "Aggiunta 1 entrata";

    mysqli_close($connection);
    //Questo comando chiude la connessione al database quando lo script ha finito.
    ?>

    la mia domanda e' questa, dopo che e' stato scritto il record nel database per far riapparire la maschera dell'inserimento dati devo rilanciare dal database il file.html,
    non c'e' la maniera che si riapra la maschera in automatico ?
    grazie mille a tutti

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Benvenuto.
    Mantenendo la struttura attuale dovresti aggiungere nello script PHP un redirect verso la pagina html contenente il form qual'ora l'inserimento andasse a buon fine.
    Per farlo dovresti eliminare
    echo "Aggiunta 1 entrata";

    e mettere
    header('location: http://dominio.tld/pagina.html');
    dopo mysqli_close()

    Ti chiederai perché devi togliere l'echo, ci sono 2 motivi:
    1) comunque con il redirect non lo vedresti perché il tutto accade troppo velocemente
    2) la funzione header(), se c'è prima dell'output, non funziona e riceveresti un errore

    Ti perdi il messaggio per l'utente che non sa se le cose sono andate bene o no.
    La soluzione chiaramente c'è, ma devi modificare un po' di cose.

    1) la pagina col form deve diventare una pagina php
    2) lo script php, oltre a fare l'inserimento nel db, deve mettere in sessione un messaggio con l'esito dell'operazione
    3) nella pagina col form, da qualche parte, con un if verifichi se in sessione c'è un messaggio e nel caso ci fosse lo stampi

    Ci sarebbe anche un'altra soluzione usando javascript, più elegante, ma si complica ulteriormente.

  3. #3
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Benvenuto.
    Mantenendo la struttura attuale dovresti aggiungere nello script PHP un redirect verso la pagina html contenente il form qual'ora l'inserimento andasse a buon fine.
    Per farlo dovresti eliminare
    echo "Aggiunta 1 entrata";

    e mettere
    header('location: http://dominio.tld/pagina.html');
    dopo mysqli_close()

    Ti chiederai perché devi togliere l'echo, ci sono 2 motivi:
    1) comunque con il redirect non lo vedresti perché il tutto accade troppo velocemente
    2) la funzione header(), se c'è prima dell'output, non funziona e riceveresti un errore

    Ti perdi il messaggio per l'utente che non sa se le cose sono andate bene o no.
    La soluzione chiaramente c'è, ma devi modificare un po' di cose.

    1) la pagina col form deve diventare una pagina php
    2) lo script php, oltre a fare l'inserimento nel db, deve mettere in sessione un messaggio con l'esito dell'operazione
    3) nella pagina col form, da qualche parte, con un if verifichi se in sessione c'è un messaggio e nel caso ci fosse lo stampi

    Ci sarebbe anche un'altra soluzione usando javascript, più elegante, ma si complica ulteriormente.
    grazie per la risposta,
    Ti andrebbe di insegnarmi come fare negli altri modi ?

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Devi solo imparare come si scrivono e leggono le variabili di sessione, il resto per decidere se c'è o no un messaggio da mostrare è semplicemente un if.

    Per esempio: https://www.w3schools.com/php/php_sessions.asp

  5. #5
    Grazie per la risposta, ma l'esempio che mi hai indicato (da come ho capito io) non riesco ad inserire dei dati nei campi come nell'esempio <html>
    <body>

    <form action="insert.php" method="post">
    First Name: <input type="text" name="nome">
    Last Name: <input type="text" name="cognome">
    Età: <input type="text" name="età">
    <input type="submit">
    </form>

    </body>
    </html>

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    La pagina che ti ho indicato ti spiega come si usano le varibili di sessione, non ad inserire dei dati nei campi del form, quelli ce li metterà l'utente che lo compila.

    Le variabili di sessione devi usarle per poi mostrare all'utente l'esito dell'operazione.

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.