consigli sull'action dei form

  • Creatore Discussione Creatore Discussione akp
  • Data di inizio Data di inizio

akp

Utente Attivo
8 Giu 2015
133
0
16
Buona sera ragazzi, vorrei chiedervi quale delle due tecniche applicate nei form?
1)action nella stessa pagina
2)action in un altra pagina

io momentaneamente sto utilizzando la 1 e in alcuni casi(pochi) la 2. Quali sono i pro e i contro di entrambi i metodi? In quali casi è consigliato utilizzare la 1 e in quali la 2?
 
Buon giorno, premettendo che se utilizzi l'invio di form, a meno che tu non crei un iframe, viene comunque effettuato il reload totale della pagina.
Io ti consiglio di utilizzare Ajax o $.post() di Jquery, secondo me sono un ottimo strumento per l'invio di form e la validazione di dati.
 
ciao
a parte il reload entrambi i metodi vanno bene.
secondo me dipende da quanto script html per il form e php ti serve per controllo e elaborazione dei dati, se è poco non vale la pena di fare due pagine
se molto conviene due perchè poi diventa più facile la manutenzione cercando le righe da correggere o modificare.
un accorgimento comodo se usi una pagina sola è nell'action utilizzare la variabile globale $_SERVER['PHP_SELF'] in modo da non preuccuparsi se si dovesse cambiare il nome della pagina,
ti schematizzo
PHP:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<!-- quello che serve -->
</form>
poi se vuoi utilizzare ajax o js dipende, comunque, sempre a mio parere, è essenziale il controllo dei dati lato server con php
 
ciao
a parte il reload entrambi i metodi vanno bene.
secondo me dipende da quanto script html per il form e php ti serve per controllo e elaborazione dei dati, se è poco non vale la pena di fare due pagine
se molto conviene due perchè poi diventa più facile la manutenzione cercando le righe da correggere o modificare.
un accorgimento comodo se usi una pagina sola è nell'action utilizzare la variabile globale $_SERVER['PHP_SELF'] in modo da non preuccuparsi se si dovesse cambiare il nome della pagina,
ti schematizzo
PHP:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<!-- quello che serve -->
</form>
poi se vuoi utilizzare ajax o js dipende, comunque, sempre a mio parere, è essenziale il controllo dei dati lato server con php
Ciao e grazie ad entrambi per le risposte. Lasciando stare il reload che non è un gran problema per me..ho notato che se faccio l'action nella stessa pagina e dopo l'invio per un qualsiasi motivo decido di aggiornarla mi invia nuovamente i dati al database. quindi per evitare questo problema posso utilizzare gli header,però qua si crea un altro problema cioè se in caso di successo volessi far comparire un messaggio "tutto bene" con lheader non questo non comparirebbe.
Altra domanda : potrei crearmi una pagina apposta dove indirizzare tutti POST? Cioè potrebbe essere una buona soluzione per avere il codice sistemato?

Inviato dal mio XT1068 utilizzando Tapatalk
 
Non riesco a capire bene cosa vorresti fare.

Vorresti convogliare in un unica pagina di elaborazione più form di più pagine?

Io ti consiglio di utilizzare una pagina di risposta per ogni pagina di invio. Appunto per il problema di leggibilità e aggiornamento del codice PHP.

Non so che tipo di programma o sito web stai sviluppando ma nel caso tu avessi 10 pagine, con 1 form ognuna, immaginati come sarebbe scomodo e incasinato manutenere una sola pagina con 10 risposte ai form.
Ovviamente dipende dal progetto, ma secondo me non è consigliabile.
 
ciao
se intendi fare quello che ha inteso localhost.nicola, cioè una pagina che raccoglie i post di diversi form, ha perfettamente ragione, sarebbe un casino.
anche perchè dovresti ricordarti di cambiare il name di tutti i submit altrimenti come fa la pagina php a capire da quale pagina provieni.
se invece è un form solo anche con l'invio di molti dati, puoi fare benissimo una pagina che li raccolga tutti, riinviado alla pagina del form (o altra come preferisci) una volta processati
 
Grazie per i chiarimenti, seguirò i vostri suggerimenti :mavieni:
 
ciao
se ti interessa questo è uno schema come in genere utilizzo io.
uso anche le sessioni in modo che se l'utente fa degli errori ricordo i dati giusti e tornado al form, l'utente non è costretto a iniziare da capo tutto l'inserimento
pagina_del_form.php (html+php)
PHP:
<?php
session_start();
if(!isset($_GET['errori']) || $_GET['errori'] ==""){
//se il get non esiste o è vuoto
//o è la prima volta che accedi al form o non sono stati fatti errori
?>
<!DOCTYPE HTML>
<html>
<head>
<!-- tutto quello che serve -->
</head>
<body>
<form action="processa.php" method="post">
  uno:  <input type="text" name="uno" value="<?php echo $_SESSION['uno']; ?>"></br>
  due:  <input type="text" name="due"<?php echo $_SESSION['due']; ?>></br>
  <!-- altri compi di input -->
  <input type="submit" name="invia" value="invia">
</form>
<?php
}else{
	echo $_GET['errori'];
	//e un piccolo js per tornare al form dopo alcuni secondi
}
?>
</body>
</html>

processa.php (solo php, senza niente html)
PHP:
<?php
session_start();
$errori="";//stringa vuota
//raccolgo e verifico i dati, esempio
if($_POST['uno']==""){
	$_SESSION['uno']="";
	$errori.="non hai inserito il dato UNO</br>";
}else{
	$_SESSION['uno']=$_POST['uno'];
}
//eccetera per tutti gli altri post
if($errori==""){
	//la stringa è rimasta vuota
	//non ci sono errori
	//processo i dati, es. invio email o li inserisco nel db...
	if(!$processo){
		//c'è un errore es. di connessione
		$errori="il processo non è andato a buon fine, riprova più tardi</br>":;
	}else{
		//processo OK
		//elimino le sessioni perchè non servono
		$_SESSION=array();
	}

}
//e riinvio alla pagina del form
header("location=pagina_del_form.php?errori=$errori");
?>
considera che è uno schema, quindi posso aver fatto erori
 
ciao
la metto a vuota per verificare se ci sono stati errori nella compilazione del form o nell'esecuzione del processo, la utilizzo inoltre anche per stampare a video gli eventuali errori che ha fatto l'utente nella pagina del form
anche se, forse principalmente, è una forma di abitudine
 

Discussioni simili