Vai al contenuto

Eseguire operazioni di controllo prima dell'invio di un form


magomac

Messaggi raccomandati

Ciao a tutti......

è possibile, in una pagina php che contiene un form html, far si che, prima dell'invio del form, vengano eseguite delle operazioni utilizzando i dati appena scritti???

Mi spiego meglio facendo un esempio stupido.....

Un form con tre campi: Nome, Cognome, Nome2

Alla pressione del tasto SUBMIT, prima di inviare i dati, la pagina controlla tramite un opportuno codice php che il contenuto di Nome e Nome2 sia lo stesso..... se la risposta è positiva allora invia i dati e va alla pagina segnata nell "action" del form, invece, se la risposta è negativa, SENZA CAMBIARE PAGINA E SENZA INVIARE DATI apre una finestra di errore per comunicare all'utente il problema.....

Spero di essermi spiegato abbastanza chiaramente.....

Grazie a tutti! Ciao

Link al commento
Condividi su altri siti

al form imposti come azione un file php dove semplicemente con un controllo (if/else) verifichi queste cose, se il controllo va a buon fine elabori i dati, altrimenti con un javascript dai un messaggio di errore...

www.t1t.it Il mio sito personale

www.appartamentiumago.it ....casa vacanza in Croazia, ottimi i prezzi e i simpatici gestori

MacBook Pro "17 Core Duo - iMac G3 Flavors 333 Mhz - 2xiBook Clamshell G3 300Mhz with airport (Tangerine&Blue) - Canon EOS 350D + 18/55 + 55/200

Link al commento
Condividi su altri siti

al form imposti come azione un file php dove semplicemente con un controllo (if/else) verifichi queste cose, se il controllo va a buon fine elabori i dati, altrimenti con un javascript dai un messaggio di errore...

il fatto è che in questo modo cambio pagina e quindi poi per tornare al form l'utente dovrebbe tornare indietro e probabilmente anche ricompilare tutto......

Ci sono dei siti dove, appena premi il tasto, controlla ad esempio che Password e Controlla Password siano uguali........

Link al commento
Condividi su altri siti

ho fai un controllo con java oppure tramite php fai ricaricare la pagina ripassando i dati esatti inseriti dall'utente

www.t1t.it Il mio sito personale

www.appartamentiumago.it ....casa vacanza in Croazia, ottimi i prezzi e i simpatici gestori

MacBook Pro "17 Core Duo - iMac G3 Flavors 333 Mhz - 2xiBook Clamshell G3 300Mhz with airport (Tangerine&Blue) - Canon EOS 350D + 18/55 + 55/200

Link al commento
Condividi su altri siti

ho fai un controllo con java oppure tramite php fai ricaricare la pagina ripassando i dati esatti inseriti dall'utente

alla seconda opzione avevo pensato....... se proprio non troverò altre soluzioni opterò per quella.....

Invece per quanto riguarda il controllo con java mi sai dare qualche info in più? Non ho mai usato java e javascript (eccetto script pre confezionati)......

Grazie mille

Link al commento
Condividi su altri siti

java è molto utile in questi casi e non è nemmeno troppo difficile da maneggiare..

comunque prova a spulciare un po' su html.it

www.t1t.it Il mio sito personale

www.appartamentiumago.it ....casa vacanza in Croazia, ottimi i prezzi e i simpatici gestori

MacBook Pro "17 Core Duo - iMac G3 Flavors 333 Mhz - 2xiBook Clamshell G3 300Mhz with airport (Tangerine&Blue) - Canon EOS 350D + 18/55 + 55/200

Link al commento
Condividi su altri siti

java è molto utile in questi casi e non è nemmeno troppo difficile da maneggiare..

comunque prova a spulciare un po' su html.it

Ho sfogliato ben bene la guida di javascript trovata su html.it

Ho capito che dovrei assegnare, tramite onclick, al pulsante submit la funzione javascript che esegua il controllo ma non ho minimamanete capito come passare allo script i valori immessi nel mio form.....

Siete in grado di illuminarmi???

Grazie

Link al commento
Condividi su altri siti

devi assegnare gli id ai vari campi <input id="num" type="text" size="5">

e all'azione assegni una sorta di:

onClick="controllo(document.getElementById('num').value), ecc.."

che richiama una funzione precedente creata che legge i valori pasati e vede se sono uguali

altrimenti

alert('errore....');

www.t1t.it Il mio sito personale

www.appartamentiumago.it ....casa vacanza in Croazia, ottimi i prezzi e i simpatici gestori

MacBook Pro "17 Core Duo - iMac G3 Flavors 333 Mhz - 2xiBook Clamshell G3 300Mhz with airport (Tangerine&Blue) - Canon EOS 350D + 18/55 + 55/200

Link al commento
Condividi su altri siti

devi assegnare gli id ai vari campi <input id="num" type="text" size="5">

e all'azione assegni una sorta di:

onClick="controllo(document.getElementById('num').value), ecc.."

che richiama una funzione precedente creata che legge i valori pasati e vede se sono uguali

altrimenti

alert('errore....');

inizio già a capirci di più...... ovviamente quello dei valori uguali era un esempio.... a me in questo momento servirebbe prendere il sesso di una persona (le opzioni sono o S o M) e la categoria scelta e se ad esempio uno ha selezionato sesso M e una categoria femminile da errore...... in PHP saprei farlo senza problemi in java la vedo più dura.....

Cioè io quindi nel submit devo mettere onClick="controllo(document.getElementById("sesso').value),("classe').value)" e poi nell'head della pagina faccio la funzione di controllo che in PHP farei così

if($sesso=='M' AND $categoria=='femminile') {echo"errore maschio in categoria femminile etc...";}
elseif($sesso=='F' AND $categoria=='maschile') {echo"errore femmina in categoria maschile etc...";}
else{fai ciò che devi fare};

In javascript come devo impostare questa funzione in modo che se cade in uno dei due if mi apra un alert con il messaggio SENZA MANDARE IL FORM e invece, se supera i due if, MANDI IL FORM ALLA PAGINA SUCCESSIVA???

Grazie mille!!!!!!

Ciao

Link al commento
Condividi su altri siti

<script language="javascript">

function positivoNegativo(sesso, classe) {

if(sesso!=classe) {

alert('messaggio di errore');

}

else {

...

}

}

</script>

al posto dei puntini è da mettere l'istruzione per mandare il form...

sto dando un'occhiata in giro..

www.t1t.it Il mio sito personale

www.appartamentiumago.it ....casa vacanza in Croazia, ottimi i prezzi e i simpatici gestori

MacBook Pro "17 Core Duo - iMac G3 Flavors 333 Mhz - 2xiBook Clamshell G3 300Mhz with airport (Tangerine&Blue) - Canon EOS 350D + 18/55 + 55/200

Link al commento
Condividi su altri siti

in realtà puoi fare eseguire il javascript di controllo usando non l'evento onclick ma l'evento onsubmit: in questo modo ottieni quanto desiderato, ossia il controllo viene fatto prima di eseguire l'elaborazione ma in caso di errore non devi ricaricare la pagina e l'operatore si trova già tutti i dati pronti, solo da modificare.

il codice javascript deve ritornare un valore true o false a seconda dell'esito del controllo: infatti onsubmit si attende questo valore per poter, a javascript eseguito, procedere con l'invio dei dati al php di elaborazione.

in pratica il tuo codice html diventa una cosa di questo tipo:

<form name="modulo" action="elaborazione.php" onsubmit="javascript:controlla(modulo, nome, 'Nome e cognome');">
   ... a seguire il codice della form ...
   Nome e cognome: <input type="text" name="nome" id="nome" /> 
  ...... a seguire il resto del codice ....
<input type="submit" value="Invia">
</form>

lo javascript esegue il controllo nel modo che ti hanno suggerito (accedi ai vari campi tramite il loro nome). nell'esempio che ti riporto sotto, dopo che l'utente ha fatto click sul tasto Submit, javascript esegue un controllo che blocca l'operazione nel caso l'utente abbia lasciato vuoto un certo campo. In caso di errore viene presentato un messaggio di diagnostica e in più alla chiusura del messaggio di errore non solo la pagina rimane come compilata dall'utente ma ti si riposiziona pure il cursore direttamente sul campo che deve essere riempito :shock: ):

function controlla(formId, elemId, fieldName) {
       if (document.forms[formId].elements[elemId].value == "") 
           {
      alert ("\n Il campo "+fieldName+" non contiene nessun valore.");
      document.forms[formId].elements[elemId].focus();
      return false;
     }
  else {
  return true;
  }
}

Serve aiuto? Posso darti una mano in

Webmasters - Aiuto Software - Da Windows a Mac

Mappa Utenti ItaliaMac

[[miao]]

Link al commento
Condividi su altri siti

ottimo...

non avevo mai provato ad utilizzare onsubmit...!

www.t1t.it Il mio sito personale

www.appartamentiumago.it ....casa vacanza in Croazia, ottimi i prezzi e i simpatici gestori

MacBook Pro "17 Core Duo - iMac G3 Flavors 333 Mhz - 2xiBook Clamshell G3 300Mhz with airport (Tangerine&Blue) - Canon EOS 350D + 18/55 + 55/200

Link al commento
Condividi su altri siti

Allora..... ho provato ad adattare quando spiegato (benissimo) da grigio....

Evidentemente però devo aver sbaglòiaato qualcosa nella sintassi del javascript perchè non va.....

Allora..

Questo è il tag form:

<form name="datiPartecipante" method="post" action="addpart_step2.php" onsubmit="javascript:controlla(datiPartecipante, sesso, classe);">

"sesso" e "classe" sono gli ID dei due campi su cui devo fare il controllo (l'id l'ho aggiounto solo a quei due campi.... a tutti gli altri ho lasciato solo il name tanto non mi servono per il controllo)..... il fieldName l'ho tolto tanto per quello che devo fare non mi serve a molto.....

Questo invece è quanto ho inserito nell'head della pagina:


<script language="javascript">
function controlla(formId, sesso, classe) {
       if (document.forms[formId].elements[sesso].value == "M" AND document.forms[formId].elements[classe].value == "laserRadial_F" ) 
           {
      alert ("\n Errore! Stai tentando di iscrivere un maschio in una categoria femminile!.");
      document.forms[formId].elements[classe].focus();
      return false;
     }
  else (document.forms[formId].elements[sesso].value == "F" AND document.forms[formId].elements[classe].value == "laserRadial_M" ) 
           {
      alert ("\n Errore! Stai tentando di iscrivere una femmina in una categoria maschile!.");
      document.forms[formId].elements[classe].focus();
      return false;
     }
  else {
  return true;
  }
}
</script> 

Su html.it ho letto che quello che in php è if,elseif,else in java diventa if,if,else.... però evidentemente c'è qualcosa che non va perchè non funziona..... in qualsiasi caso invia il form.......... che abbia sbagliato qualcosa nell'uso dell'operatore AND???

Grazie mille! Ciao

Link al commento
Condividi su altri siti

l'and non è && ?

www.t1t.it Il mio sito personale

www.appartamentiumago.it ....casa vacanza in Croazia, ottimi i prezzi e i simpatici gestori

MacBook Pro "17 Core Duo - iMac G3 Flavors 333 Mhz - 2xiBook Clamshell G3 300Mhz with airport (Tangerine&Blue) - Canon EOS 350D + 18/55 + 55/200

Link al commento
Condividi su altri siti

e con un & solo?

www.t1t.it Il mio sito personale

www.appartamentiumago.it ....casa vacanza in Croazia, ottimi i prezzi e i simpatici gestori

MacBook Pro "17 Core Duo - iMac G3 Flavors 333 Mhz - 2xiBook Clamshell G3 300Mhz with airport (Tangerine&Blue) - Canon EOS 350D + 18/55 + 55/200

Link al commento
Condividi su altri siti

laserRadial_F

??

www.t1t.it Il mio sito personale

www.appartamentiumago.it ....casa vacanza in Croazia, ottimi i prezzi e i simpatici gestori

MacBook Pro "17 Core Duo - iMac G3 Flavors 333 Mhz - 2xiBook Clamshell G3 300Mhz with airport (Tangerine&Blue) - Canon EOS 350D + 18/55 + 55/200

Link al commento
Condividi su altri siti

ci sono almeno due errori di sintassi javascript

sicuramente hai dimenticato un "if" nel primo else

infatti nel codice tu hai scritto:

else (document.forms[formId].elements[sesso].value == "F" AND document.forms[formId].elements[classe].value == "laserRadial_M" ) 
           {
      alert ("\n Errore! Stai tentando di iscrivere una femmina in una categoria maschile!.");
      document.forms[formId].elements[classe].focus();
      return false;
     }

mentre andrebbe scritto

else [color="Red"]if[/color] (document.forms[formId].elements[sesso].value == "F" AND document.forms[formId].elements[classe].value == "laserRadial_M" ) 
           {
      alert ("\n Errore! Stai tentando di iscrivere una femmina in una categoria maschile!.");
      document.forms[formId].elements[classe].focus();
      return false;
     }

il secondo errore consiste nel modo in cui identifichi il campo da esaminare nell'attributo "elements[]". infatti, se tu vuoi usare il nome diretto del campo ("sesso", "classe") e non una variabile parametrizzata (formId), all'interno delle parentesi quadre devi usare gli apici altrimenti javascript lo interpreta come una variabile non inizializzata.

il codice corretto andrebbe quindi scritto come:

document.forms[formId].elements[[color="Red"][b]'[/b][/color]sesso[color="red"][b]'[/b][/color]].value

idem per elements[classe]: la sintassi corretta è elements['classe']

per inciso, se usi direttamente il nome dei campi non ti serve passarli come parametri nella funzione che puoi quindi semplificare in questo modo:

function controlla(formId) { .... }

ovviamente anche il richiamo nella form cambierà (e occhio agli apici :angioletto: ):

<form id="datiPartecipante" onsubmit="javascript:controlla([b][color="Red"]'[/color][/b]datiPartecipante[color="red"][b]'[/b][/color])" ...>

Serve aiuto? Posso darti una mano in

Webmasters - Aiuto Software - Da Windows a Mac

Mappa Utenti ItaliaMac

[[miao]]

Link al commento
Condividi su altri siti

Ho guardato il tuo codice e ho trovato l'errore nel tuo javascript.

Il punto chiave sta tutto nel modo in cui controlli il campo "sesso".

Il campo sesso è di tipo Radio: vuol dire che esso o è selezionato oppure no ed è questo quello che devi controllare: per fare questo devi usare il metodo "checked". Il valore "m" o "f" che tu tenti di assegnare non viene considerato nel caso di un input di tipo radio e il metodo "value" ti ritorna sempre un valore "undefined" motivo per cui il tuo controllo dava sempre esito positivo.

Per verificare quale valore è stato selezionato devi trattare il campo "sesso" come se fosse un array, in cui l'indice corrisponde alla sequenza che hai definito nell'html. In questo caso, tu hai definito per il campo radio "sesso" prima il caso M e poi il caso F: quindi con sesso[0] controlli se è stato selezionato il caso M e con sesso[1] controlli il caso F.

Il codice corretto per eseguire il tuo controllo quindi è il seguente:

<script type="text/javascript" language="javascript">
function controlla() {
    if (document.datiPartecipante.sesso[0].checked && document.datiPartecipante.classe.value == "laserRadial_F" ) {
      alert ("\n Errore! Stai tentando di iscrivere un maschio in una categoria femminile!");
      document.datiPartecipante.classe.focus();
      return false;
     }
  else if (document.datiPartecipante.sesso[1].checked && document.datiPartecipante.classe.value == "laserRadial_M" ) {
      alert ("\n Errore! Stai tentando di iscrivere una femmina in una categoria maschile!");
      document.datiPartecipante.classe.focus();
      return false;
     }
  else {
  return true;
  }
}

</script> 

Notare che, dato che tu hai una sola form da controllare, ho semplificato anche il codice di accesso alla form e ai suoi campi. Questo implica che devi modificare leggermente anche la definizione dell'onsubmit come segue:

<form name="datiPartecipante" method="post" action="addpart_step2.php" onsubmit="javascript: controlla()">

Serve aiuto? Posso darti una mano in

Webmasters - Aiuto Software - Da Windows a Mac

Mappa Utenti ItaliaMac

[[miao]]

Link al commento
Condividi su altri siti

sì: prova a modificare la chiamata ad onsubmit in questo modo:

<form name="datiPartecipante" method="post" action="addpart_step2.php" onsubmit="javascript: [color="Red"]return[/color] controlla();">

Serve aiuto? Posso darti una mano in

Webmasters - Aiuto Software - Da Windows a Mac

Mappa Utenti ItaliaMac

[[miao]]

Link al commento
Condividi su altri siti

sì: prova a modificare la chiamata ad onsubmit in questo modo:

<form name="datiPartecipante" method="post" action="addpart_step2.php" onsubmit="javascript: [color="Red"]return[/color] controlla();">

Funziona.... GRAZIE MILLE DELL'IMMENSO AIUTO CHE MI DAI SEMPRE!!!!

Ciao ciao magomac

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...