Forms con PHP

luca_fava

Nuovo Utente
31 Lug 2009
9
0
0
Mexico City
Salve a tutti. Come molti sono nuovo del forum e alle prime armi con PHP.
mi sono cimentato nella programmazione di una pagina e ho giá un problema. La situazione é la seguente: l'utente inserisce vari dati in alcuni campi di testo (nome, mail, num. prodotto, ecc), poi alla fine preme il pulsante Invia, si apre una pagina dove revisa i dati inseriti e preme il bottone Conferma o torna indietro per correggere. Al premere Conferma mi dovrebbero arrivare per mail y dati inseriti, ecco tutto. LA mia programmazione va bene finché preme Invia: si apre la pagina di revisione ma é vuota e mi arrivano subito y dati al mail (correttamente, quindi fin li funziona...). Quello che vorrei fare é una routine che mostri i dati inseriti e aspetti la pressione del bottone Conferma per inviarli al mail e chiudere la pagina, ma... come faccio? :D Qualcuno mí puó aiutare?? Grazie mille!
 
ciao
passa i dati in sessione o cookie.
visualzza i dati e fai un miniform col pulsante conferma e uno torna indietro

se premuto conferma
prelevi i dati dalla sessione e li invii con email
altrimenti
torni al form di partenza

dato che hai i dati in sessione o in cookie, puoi popolare il form con i dati immessi in modo che l'utente non debba riscriverli tutti ed eventualmente correggere gli errati
 
Grazie mille Borgo italia, peró la dir la veritá, ho capito la metá di quel che mi hai scritto... :crying:
Passo qui il codice che ho immesso per la visualizzazione dei dati. Qui ho eliminato per il momento tutta la parte del pulsante invia o torna giá che non riuscivo a farlo funzionare. Praticamente nella prima parte danno INVIA e si apre questa dove solo vedono i dati inseriti e subito arriva al mail (non fare caso alla lingua in cui é scritto, é per una pagina in spagnolo ma immagino che il concetto si capisca...).

<?php

$nombre = $_POST["nombre"];
$telefono = $_POST["telefono"];
$mail = $_POST["mail"];
$celular = $_POST["celular"];
$ciudad = $_POST["ciudad"];
echo "<p class='Estilo2'>Tus Datos son los Siguientes:</p>";
echo "<p class='Estilo2'>Nombre: $nombre</p>";
echo "<p class='Estilo2'>Telefono: $telefono</p>";
echo "<p class='Estilo2'>Mail: $mail</p>";
echo "<p class='Estilo2'>Celular: $celular</p>";
echo "<p class='Estilo2'>Ciudad: $ciudad</p>";

import_request_variables ("GPC");
$asunto .= "Solicitud de $nombre";
$cuerpo .= "Enviado por: $nombre \n";
$cuerpo .= "E-mail: $mail \n";
$cuerpo .= "Telefono: $telefono \n";
$cuerpo .= "Celular: $celular \n";
$cuerpo .= "Ciudad: $ciudad \n";
$cuerpo .= "Fin del correo. \n";

mail("[email protected]",$asunto,$cuerpo);

echo "<center>";
echo "<p class='Estilo2'>La solicitud se envió con éxito</p>";
echo "<p class='Estilo2'>Te contestaremos lo más pronto posible</p><br>";

echo "<br><br><a href=\"index.html\"><p class='Estilo32'>Regresa a la pagina principal</p></a>";

?>

E' molto semplice ma finora é quello che funziona...
Come posso fare come dici tu di Passare i dati a Sessione o Cookie? E come per recuperarli? E poi come popolo i form anteriori con i dati in sessione o cookie?
Grazie ancora per l'aiuto! Spero mi potrai chiarire questi punti e magari cosí risolveró giá i problema :fonzie: CIAO!
 
ciao
prova in questa maniera, per ripopolare il form come ha detto eliox postalo

PHP:
<?php
//questa istruzione deve essere la prima istruzione, anche prina di <!DOCTYPE....
//inserire queste righe anche nella pag del form (che deve essere .php) se vuoi che
//anche il form rimanga compilato
if(!isset($_SESSION)){
session_start ();
}
?>

<?php
//prelevo i dati dal form e li passo in sessione scrivo solo il primo, resto uguale, salvo i nomi
//le sessioni create rimangono sino all'uscita dal bw
$nombre = $_POST["nombre"];
$_SESSION['nombre']=$nombre;
//eccetera..........
//e visualizzi i valori
echo "<p class='Estilo2'>Tus Datos son los Siguientes:</p>";
echo "<p class='Estilo2'>Nombre: $_SESSION['nombre']</p>";
//eccetera......................
if(isset($_POST['Submit']) && $_POST['Submit']=="conferma"){
	import_request_variables ("GPC");
	$asunto .= "Solicitud de $_SESSION['nombre']";
	//eccetera......

	if(mail("[email protected]",$asunto,$cuerpo)){
		echo "<center>";
		echo "<p class='Estilo2'>La solicitud se envió con éxito</p>";
		echo "<p class='Estilo2'>Te contestaremos lo más pronto posible</p><br>";
		echo "<br><br><a href=\"index.html\"><p class='Estilo32'>Regresa a la pagina principal</p></a>";
	}else{
		echo "errore di trasmissione, riprova più tardi";
	}	echo "<br><br><a href=\"index.html\"><p class='Estilo32'>Regresa a la pagina principal</p></a>";
}

?>


<form action="aaa" method="<?php echo $_SERVER['PHP_SELF']; ?>" name="form1">
  <input type="submit" name="Submit" value="conferma">
  <!--al posto di # devi mettere il nome della pagina dove vuoi tornare
  a te il compito di rendere il tutto elegante
  -->
  <a href="#">Annulla</a>
</form>
 
Wow! Grazie mille! Gli ho dato un'occhiata e mi é sembrato piuttosto chiaro... ora ci provo e ti faccio sapere! Grazie mille! :fonzie:
 
ciao mi sono accorto di aver fatto un errore di scrittura
no:
}else{
echo "errore di trasmissione, riprova più tardi";
} echo "<br><br><a href=\"index.html\"><p class='Estilo32'>Regresa a la pagina principal</p></a>";
}

ma:
}else{
echo "errore di trasmissione, riprova più tardi";
echo "<br><br><a href=\"index.html\"><p class='Estilo32'>Regresa a la pagina principal</p></a>";
}
}
 
Ciao Borgoitalia
C'é qualcosa che non va...:crying:
Ho inserito le istruzioni esattamente come hai indicato, tutto ben ordinato e pulito, ma al momento di aprire il file .php (dando sul bottone Invio della pagina Form) appare completamente in bianco! Cioé, non da nemmeno errore, niente! Nemmeno un testo e nemmeno la parte in html, che secondo me dovrebbe apparire anche se il PHP da errore no?
Ti riporto qui il codice completo della pagina, magari ho fatto io qualche errore di trascrizione:

<?php
if(!isset($_SESSION)){
session_start ();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>
<body>
<?php
$nombre = $_POST["nombre"];
$_SESSION['nombre']=$nombre;
$telefono = $_POST["telefono"];
$_SESSION['telefono']=$telefono;
$mail = $_POST["mail"];
$_SESSION['mail']=$mail;
$celular = $_POST["celular"];
$_SESSION['celular']=$celular;
$ciudad = $_POST["ciudad"];
$_SESSION['ciudad']=$ciudad;
echo "<p class='Estilo2'>Tus Datos son los Siguientes:</p>";
echo "<p class='Estilo2'>Nombre: $_SESSION['nombre']</p>";
echo "<p class='Estilo2'>Telefono: $_SESSION['telefono']</p>";
echo "<p class='Estilo2'>Mail: $_SESSION['mail']</p>";
echo "<p class='Estilo2'>Celular: $_SESSION['celular']</p>";
echo "<p class='Estilo2'>Ciudad: $_SESSION['ciudad']</p>";
if(isset($_POST['Submit']) && $_POST['Submit']=="conferma"){
import_request_variables ("GPC");
$asunto .= "Solicitud de $_SESSION['nombre']";
$cuerpo .= "Enviado por: $_SESSION['nombre'] \n";
$cuerpo .= "E-mail: $_SESSION['mail'] \n";
$cuerpo .= "Telefono: $_SESSION['telefono'] \n";
$cuerpo .= "Celular: $_SESSION['celular'] \n";
$cuerpo .= "Ciudad: $_SESSION['ciudad'] \n";
$cuerpo .= "Fin del correo. \n";
if(mail("[email protected]",$asunto,$cuerpo)){
echo "<center>";
echo "<p class='Estilo2'>La solicitud se envió con éxito</p>";
echo "<p class='Estilo2'>Te contestaremos lo más pronto posible</p><br>";
echo "<br><br><a href=\"index.html\"><p class='Estilo32'>Regresa a la pagina principal</p></a>";
}else{
echo "error en el envio, intenta más tarde";
echo "<br><br><a href=\"index.html\"><p class='Estilo32'>Regresa a la pagina principal</p></a>";
}
}

?>
<form action="file:///D|/Temp/aaa" method="<?php echo $_SERVER['PHP_SELF']; ?>" name="form1">
<input type="submit" name="Submit" value="conferma">
<a href="file:///D|/Temp/lapiz.html">Annulla</a>
</form>

</body>
</html>


Per me la cosa é davvero strana... non sará qualcosa che non va nel mio server? Puó essere possibile che non supporti certe istruzioni?? Perché che appaia in bianco mi pare davvero strano...
Spero tanto si possa risolvere.. Grazie ancora! CIAO
 
ciao
prova a postare anche il form di partenza che lo provo
visto così il codice sembrerebbe giusto.
se non invia l'email può dipendere da molte cose, ma la parte di visualizzazione dei dati inseriti dovrebbe apparire comunque
 
Ciao
Quello che mi preoccupa di piú non é solo che non arriva il mail, ma che non appare niente nella pagina de explorer. Questo é davvero strano perché almeno la parte in HTML dovrebbe apparire!
Ho controllato il settaggio del mio server dove é in hosting la mia pagina e mi pare stia bene, il PHP é configurato nella versione 5. Da la opzione di poter retrocedere alla 4... credi sia piú conveniente?
Qui ti passo il codice della parte del Form della pagina di inserimento dati. Non credo sia necessario postare tutto il contenuto della pagina dato che gli altri dati sono relativi ad immagini, testo e tutto il resto che non dovrebbero influenzare il form.


<form id="form1" name="form1" method="post" action="http://www.curiosita.com.mx/lapiz.php">
<div id="apDiv3">
<label>
<input type="text" name="nombre" id="nombre" />
</label>
</div>
<div id="apDiv4">

<label>
<input type="text" name="telefono" id="telefono" />
</label>

</div>
<div id="apDiv5">

<label>
<input type="text" name="mail" id="mail" />
</label>

</div>
<div id="apDiv6">

<label>
<input type="text" name="celular" id="celular" />

</div>
<div id="apDiv7">

<label>
<input type="text" name="ciudad" id="ciudad" />
</label>
</div>
<div id="apDiv16">
<label>
<input name="nombrestamping" type="text" id="nombrestamping" size="60" />
</label>
</div>
<div id="apDiv12">
<label>
<input name="stamping" type="text" id="stamping" value="CL" size="8" />
</label>
</div>
<div id="apDiv13">
<label>
<input name="fuente" type="text" id="fuente" value="1" size="5" />
</label>
</div>
<div id="apDiv14">
<label>
<input name="colorfuente" type="text" id="colorfuente" value="1" size="8" />
</label>
</div>
<div id="apDiv15">
<label>
<input name="fondo" type="text" id="fondo" value="3" size="8" />
</label>
</div>

</div>
<div id="apDiv8">
<label>
<input type="submit" name="enviar" id="enviar" value="Enviar" />
</label>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
</form>


Tuttavia mi mancano ancora parecchi campi da inserire, ma prima volevo che funzionasse e poi inseriró tutti gli altri.
Una domanda: credi che convenga di piu inviare i dati a un MySQL e poi recuperarli per visualizzarli ed inviarli poi ad un mail?
Grazie ancora! CIAO
 
ciao
scusa, ma ho fatto io degli errori (uno di logiga ed uno di sintassi), l'ho buttato giù di getto senza pensare.
oggi ti riposto il corretto
 
ciao
ecco il codice corretto per la pagina di invio/conferma.
se vuoi che il ritorno al form ti presenti i dati nei campi ti invio un esempio (la pagina form deve essere .php).
per fare le prove in locale ti conviene commentare l'if-else dell' invio e mettere un echo che ti stampi quanto dovrebbe inviare.
credi che convenga di piu inviare i dati a un MySQL e poi recuperarli per visualizzarli ed inviarli poi ad un mail
dipende dall'importanza, se ad es. è un ordine di acquisto conviene inviare anche a mysql, delle volte le email non arrivano

codice invio/conferma
PHP:
<?php 
if(!isset($_SESSION)){ 
session_start (); 
} 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>
<body>
<?php
//errore di logica quando dai il submit conferma i $_post si vuotano e 
//di conseguenza si vuota anche la $_SESSION
//ho anche semplificato, inutile passaggio alle variabili $nombre ecc...
//la gatta frettolosa fa i gattini ciechi
if(isset($_POST['nombre'])){
	$_SESSION['nombre']=$_POST['nombre'];
}
if(isset($_POST['telefono'])){
	$_SESSION['telefono']=$_POST['telefono'];
}
if(isset($_POST['mail'])){
	$_SESSION['mail']=$_POST['mail'];
}
if(isset($_POST['celular'])){
	$_SESSION['celular']=$_POST['celular'];
}
if(isset($_POST['ciudad'])){
	$_SESSION['ciudad']=$_POST['ciudad'];
}

//mi ero dimenticato che $_SESSION deve essere trattata nei concatenamenti
//come tutte le funzioni 
echo "<p class='Estilo2'>Tus Datos son los Siguientes:</p>";
echo "<p class='Estilo2'>Nombre: ".$_SESSION['nombre']."</p>";
echo "<p class='Estilo2'>Telefono: ".$_SESSION['telefono']."</p>";
echo "<p class='Estilo2'>Mail: ".$_SESSION['mail']."</p>";
echo "<p class='Estilo2'>Celular: ".$_SESSION['celular']."</p>";
echo "<p class='Estilo2'>Ciudad: ".$_SESSION['ciudad']."</p>";
if(isset($_POST['Submit']) && $_POST['Submit']=="conferma"){
	import_request_variables ("GPC");
	$asunto .= "Solicitud de ".$_SESSION['nombre']; 
	$cuerpo .= "Enviado por: ".$_SESSION['nombre']."\n";
	$cuerpo .= "E-mail: ".$_SESSION['mail']."\n";
	$cuerpo .= "Telefono: ".$_SESSION['telefono']."\n";
	$cuerpo .= "Celular: ".$_SESSION['celular']."\n";
	$cuerpo .= "Ciudad: ".$_SESSION['ciudad']."\n";
	$cuerpo .= "Fin del correo. \n";

	if(mail("[email protected]",$asunto,$cuerpo)){
		echo "<center>";
		echo "<p class='Estilo2'>La solicitud se envió con éxito</p>";
		echo "<p class='Estilo2'>Te contestaremos lo más pronto posible</p><br>";
		echo "<br><br><a href=\"index.html\"><p class='Estilo32'>Regresa a la pagina principal</p></a>";
	}else{
		echo "error en el envio, intenta más tarde"; 
		echo "<br><br><a href=\"index.html\"><p class='Estilo32'>Regresa a la pagina principal</p></a>"; 
	} 
	
}

?>
<!-- avevo messo codice php in metod invece chi un action -->
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="form1"> 
<input type="submit" name="Submit" value="conferma"> 
<a href="file:///D|/Temp/lapiz.html">Annulla</a>
</form> 
</body>
</html>

es codice per il form

PHP:
<?php 
if(!isset($_SESSION)){ 
session_start (); 
} 
$nombre=$_SESSION['nombre'];
$telefono=$_SESSION['telefono'];
$mail=$_SESSION['mail'];
$celular=$_SESSION['celular'];
$ciudad=$_SESSION['ciudad'];
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento senza titolo</title>
</head>

<body>
<form name="form1" method="post" action="invio.php">
  <p>nombre
    <input name="nombre" type="text" id="nombre" value="<?php echo $nombre;?>">
</p>
  <p>telefono
    <input name="telefono" type="text" id="telefono" value="<?php echo $telefono;?>"> 
  </p>
  <p>mail 
    <input name="mail" type="text" id="mail" value="<?php echo $mail;?>"> 
  </p>
  <p>celular 
    <input name="celular" type="text" id="celular" value="<?php echo $celular;?>"> 
  </p>
  <p>ciudad
    <input name="ciudad" type="text" id="ciudad" value="<?php echo $ciudad;?>"> 
  </p>
  <p>
    <input type="submit" name="Submit" value="Invia">
</p>
</form>
</body>
</html>

scusa per gli errori, questa volta l'ho provato e funzia
 
Ciao!
Grazie mille!! Ha funzionato alla perfezione, almeno quello della pagina di conferma, piú avanti proveró quella del Form ma non ci dovrebbero aver problemi... MUCHAS GRACIAS! :fonzie:

Ci sarebbero peró un'altro paio di dettagli che volevo cambiare... C'ho provato ma mi ritrovo ancora a un punto morto. Faccio il Post del codice:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="form1">
<input type="submit" name="Submit" value="Confirma">
</form>
<form id="form1" name="form1" method="post" action="http://www.curiosita.com.mx/lapiz.html">
<input type="submit" name="Submit2" value="Cancelar" />
<!-- <a href="file:///D|/Temp/lapiz.html">Annulla</a> -->
</form>

Tu qui avevi messo il link della pagina html a un testo. Io l'ho voluto fare a un bottone, ma al momento di dargli click sia a Confirma che a Cancelar.. non succede niente!! perché?? :confused:

Un'altra cosa: una volta che si é confermato i dati e si preme il bottone di conferma, vorrei che sparissero y due bottoni (Confirma e Cancelar) e apparisse un bottone che permetta di chiudere la finestra... Ma come si fa??

echo "<center>";
echo "<p class='Estilo2'>La solicitud se envió con éxito</p>";
echo "<p class='Estilo2'>Te contestaremos lo más pronto posible</p><br>";
echo "<br><br><a href=\"index.html\"><p class='Estilo32'>Regresa a la pagina principal</p></a>";
echo "<input type=\"submit\" name=\"Submit\" value=\"Cerrar Ventana\">";
}else{
echo "<br><p class='Estilo32'>Error en el envio de los datos, intenta más tarde</p>";
echo "<br><br><a href=\"index.html\"><p class='Estilo32'>Regresa a la pagina principal</p></a>";

Qui sono riuscito a inserire il bottone di chiudere la finestra, ma non ho idea di quale sia il comando :crying:
E poi come potrei fare a far sparire gli altri due??

Grazie ancora per l'aiuto e scusa se ti rompo ancora... ma é l'ultima volta, poi lasceró cosí la pagina giá che sará piú che sufficiente...
ciao!
 
Errata corrige

Scusa! ho fatto un errore di valutazione:

Avevo scritto:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="form1">
<input type="submit" name="Submit" value="Confirma">
</form>
<form id="form1" name="form1" method="post" action="http://www.curiosita.com.mx/lapiz.html">
<input type="submit" name="Submit2" value="Cancelar" />
<!-- <a href="file:///D|/Temp/lapiz.html">Annulla</a> -->
</form>

Tu qui avevi messo il link della pagina html a un testo. Io l'ho voluto fare a un bottone, ma al momento di dargli click sia a Confirma che a Cancelar.. non succede niente!! perché??

In realtá premendo Cancelar si funziona, torna alla pagina del form, peró premendo il bottone di Conferma, non succede niente...
 
HTML:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="form1"> 

</form>
<form id="form1" name="form1" method="post" action="http://www.curiosita.com.mx/lapiz.html">
<input type="submit" name="Submit2" value="Cancelar" />
<!-- <a href="file:///D|/Temp/lapiz.html">Annulla</a> -->
</form>
ciao
per prima cosa devi cambiare nome anche al secondo form es
<form id="form2" name="form2"......
poi ho visto che nel primo hai messo
<input type="submit" name="Submit" value="Confirma">
hai cambiato anche nell'if?

if(isset($_POST['Submit']) && $_POST['Submit']=="conferma"){.......
se no, devi mettere Confirma
 
Ciao
grazie mille per gli aiuti, sono stati utilissimi e tutto pare funzionare finora! ;):D
Ora, c'é solo un'ultima cosa che vorrei fare ma non ho idea come: sono riuscito a inserire il bottone di chiusura della finestra

echo "<form name=\"form1\" method=\"post\" action=\"javascript:self.close()\">";
echo "<input type=\"submit\" name=\"Submit\" value=\"Cerrar Ventana\">";
echo "</form>";

e questo stranamente funziona ;), ma peró rimangono presenti i due bottoni di Conferma e Cancella.

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="form1">
<input type="submit" name="Submit" value="Confirma">
</form>
<form id="form2" name="form2" method="post" action="lapiz.php">
<input type="submit" name="Cancelar" value="Cancelar" />
</form>

Come potrei fare per far sparire questi due bottoni una volta dato il click in "confirmar", in modo che rimanga solo il bottone di Chiusura finestra??
Questo sarebbe davvero tutto e poi non ti stufo piú! ;)
Grazie! ciao!
 
ciao
invece di usare un bottone per la chiusura, prova ad inserire quasta riga di codice

echo "<meta http-equiv='Refresh' content='3; URL=pagina_a_cui devo_tornare.php'>";
dove content 3 sono i secondi di attesa prima della chusura (puoi mettere da 0 in su).
la inserisci dentro l'if mail()

PHP:
if(mail("[email protected]",$asunto,$cuerpo)){ 
        echo "<center>"; 
        echo "<p class='Estilo2'>La solicitud se envió con éxito</p>"; 
        echo "<p class='Estilo2'>Te contestaremos lo más pronto posible</p><br>"; 
        //echo "<br><br><a href=\"index.html\"><p class='Estilo32'>Regresa a la pagina principal</p></a>"; 
       echo "<meta http-equiv='Refresh' content='3; URL=index.html'>"; 
    }else{ 
        echo "error en el envio, intenta más tarde";  
        //echo "<br><br><a href=\"index.html\"><p class='Estilo32'>Regresa a la pagina principal</p></a>";
        echo "<meta http-equiv='Refresh' content='3; URL=index.html'>";
    }


scusa, ma non c'entra con il post, sei un italiano in messico? se si timando un messaggio privato
 
OK grazie! mi sembra una buona opzione, cosí non é necessario far sparire gli altri due bottoni (che ieri notte c'ho pensato e credo dovrei mettere l'html dei bottoni prima dei messaggi che appaiono che il messaggio si é inviato, ecc... ma questo comporta qualche cambio negli IF, vero?). Piú tardi ci provo e con questo la pagina dovrebbe essere completa... grazie mille per tutti gli aiuti!!
Si esatto, sono italiano e vivo a Cittá del Messico da circa 5 anni... Originariamente sono di Brescia... Come sapevi che scrivevo al messico?
Ci sentiamo! CIAO!:)
 

Discussioni simili