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

    Refresh di form su stessa pagina

    Ciao ragazzi ,
    avrei bisogno di capire se in php/html si puo' "simulare" una sorta di "refresh" di una form.

    Al momento quando l'utente aggiorna dei dati, se la query è eseguita correttamente faccio apparire
    un messaggio di avviso che conferma la correttezza delle operazioni.

    E' carino , ma mi accorgo che sarebbe piu' utile e visivamente funzionale far "ripopolare" la stessa form con i dati aggiornati.

    Ho cercato un poco in giro ed ho trovato spiegazioni circa il refresh della stessa pagina "con indirizzamento all'header" per evitare duplicazioni di invio dati.

    Non è che ci abbia capito molto.


    Qualcuno mi spiega terra-terra se e cosa si puo' fare per ottenere l'effetto voluto?

    ....non ditemi che si puo' fare solo con javascript...

    Ciao

  2. #2
    E invece, indovina un pò... JAVASCRIPT!!
    No, beh, diciamo che puoi cavartela in parte con php e in parte con ajax.
    Avevo un problema simile poco tempo fa e l'ho risolto proprio con ajax.
    Il concetto è semplice: asincronia.
    Ti dò prima una soluzione semplice e poi ti rimando ad ajax.

    Crei un form, action su pagina che controlla i dati e li inserisce nel db e poi si torna alla pagina precedente, dove c'è il form che riprende i dati dal db aggiornati, e magari metti nella url un, chessò,
    ?a=z
    così ti fai una condizione: if(isset($_GET['a'])){.. javascript... alert "Aggiornamento Riuscito".. }
    Molto semplificato ma per farti capire il concetto.

    Se no con l'altra crei una funzione in javascript e ajax, dove invii asincronamente i dati ad una pagina che li salva senza bisogno di aggiornare la pagina. Laborioso ma simpatico.
    Avevo fatto un salvataggio automatico di testo ogni tot secondi.
    Ad ogni salvataggio ricevevo un timestamp, chiaramente formattato, con l'ora completa dell'aggiornamento, secondi compresi. Un pò alla google documents.
    E' più laborioso ma come ogni cosa impegnativa da i suoi risultati.
    La prima comunque non mi sembra malaccio come idea. Non è stilisticamente la fine del mondo ma funziona!
    Ce l'ho fatta! - ItalianPixel -

  3. #3
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    mah ... x me conviene fare una cosa del tipo :


    1) pagina.html con form
    2) submit a script php salva dati in sessione
    3) redirect a pagina.html
    4) scarica i dati da sessione e pulisci var in sessione usate.
    5) usa i dati scaricati dalla sessione per gestire successo/errore dell'operazione e ripopolare i campi della form.

    Molto piu' easy che non con ajax.

    Ovviamente la sol ajax in questo caso potrebbe essere la sol migliore dipende dal rapporto accessibilità/usabilità che vuoi avere nel tuo sito.

    EDIT: ovviamente la pagina che vai a gestire deve avere l'header configurato per non cachare i dati .

  4. #4
    Originariamente inviato da Virus_101
    mah ... x me conviene fare una cosa del tipo :


    1) pagina.html con form
    2) submit a script php salva dati in sessione
    3) redirect a pagina.html
    4) scarica i dati da sessione e pulisci var in sessione usate.
    5) usa i dati scaricati dalla sessione per gestire successo/errore dell'operazione e ripopolare i campi della form.

    Molto piu' easy che non con ajax.

    Ovviamente la sol ajax in questo caso potrebbe essere la sol migliore dipende dal rapporto accessibilità/usabilità che vuoi avere nel tuo sito.

    EDIT: ovviamente la pagina che vai a gestire deve avere l'header configurato per non cachare i dati .
    Ciao ragazzi,
    in effetti se potessi (in questa fase) evitare js-ajax sarebbe meglio.
    In fondo se faccio un "refresh da browser", ottengo esattamente che la form si ripopoli con i dati modificati.
    E mi basterebbe che facesse solo quello.
    Mi sembra che la strada tracciata da Virus_101 sia quella che sto cercando di prendere io.
    Solo alcune cose non comprendo. Provo a spiegare il "percorso" che sto seguendo:

    1) pagina.html con form (OK)
    2) submit a script php salva dati in sessione (non mi muovo dalla stessa pagina - OK)
    3) redirect a pagina.html ( come faccio a farlo se sto già schiacciando un bottone "submit" che esegure uno script $query?
    Posso refreshare con un "if(mysql_query($query)) {
    vai alla url ( stessa pagina?)
    }

    4) scarica i dati da sessione e pulisci var in sessione usate. (premetto che in questa fase di test nno creo "sessioni" inteso come session_start(). Questo non saprei ancora farlo. Come si scaricano e puliscono i var?
    5) usa i dati scaricati dalla sessione per gestire successo/errore dell'operazione e ripopolare i campi della form. (spieghi meglio? )

    Ripeto; il tutto avviene già su una unica page, dovrei solo automatizzare il "refresh" che se faccio a manina, mi ripopola correttamente il record modificato. Presumo quindi che col refresh da browser, scarico i dati, pulisco le var, reintercetto i dati per la select...azz...sto capendo mentre scrivo.

    Ok, come faccio quindi a far fare automaticamente questa cosa con il <button "submit">?

  5. #5
    Mi potrei anche offendere!
    Crei un form, action su pagina che controlla i dati e li inserisce nel db e poi si torna alla pagina precedente, dove c'è il form che riprende i dati dal db aggiornati, e magari metti nella url un, chessò,
    ?a=z
    così ti fai una condizione: if(isset($_GET['a'])){.. javascript... alert "Aggiornamento Riuscito".. }
    Molto semplificato ma per farti capire il concetto.
    E' quello che ho detto io!!
    Ce l'ho fatta! - ItalianPixel -

  6. #6
    Dal form invii i dati ad una pagina di modifica normale
    UPDATE ecc...
    e alla fine metti:
    header("location:form.php?a=f");

    Dalla pagina del form ti metti un avviso in javascript (è una riga di codice!!) tra una condizione:
    if(isset($_GET['a'])){
    <script type="text/javascript">
    alert("Aggiornamento Riuscito!");
    </script>
    }
    e sei a posto!
    Ce l'ho fatta! - ItalianPixel -

  7. #7
    Originariamente inviato da portapipe
    Mi potrei anche offendere!

    E' quello che ho detto io!!
    Eh no!! Sei stato tu a portarmi fuori strada con (....e poi si torna alla pagina precedente, dove c'è )

    Pensavo di essermi spiegato male perchè io non voglio cambiare pagina :-)

    Sono io , ancora poco esperto di php a farmi "dirottare" da cose che non afferro bene

  8. #8
    Originariamente inviato da portapipe
    Dal form invii i dati ad una pagina di modifica normale
    UPDATE ecc...
    e alla fine metti:
    header("location:form.php?a=f");

    Dalla pagina del form ti metti un avviso in javascript (è una riga di codice!!) tra una condizione:
    if(isset($_GET['a'])){
    <script type="text/javascript">
    alert("Aggiornamento Riuscito!");
    </script>
    }
    e sei a posto!
    Ok , comincio ad avere le idee più chiare , ma spiega. Crei la condizione if(isset($_GET['a'])), ma chi la produce ....header("location:form.php?a=f") ?
    Se si , quell' a=f") è una pura convenzione , o deve avere un var reale...
    Come si fa a configurare l'header per non cashare i dati ?

    Ufffff...com'è dura la vita per i newbie ....

  9. #9
    In realtà anche virus ti diceva la stessa cosa (2 submit a script php salva dati in sessione 3 redirect a pagina.html ).
    Comunque per gli header basta che metti all'inizio inizio, prima di qualsiasi codice:
    ob_start;
    e alla fine
    ob_end_flush;.
    Per il salvataggio dati, li devi mandare da qualche parte! Quindi ti serve una pagina che riceva i dati, li salvi e ti rinvii alla pagina con il form.
    E' così che funziona.
    Se vuoi rimanere nella stessa pagina, ti fai una condizione per la quale, se ricevi dati da $_POST, allora salvi i nuovi dati nel db, ma così facendo ti carica gli stessi dati.
    Dovresti fare un refresh per ottenere i nuovi dati.
    E' un bordello. Fattibile ma con una specie di "doppio refresh" stilisticamente brutto.
    Ti fai una pagina semplice con il recupero delle variabili

    $nome=$_POST['nome'];
    $cognome=$_POST['cognome'];
    mysql_query("UPDATE tabella SET nome='$nome', cognome='$cognome' WHERE id=$_COOKIE['id'] ")
    header("location:form.php?a=z");

    In questo modo ho ipotizzato che l'id utente era salvato in un cookie.
    Ho anche assegnato i valori post a variabili ma potevi inserire direttamente il $_POST nella query, saltando quel passaggio.
    Alla fine rimandi alla pagina con il form.
    la variabile $_GET['a'] è simbolica. E' come dire: guarda che arrivo da quella pagina!!
    Puoi mettere anche: se la pagina precedente era salva.php, allora visualizza un alert.
    Dipende da quello che vuoi fare e la facilità col la quale farlo.
    Ce l'ho fatta! - ItalianPixel -

  10. #10
    Originariamente inviato da portapipe
    In realtà anche virus ti diceva la stessa cosa (2 submit a script php salva dati in sessione 3 redirect a
    Dipende da quello che vuoi fare e la facilità col la quale farlo.

    Se vuoi rimanere nella stessa pagina, ...Fattibile ma con una specie di "doppio refresh" stilisticamente brutto.

    ---esattamente quello che succede a me.

    Capito, comunque. Volevo evitare la doppia pagina,ma avete ragione voi, meglio due form.
    Cosi' l'utente vede "materialmente" le correzioni , decide se è tutto ok, e salva.
    Volevo fare lo "stiloso"
    Come mi hanno abituato male certe app scritte su .net....

    tnx a entrambi
    ed

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.