Visualizzazione risultati 1 fino 29 di 29

Discussione: Controllo con Javascript

  1. #1
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Predefinito

    Mi chiedevo se era possibile creare un controllo su un FORM col JAVASCRIPT. Mi spiego meglio. Creato un FORM dove si inseriscono dei dati, è possibile creare una serie di comandi JAVASCRIPT che controllino che siano stati inseriti tutti i dati necessari?

  2. #2
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Certo, è praticamente un classico, quasi obbligatorio direi.
    Il discorso è che in vece di far partire l' automatico meccanismo del "submit" dei dati, javascript si frappone nell'operazione (gestendo <FORM onsubmit=controllacampi()>, controlla i campi e se è tutto ok esegui lui stesso il form.submit().

    Senza che improvviso un manualetto puoi cercare su google con i termini:
    "javascript form validation"
    ovviamente trovi il tutto in inglese, se non sei pratico della lingua fammi sapere.
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  3. #3
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Predefinito

    hai colto nel segno...io e l'inglese non andiamo molto daccordo,ci metterei ore per capire un semplice concetto. Più o meno ho capito cosa volevi dire. Ora però sono due i problemi:
    1. Come faccio a far riconoscere le variabili allo JAVASCRIPT? E' lo stesso meccanismo del PHP? quindi le legge come $_POST?
    2. Nella funzione submit() che reo dello javascript, posso indirizare il form ad una pagina PHP? Le variabili a questo punto saranno sempre di tipo $_POST o cambiano?

  4. #4
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Aspetta... se ti trovi meglio a programmare in php che con javascript è meglio che lasci il form col funzionamento normale (invia sempre) e controlli la validità dei campi nel php che riceve i dati...
    di solito non ci si accontenta del fatto che siano solo tutti riempiti con "checchessia".
    fammi sapere
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  5. #5
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Predefinito

    E' quello che fanno i miei form, solo che se riuscissi a controllare l'inserimento dei dati prima che li invii alla successiva pagina PHP, sarebbe tutto più semplice ed ordinato. In pratica è molto complicato controllare dei dati dopo aver riempito il form perchè poi se l'inserimento è sbagliato dovrei far ritornare l'utente al form precedente che dovrà ricompilare. Immagina un form di 30 domande, mettiamo caso che ne sbaglia una, se faccio il controllo solo dopo aver inviato il form, quando lo reinderizzo di nuovo al form spiegando che ha sbagliato un dato, l'utente si troverà davanti nuovamente il form vuoto che dovrà ricompilare...immagina lo stress. Se riuscissi a controllare l'inserimento prima che invii il form, l'utente saprà quale dato ha sbagliato e correggerà solo quello, mi sono spiegato ?Un po' contorto come ragionamento lo so...

  6. #6
    Ospite Guest

    Predefinito

    Se vuoi che controlli prima di inviare devi usare javascript, cmq on line ne trovi tanti Scrivi sul + famoso motore di ricerca: convalida form javascript. e clicca mi sento fortunato

  7. #7
    L'avatar di gve
    gve
    gve non è connesso Utente storico
    Data registrazione
    26-01-2003
    Residenza
    Brescia
    Messaggi
    2,964

    Predefinito

    Anche in php puoi fare qualcosa del genere ... ovviamente in modo diverso.
    Devi far sì che nel form vengano reinviati i dati.

    Un esempio per far ciò potrebbe essere questo:
    [code:1:46e90a9bea]<?php

    if (isset($_post['submit'])&#4 1; { controllo sulle variabile inviate tramite $_POST; se ho errore imposto $error=TRUE; }

    if (!isset($_POST['submit']) || isset($error)) {
    echo '<form method="post" action="'.$_SERVER['PHP_SELF'].'&quot ;>';
    .
    // qui fai l'echo di tutti i campi di input
    // in modo simile a questo che ti faccio come esempio.
    .
    echo '<input type="text" name="testo"';
    if (isset($_POST['text'])) echo 'value="'.$_POST['text'].'">' ;
    else echo '>';
    .
    .
    echo '<input type="submit" name="submit">';
    echo '</form>';
    } else echo 'Form inviato correttamente';
    ?>[/code:1:46e90a9bea]

    Spero si capisca il metodo.
    | Regolamento del Forum | Regolamento di AlterVista | FAQ di AlterVista | Netiquette |

    GVE = GVE Virtual Extension
    AVCM #: 6637

  8. #8
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Citazione Originalmente inviato da lionalex
    ...se l'inserimento è sbagliato dovrei far ritornare l'utente al form precedente che dovrà ricompilare. ...
    Ti spiego:
    se vuoi optare per il controllo dei campi usando PHP (ogni volta con invio) ovviamente la pagina con il FORM da compilare e la pagina php che li analizza sono la stessa pagina! Capito come? nell'ACTION del FORM ci metti il nome stesso della pagina (con PHP_SELF senza che scrivi esplicitamente il nome file .php), cioè si invia da sola i dati, se sono tutti giusti a posto, altrimenti scrive in un messaggio cosa non va e ripresenta di nuovo il form e i valori precedentemente inseriti ti assicuri di rimetterceli TU (per sicurezza anche se potrebbero farlo alcuni browser) tipo:
    <input name=ciccio value="<?=$valciccio?>" >

    Per tutto il resto segui la struttura base che ha indicato gve che è perfetta e rispecchia quel che stiamo dicendo.

    Update:
    gve, l'unica cosa che non mi torna è $_POST['error'] forse intendevi la semplice variabile locale tipo $error che viene impostata nella prima parte controllando i campi (e non tra i dati postati)??
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  9. #9
    L'avatar di gve
    gve
    gve non è connesso Utente storico
    Data registrazione
    26-01-2003
    Residenza
    Brescia
    Messaggi
    2,964

    Predefinito

    Citazione Originalmente inviato da heracleum
    Update:
    gve, l'unica cosa che non mi torna è $_POST['error'] forse intendevi la semplice variabile locale tipo $error che viene impostata nella prima parte controllando i campi (e non tra i dati postati)??
    Già
    Piccolo errore ;)
    Grazie, correggo subito nel post precedente :)
    | Regolamento del Forum | Regolamento di AlterVista | FAQ di AlterVista | Netiquette |

    GVE = GVE Virtual Extension
    AVCM #: 6637

  10. #10
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Predefinito

    Ho fatto come dicevate voi, ho fatto in modo che la pagina del controllo e quella dell'invio siano la stessa. Ora il rpoblema è un altro:di visualizzazione. Facendo tutto in una pagina, mi ritrovo che se è sbagliato mi esce il messaggio di errore con sotto il form da ricompilare. Se è stata inviata correttamente, mi esce il messaggio di invio corretto ma sotto esce lo stesso il form anche se non dovrebbe uscire. Ho creato un controllo if che se è la prima volta che accedo o c'è stato un errore, allora visualizzo il form, altrimenti dovrebbe solo inviare il form e nient'altro, invece mi esce lo stesso il form vuoto sotto. Cosa ho sbagliato? Non esiste una funzione tipo CLRSCR del pascal?

  11. #11
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Citazione Originalmente inviato da lionalex
    ...Non esiste una funzione tipo CLRSCR del pascal?
    !
    eheh dai si scherza..

    No, non è un problema di ripulire lo schermo
    probabilmente non hai implementato proprio esattamente la struttura consigliata da gve.. se vuoi farcelo vedere puoi fare una COPIA del tuo script php rinominandolo in altro modo per es .TXT oppure .PHPS e ci comunichi questo indirizzo della copia del file così possiamo darci un'occhiata
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  12. #12
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Predefinito

    il collegamento è http://lionalex.altervista.org/invia_frase_2.txt
    grazie mille per la disponibilità. ATTENZIONE: questo modulo non prevede che se si sbaglia i dati restano inseriti come aveva suggerito GVE, penso che quello possa aggiungerlo anche in seguito. Per ora mi interessa che se l'invio è corretto, non appaia nuovamente il form sotto.

  13. #13
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Predefinito

    il collegamento è http://lionalex.altervista.org/invia_frase_2.txt
    grazie mille per la disponibilità. ATTENZIONE: questo modulo non prevede che se si sbaglia i dati restano inseriti come aveva suggerito GVE, penso che quello possa aggiungerlo anche in seguito. Per ora mi interessa che se l'invio è corretto, non appaia nuovamente il form sotto.

  14. #14
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Per ora ho dato solo una sbirciatina al codice ma vedo subito questo:

    if ($_GET['invio']=="2"){
    ..

    dato che il metodo d'invio (METHOD=) avviene tramite "POST" non puoi aspettarti di trovare l'elemento 'invio' nell'array $_GET .
    Invece gli altri campi vanno bene dato che li leggi in $_POST.
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  15. #15
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Per ora ho dato solo una sbirciatina al codice ma vedo subito questo:

    if ($_GET['invio']=="2"){
    ..

    dato che il metodo d'invio (METHOD=) avviene tramite "POST" non puoi aspettarti di trovare l'elemento 'invio' nell'array $_GET .
    Invece gli altri campi vanno bene dato che li leggi in $_POST.
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  16. #16
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Predefinito

    Citazione Originalmente inviato da heracleum
    Per ora ho dato solo una sbirciatina al codice ma vedo subito questo:

    if ($_GET['invio']=="2"){
    ..

    dato che il metodo d'invio (METHOD=) avviene tramite "POST" non puoi aspettarti di trovare l'elemento 'invio' nell'array $_GET .
    Invece gli altri campi vanno bene dato che li leggi in $_POST.
    Quel "invio" è una variabile d'appoggio, mi serve per capire se è la prima volta che si accede al Form o no. In pratica l'accesso al form è tramite un link "FORM.PHP?INVIO=1" mentre il form ha come action "FORM.PHP?INVIO=2" così se è la prima volta non controlla gli eventuali errori, se invece ha già compilato il FORM, mandando la variabile INVIO=2", allora controllerà gli eventuali errori...

  17. #17
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Predefinito

    Citazione Originalmente inviato da heracleum
    Per ora ho dato solo una sbirciatina al codice ma vedo subito questo:

    if ($_GET['invio']=="2"){
    ..

    dato che il metodo d'invio (METHOD=) avviene tramite "POST" non puoi aspettarti di trovare l'elemento 'invio' nell'array $_GET .
    Invece gli altri campi vanno bene dato che li leggi in $_POST.
    Quel "invio" è una variabile d'appoggio, mi serve per capire se è la prima volta che si accede al Form o no. In pratica l'accesso al form è tramite un link "FORM.PHP?INVIO=1" mentre il form ha come action "FORM.PHP?INVIO=2" così se è la prima volta non controlla gli eventuali errori, se invece ha già compilato il FORM, mandando la variabile INVIO=2", allora controllerà gli eventuali errori...

  18. #18
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    E' ovvio, chiaro, ma sospetto non hai capito cosa intendevo segnalarti:
    dato che i dati li invii con metodo POST vuol dire che tutti te li troverai nell'array $_POST e invece ti facevo notare che proprio 'invio' lo vai a cercare in $_GET (dove non c'è nulla dato che hai inviato col metodo POST, chiaro?), dunque devi sostituire:
    if ($_GET['invio']=="2"){
    con
    if ($_POST['invio']=="2"){
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  19. #19
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    E' ovvio, chiaro, ma sospetto non hai capito cosa intendevo segnalarti:
    dato che i dati li invii con metodo POST vuol dire che tutti te li troverai nell'array $_POST e invece ti facevo notare che proprio 'invio' lo vai a cercare in $_GET (dove non c'è nulla dato che hai inviato col metodo POST, chiaro?), dunque devi sostituire:
    if ($_GET['invio']=="2"){
    con
    if ($_POST['invio']=="2"){
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  20. #20
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Predefinito

    Grazie mille per il tempo che stai dedicando a questo mio problema...cmq ho controllato: la variabile INVIO la mando tramite il metodo GET e non POST, tutte le variabili del form sono inviate col metodo POST, ma invio no. Infatti se fai caso, la variabile INVIO è mandata nell'ACTION del FORM col collegamento NOME_FILE.PHP?INVIO=2 . Ho controllato ed è così.L'errore è un altro MA NON LO TROVO!!!

  21. #21
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Predefinito

    Grazie mille per il tempo che stai dedicando a questo mio problema...cmq ho controllato: la variabile INVIO la mando tramite il metodo GET e non POST, tutte le variabili del form sono inviate col metodo POST, ma invio no. Infatti se fai caso, la variabile INVIO è mandata nell'ACTION del FORM col collegamento NOME_FILE.PHP?INVIO=2 . Ho controllato ed è così.L'errore è un altro MA NON LO TROVO!!!

  22. #22
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Predefinito

    Ho trovato l'errore...NON CICREDERAI. Era un banale confronto, nell'ultimo IF (Quello del $_GET['invio']==1 & $errore=="true") invece di mettere $errore==1 avevo messo $errore=1 e quindi non faceva nessun confronto....Ora funziona. Che cavolo...sempre così succede, si legge migliaia di volte la stessa cosa poi l'errore è quello più banale.Grazie mille comunque per l'attenzione

  23. #23
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Predefinito

    Ho trovato l'errore...NON CICREDERAI. Era un banale confronto, nell'ultimo IF (Quello del $_GET['invio']==1 & $errore=="true") invece di mettere $errore==1 avevo messo $errore=1 e quindi non faceva nessun confronto....Ora funziona. Che cavolo...sempre così succede, si legge migliaia di volte la stessa cosa poi l'errore è quello più banale.Grazie mille comunque per l'attenzione

  24. #24
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Aaah perfetto, non me n'ero accorto del singolo =.
    Ok, allegria che hai finalmente risolto.. :)

    ..comunque quella cosa di mischiare GET e POST (che infatti confonde un po') puoi evitarla mettendo un:

    [code:1:e3188a2985]<input type=hidden name=invio value=1>[/code:1:e3188a2985]

    E' una pratica molto diffusa perché si tenta sempre di evitare di sparare parametri nell'url (get) specialmente durante operazioni di invio. Hai lo stesso risultato e l'url "pulita", comunque alla fine fai come ti viene comodo eh, per carità.
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  25. #25
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Predefinito

    Cos'è il TYPE=HIDDEN? Potrebbe tornarmi utile. In pratica passa solo la variabile però col tipo POST?

  26. #26
    aeclanum non è connesso Utente
    Data registrazione
    25-03-2003
    Messaggi
    210

  27. #27
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Immaginatelo come una casella di testo (input type=text) ma invisibile, utilisssssima in più casi. Ottima per trasportarti di pagina in pagina alcuni parametri oppure per scriverci un valore dinamicamente con javascript, per es. :
    [code:1:e21c1f9409]var f = document.nomeform;
    f.campohidden.value = f.campo1.value + ", " + f.campo2.value;[/code:1:e21c1f9409]
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  28. #28
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Predefinito

    Per trasportare di pagina in pagina alcuni valori, devo ovviamente creare dei FORM per ogni pagina, o esiste un modo nascosto per portare le variabili?

  29. #29
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Beh il modo più nascosto e solido per trasportare valori di pagina in pagina richiede l'utilizzo di una sessione (che io sfrutto, per mantenere per esempio la scelta del linguaggio in uso, essendo alcune pagine italiano/inglese) altrimenti puoi sfruttare i cookies. Ecco diciamo che i campi hidden vanno benissimo quando ricarichi un php con form, ma se clicchi un qualsiasi altro link ad un'altra pagina i dati del form non vengono propagati.
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

Regole di scrittura

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