- Home
- Categorie
- Coding e Sistemistica
- PHP
- Form contatti in Php
-
Guarda, scrivo sui forum proprio perché mi hanno aiutato tanto nel mio corso di apprendimento, e ora che posso permettermi di aiutare chi ne ha bisogno, scrivo per loro e per chi leggerà in futuro.
Il procedimento è semplice: vedi che ogni campo del form ha il campo name?
Quello è il valore che potrai recuperare dalla pagina php.
La cartella cgi-bin non ti serve. Ti basta solo un file php!
Se vedi il form ha come action (separala dalla parola form) FormMail.asp che noi cambieremo in formmail.php.
Creiamo la pagina formmail.php e cancelliamo tutto quello che crea il software (se usi dreamweaver per esempio) altrimenti basta un editor di testo come blocco note o textedit.
Per recuperare i valori basta che scrivi nella pagina formmail.php:
[PHP]<?php
$ragionesociale=$_POST['txtRagioneSociale'];
$indirizzo=$_POST['txtIndirizzo'];
$cap=$_POST['txtCAP']
...[/PHP]e vai avanti così per tutti i campi, cambiando solo l'interno delle quadre con i name dei campi successivi del form.
Per creare una riga unica di testo con tutti i dati fai così:(partiamo dalla base, poi affiniamo la tecnica)
[PHP]$tutticampi=$ragionesociale.' , '.$indirizzo.' , '.$cap.' , '.ecc.... ;
[/PHP]in questo modo unisci tutti i dati appena recuperati in uno solo.
Perché? Ora vedi.Dopo aver messo i valori del form dentro a delle variabili ($...) usiamo la funzione mail() per l'invio dell'email.
[PHP]mail("[email protected]","Oggetto email", $tutticampi);
[/PHP]
e basta.
Così ti arriverà al tuo indirizzo email, con oggetto "Oggetto email", tutti i campi inseriti dentro al form.
Se vuoi puoi scrivere un messaggio dell'avvenuto invio.
[PHP]echo "Messaggio Inviato";
[/PHP]
Prova.
-
Quindi ricapitolando (ho corretto la pagina come l' hai scritta tu) sarebbe così:
1_ html da incollare nella pagina del sito ( io uso come editor Serif WebPlus X2 con ftp interno)....
<form action="formmail.php"method="post"name="frmModulo"id="frmModulo"onSubmit="return Convalida()">
<table width="400"border="1"cellpadding="0"cellspacing="0"bgcolor="#CCCC99">
<tr>
<td>Nome e cognome*: </td>
<td><input name="txtRagioneSociale"type="text"id="txtRagioneSociale"size="34"></td>
</tr>
<tr>
<td>Indirizzo*:</td>
<td><input name="txtIndirizzo"type="text"id="txtIndirizzo"size="34"></td>
</tr>
<tr>
<td>CAP*:</td>
<td><input name="txtCAP"type="text"id="txtCAP"size="34"></td>
</tr>
<tr>
<td>Comune*:</td>
<td><input name="txtComune"type="text"id="txtComune"size="34"></td>
</tr>
<tr>
<td>Provincia:</td>
<td><input name="txtProvincia"type="text"id="txtProvincia"size="34"></td>
</tr>
<tr>
<td>Email*:</td>
<td><input name="txtEmail"type="text"id="txtEmail"size="34"></td>
</tr>
<tr>
<td>Telefono*:</td>
<td><input name="txtTel"type="text"id="txtTel"size="34"></td>
</tr>
<tr>
<td valign="top">Messaggio:</td>
<td><textarea name="txtInfo"cols="27"rows="6"id="txtInfo"></textarea></td>
</tr>
<tr>
<td colspan="2">* Dati obbligatori </td>
</tr>
<tr align="right">
<td colspan="2"><input name="InviaModulo"type="submit"id="InviaModulo"value="Invia">
<input name="Reimposta"type="reset"id="Reimposta"value="Reimposta"></td>
</tr>
</table>
</form>
Dopodichè con il blocco note creo un file chiamandolo formmail.php così composto:
<?php
$ragionesociale=$_POST['txtRagioneSociale'];
$indirizzo=$_POST['txtIndirizzo'];
$cap=$_POST['txtCAP'];
$comune=$_POST['txtComune'];
$provincia=$_POST['txtProvincia'];
$email=$_POST['txtEmail'];
$tel=$_POST['txtTel'];
$info=$_POST['txtInfo'];
$tutticampi=$ragionesociale.' , '.$indirizzo.' , '.$cap.' , '.$comune.' , '.$provincia.' , '.$email.' , '.$tel.' , '.$info.';
mail("[email protected]","Oggetto email", $tutticampi);
echo "Messaggio Inviato";
(Ovviamente inserirò il mio indirizzo email).
A questo punto il file appena creato lo carico sul database php...lo carico dentro ad una cartella, oppure così come sta?
Scusa la mia somaraggine ...anche il sito va caricato sul database php o solo il file creato col blocco note?
Potranno sembrare domande banali però magari capisco meglio, spero di aver detto correttamente i passaggi. Se non sono giusti potresti correggermi per favore?
Grazie veramente tanto !!!
-
Nella variabile tutticampi puoi vedere i punti.
Quei punti servono a collegare stringhe e/o variabili assieme.
Se scrivi
echo "Ciao"." mamma";
ti verrà scritto "Ciao mamma".
Se sostituisci, come nel nostro caso, mamma con una variabile, è la stessa cosa.
Il fatto di scrivere $var1.' , '.$var2 ecc... significa collegare ogni variabile ad uno spazio-virgola-spazio per dividere le informazioni, altrimenti sarebbero venute tutte attaccate.
Ecco perché non servono dopo l'ultima variabile in $tutticampi, se no ti ritroveresti alla fine di tutto con una virgola. Magari ci si può mettere un punto oppure nulla.
Se al posto della virgola mettessimo \n, andrebbe a capo.Ho notato anche che tutti i parametri dei campi del form sono attaccati tra loro, come prima lo era action (method, name, id, ecc...). Staccali, così, oltre che corretto, diventa anche leggibile.
Il php va aperto e chiuso dai suoi appositi tag, rispettivamente <?php e ?>
Altra cosa: se vuoi capire cosa ti arriva nella mail, ti conviene mettere il tipo di dato e il suo corrispettivo valore:
Ragione Sociale: blabla , Indirizzo: blabla , ecc...
Allora si aggiunge dove ci sono le virgole anche il valore che seguirà:
[PHP]<?php
$ragionesociale=$_POST['txtRagioneSociale'];
$indirizzo=$_POST['txtIndirizzo'];
$cap=$_POST['txtCAP'];
$comune=$_POST['txtComune'];
$provincia=$_POST['txtProvincia'];
$email=$_POST['txtEmail'];
$tel=$_POST['txtTel'];
$info=$_POST['txtInfo'];
$tutticampi='Ragione Sociale: '.$ragionesociale.' , Indirizzo: '.$indirizzo.' , CAP: '.$cap.' , Comune: '.$comune.' , Provincia: '.$provincia.' , Email: '.$email.' , Telefono: '.$tel.' , Info: '.$info;
mail("[email protected]","Oggetto email", $tutticampi);
echo "Messaggio Inviato";
?>
[/PHP]Comunque studiati qualche guida base, magari qui o su php.html.it , giusto per capire che razza di codice ti trovi davanti.
In una giornata già capisci i costrutti base e, a par mio, è anche divertente (soprattutto se si continua a programmare e si scoprono cose affascinanti!)
-
Grazie Portapipe il tuo aiuto è veramente prezioso
Adesso ho capito la funzione del linguaggio che approfondirò ulteriormente con le guide non appena mi riesce questo progetto.
Io adesso volevo solo capire cosa devo fare con il foglio creato col blocco note (formmail.php), ovvero l' ultima scrittura in php che hai postato.
Devo metterlo in una cartella e fare l' upload nel database php, o cosa ?
Se lo devo trasferire sul database php, io uso filezilla come ftp. Devo lasciarlo in automatico, in ASCII o in BIN ?
Ti spiego Tophost mi da la possibilità di ospitare il mio sito sul server e di potermi creare fino a 4 database in php. io uno lo creato con username e password....purtroppo è questo concetto che non mi è chiaro non avendolo mai fatto fino ad ora! Ci carico anche il sito nel database php o solo la cartella del blocco note...sempre che vada caricata....non so? :bho:
Mi potresti descrivere i passaggi che devo fare ora?....se posso contraccambiare in qualcosa per l' aiuto che mi stai dando ...molto volentieri..
Grazie portapipe
-
Ti dirò, credo che tu abbia le idee un pò confuse.
Il database non è php bensì MySql.
PHP è come dire HTML in un certo modo, solo che una pagina PHP quando viene eseguita crea del codice html (con i contenuti dinamici) senza che l'utente se ne accorga.
E' questo il concetto moltissimo in generale di php. Un linguaggio lato server (infatti per vedere una pagina in php ti serve passare per un server a differenza di html).
Quindi creare una pagina php significa creare un file html però dinamico (anche qui ce ne sarebbero da dire ma grosso modo è così).
Metti il file form e il file php nella stessa cartella. cgi-bin, database.. tutte cose che non ti servono.Se invece vuoi salvare i dati che inviano dal form allora ti serve il database e una query (domanda) INSERT (inserimento) per inserire i dati nel database.
Fatti un giro per le guide, anche solo per capire come funziona, se no ragioni nel modo sbagliato e ci metti più tempo. Fidati.
-
grazie portapipe per i tuoi consigli utili!
Alla fine sono riuscito!
Il tuo txt in php ha funzionato
Ho capito poi, dopo vari tentativi,come farlo funzionare !
-
Mi piace quando da "semplici" spiegazioni si capiscano le cose.
Vuol dire imparare! Che credo sia l'obiettivo di ogni forum, ormai un pò perso.
Complimenti a te e, mi raccomando, studia
-
Solo una cosa mi sfugge...
come faccio a rendere obbligatori i campi?
...sempre facendo riferimento ai file precedentiper caso devo aggiungere qualche variabile nel file in php ?
-
Puoi usare javascript (consigliato) ma impariamo un linguaggio alla volta!
Puoi inserire una condizione nel file dell'invio mail per ogni valore.
if(empty(campodacontrollare)){ esegui il codice... }else{ altro codice...}
dove empty sta per vuoto e il campo da controllare sarà i valori che ricevi dal form.
Quindi, SE il campo txtRagioneSociale E' VUOTO, esegui il codice..., ALTRIMENTI altro codice...Semplice no?
Dovrai chiaramente crearne uno per ogni campo che vuoi sia obbligatorio.Useremo anche un redirect così:
header("location:form.php");
dove form.php è il link nel quale si verrà indirizzati.Per il messaggio di errore, metteremo un messaggio tramite GET, che è un metodo semplice per passare valori tra le pagine.
E' come il POST (che utilizziamo noi) ma si passa il valore tramite la URL in questo modo:
form.php?messaggio=Inserire tutti i campi
a differenza del POST che li passa in background, così che non possano essere viste dall'utente.Il punto di domanda significa che ci sono delle variabili dopo, messaggio è il nome della variabile (puoi mettere quello che vuoi) mentre dopo l'uguale c'è il valore, in questo caso una scritta di avviso.
Quindi sarà:
[PHP]
$ragionesociale=$_POST['txtRagioneSociale'];
//avendo la variabile già creata, usiamo quella per rapidità
if(empty($ragionesociale)){
header("location:form.php?messaggio=Inserire tutti i campi!");
}
//l'else non ci serve poiché SOLO se il campo che ci interessa sarà vuoto verrai rimandato alla pagina form, altrimenti continua al passo successivo[/PHP]Nella pagina del form puoi aggiungere che SE esiste una variabile messaggio nell'URL (quindi se entri direttamente non c'è ma se vieni rimandato dalla pagina di invio della mail si, ricordi?) allora scrivila a video:
[PHP]if($_GET['messaggio']){
echo $_GET['messaggio'];
}[/PHP]A seconda di dove lo metti uscirà il messaggio.
Volendo puoi creare un messaggio univoco per ogni controllo variabile nella pagina di invio mail, così da avere tanti messaggi quanti sono i campi che mancano, ma così va bene lo stesso e soprattutto sarebbe molto lungo (ma se c'è necessità si fa di tutto, fidati).
-
Grazie ancore portapipe i tuoi consigli sono per me come oro...:)
-
Magari!
Un pò di soldi non mi farebbero male in questo momento
Ciao!
-
ciao a tutti,
sono alle prime armi con php e ho bisogno di una mano.
Sto cercando di creare un sito di immobili.
La mia domanda è: da una pagina di dettaglio come faccio a richiamare il codice della casa del form in modo da avere il riferimento dell'immobile richiesto?
Grazie per ogni consiglio
-
Apri un nuovo thread. Questo è stato risolto!
-
non so come inviare le mie richieste, è la prima volta che mi iscrivo ad un forum:bho:
-
Se vai nella lista delle domande, per intenderci qui:
giorgiotave.it/forum/php-mysql/
in alto c'è Nuova Discussione. Clicca li, scrivi il titolo del thread (leggi bene le regole prima di postare) e poi formula la tua domanda, stando attento a dichiarare il tuo livello di preparazione nell'argomento (in questo caso php e mysql) ed esprimendo bene bene la domanda, così che ti si possa aiutare in modo costruttivo.
I forum sono una miniera di informazioni!
-
ok fatto grazie
-
Ciao portapipe scusami se rompo...ma potresti dare un occhiata a questa cosa....(prometto che è l' ultima:))....
questo è il form nel sito:
<form action="formmailmotori.php" method="post" name="frmModulo" id="frmModulo" onSubmit="return Convalida()">
<table width="450"border="0"cellpadding="0"cellspacing="0"bgcolor="white">
<tr>
<td>Nome e cognome*: </td>
<td><input name="txtRagioneSociale"type="text"id="txtRagioneSociale"size="34"></td>
</tr>
<tr>
<td>Comune*:</td>
<td><input name="txtComune"type="text"id="txtComune"size="34"></td>
</tr>
<tr>
<td>Provincia:</td>
<td><input name="txtProvincia"type="text"id="txtProvincia"size="34"></td>
</tr>
<tr>
<td>Email*:</td>
<td><input name="txtEmail"type="text"id="txtEmail"size="34"></td>
</tr>
<tr>
<td>Telefono*:</td>
<td><input name="txtTelefono"type="text"id="txtTelefono"size="34"></td>
</tr>
<tr>
<td><input type="radio" name="radio_1" value="valore_1"> Pacchetto Base </td>
</tr>
<tr>
<td><input type="radio" name="radio_1" value="valore_2"> Pacchetto Medio </td>
</tr>
<tr>
<td><input type="radio" name="radio_1" value="valore_3"> Pacchetto Avanzato </td>
</tr>
<tr>
<td valign="top">Informazioni:</td>
<td><textarea name="txtInformazioni"cols="28"rows="6"id="txtInformazioni"></textarea></td>
</tr>
<tr>
<td colspan="2">* Dati obbligatori </td>
</tr>
<tr align="center">
<td colspan="2"><input name="InviaModulo"type="submit"id="InviaModulo"value="Invia">
<input name="Reimposta"type="reset"id="Reimposta"value="Reimposta"></td>
</tr>
</table>
</form>mentre questo è il file in php:
<?php
$ragionesociale=$_POST['txtRagioneSociale'];
$indirizzo=$_POST['txtIndirizzo'];
$cap=$_POST['txtCAP'];
$comune=$_POST['txtComune'];
$provincia=$_POST['txtProvincia'];
$email=$_POST['txtEmail'];
$telefono=$_POST['txtTelefono'];
$pacchetto base=$_POST['radio_1'];
$pacchetto medio=$_POST['radio_1'];
$pacchetto avanzato=$_POST['radio_1'];
$informazioni=$_POST['txtInformazioni'];
$tutticampi='Ragione Sociale: '.$ragionesociale.' , ' Comune: '.$comune.' , 'Provincia: '.$provincia.' , 'Email: '.$email.' , 'Telefono: '.$tel.' , 'Pacchetto Base: '.$radio_1.' , 'Pacchetto Medio: '.$radio_1.' , 'Pacchetto Avanzato: '.$radio_1.' , 'Informazioni: '.$informazioni;
mail("tuoindirizzo@email","Oggetto email", $tutticampi);
echo "Il messaggio è stato inviato correttamente! Riceverai una risposta al più presto...grazie! Per ritornare al sito clicca la freccia indietro nel tuo browser.";
?>Il problema è che il file in php molto probabilmente è sbagliato ,( secondo me è il "radio" che non va bene ) , quando compilo il form e clicco su "invia" mi esce questo errore:
Parse error: syntax error, unexpected T_STRING in /home/mhd-01/indirizzowebdelmiosito/htdocs/formmailmotori.php on line 9
Mi potresti scrivere il file in php giusto perchè possa funzionare?
Grazie in anticipo portapipe....
-
Innanzi tutto non puoi usare gli spazi per dichiarare variabili, per questo si usano gli under-score _ .
Poi la variabile radio_1 sarà una sola. Creare 3 variabili con lo stesso valore non ti serve a nulla, in quanto l'utente SCEGLIE UNA OPZIONE tra tre, quindi il valore sarà solo uno.
Piuttosto puoi fare un controllo sul valore che arriva e scrivi di conseguenza quello che ti serve:
Attento comunque che hai chiamato pacchetto base (quello con lo spazio) medio e avanzato il radio_1 ma nella variabile tutticampi richiami la variabile radio_1, non pacchetto base, medio e avanzato!!!Fai attenzione a queste cose (lo spazio potevi non saperlo ma alle variabili devi fare attenzione!!).
Una variabile è un puntatore per un valore che vuoi:
$nome="Paolo";
ogni volta che voglio richiamare il mio nome preferito nella pagina richiamerò $paolo .
Così fai con i pacchetti.
[PHP]
<?php
$ragionesociale=$_POST['txtRagioneSociale'];
$indirizzo=$_POST['txtIndirizzo'];
$cap=$_POST['txtCAP'];
$comune=$_POST['txtComune'];
$provincia=$_POST['txtProvincia'];
$email=$_POST['txtEmail'];
$telefono=$_POST['txtTelefono'];
//In base al valore che ha radio_1 scrivi il pacchetto corrispondente
$radio=$_POST['radio_1'];
if($radio="valore_1"){
$pacchetto="Pacchetto base scelto";
}elseif($radio="valore_2"){
$pacchetto="Pacchetto medio scelto";
}elseif($radio="valore_3"){
$pacchetto="Pacchetto avanzato scelto";
}
//poi inseriremo la variabile pacchetto che scriverà il tipo di pacchetto scelto
$informazioni=$_POST['txtInformazioni'];
$tutticampi='Ragione Sociale: '.$ragionesociale.' , Comune: '.$comune.' , Provincia: '.$provincia.' , Email: '.$email.' , Telefono: '.$tel.' , '.$pacchetto.' , Informazioni: '.$informazioni;
mail("tuoindirizzo@email","Oggetto email", $tutticampi);
echo "Il messaggio è stato inviato correttamente! Riceverai una risposta al più presto...grazie! Per ritornare al sito clicca la freccia indietro nel tuo browser.";
//per la freccia indietro puoi mettere un bottone con il parametro onclick javascript history back
?> [/PHP]Ciao
edit all'ultimo momento! E' scritto veramente male amico mio. Gli apici! Erano quasi tutti invertiti!
-
grazie portapipe....ecco perchè il mio non funzionava...
era scandaloso:oIn effetti inserendo un bottone per tornare indietro sarebbe meglio...ma come faccio?
-
<input type="button" value="Indietro" onClick="javascript:history.back()" name="button">
Cerca in google se hai bisogno. Se non trovi chiedi qui