Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    PHP e HTML, controllo dei valori inseriti prima dell'action form. Come si fa?

    Buongiorno ragazzi

    Oggi appena sveglio mi sono messo subito al pc.
    Ho realizzato un classico form con HTML e ora mi chiedevo se esiste un modo in PHP per controllare che tutti i campi siano stati compilati prima di inviare i dati al file presente nell'action form.

    Volevo usare un semplice "if...else" ma ovviamente il codice non viene neanche preso in considerazione perchè al click sul pulsante di conferma il browser apre una nuova pagina.

    Potrei risolvere il tutto mettendo il controllo direttamente nella pagina di destinazione, ma purtroppo sono costretto a farlo nella stessa pagina del form perchè, nel caso in cui l'utente non ha compilato uno dei campi, faccio apparire una di quelle belle finestrelle in javascript (quelle con lo sfondo oscurato, credo si chiamino modalbox) con il messaggio di errore.

    Qualcuno sa dirmi cosa devo fare per fare il controllo prima che si apra la pagina di destinazione del form?
    Forse devo cambiare il tipo di "action"?
    O forse sbaglio la posizione del codice che fa il controllo? :master:

    Grazie a tutti

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Hai le idee poco chiare su come funziona PHP.
    Quello che chiedi, con PHP è impossibile.
    Che necessità avresti della pagina specificata nell'action se php avesse la possibilità di agire direttamente sulla pagina con il form?
    PHP è un linguaggio Server Side, ciò vuol dire che non può interagire sulla pagina che l'utente sta visualizzando, perché questa ormai si trova sul client.
    PHP lavora solo sul server, elabora dati, mette insieme una pagina e questa viene inviata al client, dal momento che la pagina viene inviata, PHP non ha più alcuna possibilità di interagire con essa.

    L'unico modo che hai per controllare tali dati prima di inviare il form è usando Javascript (che è Client Side).

  3. #3
    Originariamente inviato da Alhazred
    L'unico modo che hai per controllare tali dati prima di inviare il form è usando Javascript (che è Client Side).
    Grazie per la spiegazione

    Quindi usando JS come faccio di preciso?
    Come faccio a rimandare il controllo ad una funzione di JS non appena si fa click sul pulsante d'invio dei dati?

    Grazie

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Ad esempio il pulsante di submit puoi farlo così

    <input type="submit" value="Invia" onclick="return checkForm()" />

    All'interno dei tag <head> </head> metti una funzione javascript chiamata checkForm che verifica la correttezza dei dati inseriti nel form, se vengono trovati degli errori la funzione ritornerà un valore false e questo bloccherà l'invio del form, se è tutto ok ritornerà true e il form verrà inviato.

  5. #5
    Originariamente inviato da Alhazred
    Ad esempio il pulsante di submit puoi farlo così

    <input type="submit" value="Invia" onclick="return checkForm()" />

    All'interno dei tag <head> </head> metti una funzione javascript chiamata checkForm che verifica la correttezza dei dati inseriti nel form, se vengono trovati degli errori la funzione ritornerà un valore false e questo bloccherà l'invio del form, se è tutto ok ritornerà true e il form verrà inviato.

    Scusami ancora, ho provato a farlo ma non funziona.
    Ti posto un attimo il codice per capire dov'è l'errore :master:

    codice:
    <html>
    <head>
    
    <script type="text/javascript">
    <!--
    function controllo(form_iscrizione, campo_nome, fieldName) {
            if (document.forms[form_iscrizione].elements[campo_nome].value == "")
                {
           alert ("\n Il campo "+fieldName+" non contiene nessun valore.");
           document.forms[form_iscrizione].elements[campo_nome].focus();
           return false;
          }
       else {
       return true;
       }
     }
    //-->
    </script>
    
    <body>
    <form name="iscrizione" id="form_iscrizione" method="post" action="subscribe.php">
    <input type="text" id="campo_nome" name="nome" size="35">
    [.....]
    <input type="submit" name="Submit" onclick="return controllo()" value="Registrati">
    </body>
    </html>
    Così non dovrebbe essere giusto?
    Ho messo lo script JS tra gli head e il resto nel body ovviamente...

    Ti ringrazio ancora per la comprensione

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Ti stai chiamando senza parametri: onclick="return controllo()"
    una funzione che dalla dichiarazione ne richiede 3: function controllo(form_iscrizione, campo_nome, fieldName)

    Ovvio che non funziona.

  7. #7
    Originariamente inviato da Alhazred
    Ti stai chiamando senza parametri: onclick="return controllo()"
    una funzione che dalla dichiarazione ne richiede 3: function controllo(form_iscrizione, campo_nome, fieldName)

    Ovvio che non funziona.
    Bene, ho appena aggiunto le 3 dichiarazioni ma non cambia nulla.
    Quel "fieldName" a cosa corrisponde esattamente?
    Scusami, ma ho provato ad adattare quel codice alle mie esigenze e quel "fieldName" l'ho lasciato così come l'ho trovato.
    Forse è proprio lì l'errore?
    Dovrei assegnare una ID a qualche altra cosa?

    Grazie ancora

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Non ne ho idea a cosa si rifersca, non so neanche dove lo hai preso, per quanto ne so comunque puoi togliere del tutto i parametri anche dalla dichiarazione, non servono.

  9. #9
    Bene, pur avendole provate tutte non sono ancora riuscito a farlo funzionare.
    E dire che in altri linguaggi la cosa sarebbe state troppo semplice...
    Grazie comunque, ciao

  10. #10
    Ho fatto ulteriori verifiche e ho notato che ci sono 2 fondamentali errori che non avrebbero mai fatto funzionare il codice!
    1 - Bisogna levare dal codice in JS la parte che servono a commentare codice HTML!
    2 - Ho tolto il "onclick" dall'input e ho messo "onsubmit" nel tag FORM...

    Adesso funziona per bene, l'unico problema è che il codice continua ad essere eseguito nonostante il messaggio di errore visualizzato dall'alert di JS.

    Dove sbaglio in questo caso?

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.