- Home
- Categorie
- Coding e Sistemistica
- PHP
- Form contatti in Php
-
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
-
portapipe...
ricordi lo script in php dell' ultimo form con l' elemento radio....
(il form in html e il file php sono nelle nostre ultime discussioni)
precisamente quello che mi hai fatto tu:<?php
$ragionesociale=$_POST['txtRagioneSociale'];
$indirizzo=$_POST['txtIndirizzo'];
$cap=$_POST['txtCAP'];
$comune=$_POST['txtComune'];
$provincia=$_POST['txtProvincia'];
$email=$_POST['txtEmail'];
$tel=$_POST['txtTel'];
//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("tuoindirizzodiposta","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
?>Facendo delle prove ho visto che spuntando nel sito i radio pacchetto medio o pacchetto avanzato nella mail mi esce sempre pacchetto base ...come mai?
Grazie portapipe:)
-
Dannate distrazioni!
Adesso sono pieno di lavoro quindi scrivo volentieri nei forum ma faccio degli stupidi errori!p.s. Metti il codice tra tag [ PHP ] se no non viene formattato ed è più difficile aiutarti. C'è il tasto apposta.
Basta che selezioni il testo in php e clicchi sul bottone in alto alla sinistra di youtube.[PHP]<?php
$ragionesociale=$_POST['txtRagioneSociale'];
$indirizzo=$_POST['txtIndirizzo'];
$cap=$_POST['txtCAP'];
$comune=$_POST['txtComune'];
$provincia=$_POST['txtProvincia'];
$email=$_POST['txtEmail'];
$tel=$_POST['txtTel'];
//In base al valore che ha radio_1 scrivi il pacchetto corrispondente
$radio=$_POST['radio_1'];
//qui c'era $radio=".." ma così si riscrive la variabile, non si usa come condizione! Per fare ciò bisogna mettere due uguali
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("tuoindirizzodiposta","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 a tutti,
sei stato molto chiaro Portapipe. Mi sai indicare che differenza c'è tra recuperare le variabili tra $_POST e $_REQUEST?
Ho seguito i tuoi consigli, inizialmente su xoom andava, ora non mi arriva più ne con $_POST ne $_REQUEST. Se lo stesso formmail lo carico su altervista funziona cia con $_POST che con $_REQUEST.Grazie
-
la risposta è semplice:
POST fa parte delle REQUEST, così come GET e i COOKIE stessi.
Quindi con REQUEST richiami indistintamente la variabile che ha quel nome.
Quindi se salvi un nome in un POST lo puoi recuperare con POST e REQUEST, così come l'id di un prodotto nella URL lo puoi recuperare con GET e REQUEST.
Se però hai un POST con una variabile di nome "frase" e un COOKIE di nome "frase" REQUEST da problemi (non ricordo se ti prende il primo che trova, tutti e due o da errore) però si cerca di specificare sempre il metodo di recupero.
REQUEST è sconsigliato, soprattutto se lo impari come metodo standard.
Usa per ogni cosa il suo corrispettivo e non avrai mai confusione!Per il problema di xoom non saprei.
Magari hai sbagliato i parametri del form, oppure hai scritto male i nomi delle variabili POST... controlla sempre ogni parola, ti basta una virgola per vedere un sito ultraipermegacomplesso, costosissimo e totalmente funzionante convertirsi ad una semplice pagina bianca.
All'inizio ti pigliano dei colpi assurdi ma prendendo padronanza sempre più con il linguaggio capisci subito dove può essere l'errore e come risolverlo (non è sempre così ma almeno sei consapevole che c'è una virgola di troppo da scovare).
-
Molto chairo. Ti posto il mio file php, riesci a darmi qualche consiglio...
<?
$nome=$_POST[nome];
$testo=$_POST[testo];
$email=$_POST[mail];
$dest="xxxx";
mail($dest,$nome,$testo,$email);
print ("E-Mail inviata con successo.")
?>Alcuni mi dicono che non va bene, ma allora perchè su altervista funziona? Cosa c'è di sbagliato?
Grazie