creare form mail PHP

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
prima di passare a php volevo segnalarti un paio di cose
1. non è corretto utilizzare piè check con lo stesso nome, se vuoi che lo script funzioni corretamente devi dare un nome diverso ad ogni check, se al contrario vuoi che l'utente possa selezionare solo un prodotto devi utilizzare i radiobutton
2. dato che in php non sono ammessi nomi di variabile del tipo:
$pinco pallo ma deve essere scritto, se vuoi dividere, $pinco_pallo, non è bene che tu utilizzi nomi con spazi all'interno come
<input name="Canapa macinata" type="text" size="10" maxlength="3" /></td>
perche quando poi devi utilizzarlo $_POST['Canapa macinata'] e possibile avere degli errori meglio canapa_macinata
domani, se non ho problemi, ti mando le indicazioni per il php.

p.s.
una sottigliezza Kg si scrive kg (isoUNI)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao,
come promesso "solennemente" ti invio un esempio di come potresti operare, credo che leggendo i vari commenti il concetto sia chiaro, comunque siamo qui

PHP:
<?php
/* ******************************************************************
leggo il valore del tasto di submit e se premuto opero
es. dati  inseriti in un db o inviati via email
è un esmpio "didattico" il tutto può essere molto semplificato e contiene
delle righe che possono essere accumunate
passaggi ridondanti servono a specificare meglio cosa si fa
******************************************************************** */
if(isset($_POST['Submit']) && $_POST['Submit']=="Invia"){
/* *************leggo i dati inseriti nel form************* */
	$ch1=$_POST['farinadibase1'];//valore del check 1
	$q_ch1=$_POST['farinadibase1'];//quantità correlata a check 1
	$ch2=$_POST['farinadibase2'];//valore del check 2
	$q_ch2=$_POST['Canapa_macinata'];//quantità correlata a check 2
/*proseguo con tutti gli altri prodotti*/
/* ********faccio alcune verifiche soprattutto sui dati inseriti manualmente **************** */
	$errore=0;//metto a zero un flag per verificare se non ci sono stati errori di inserimento
//tolgo eventuali spazi inutili
	$q_ch1=trim($q_ch1);
	$q_ch2=trim($q_ch2);
//.................
/* ******** verifico che l'utente abbia inserito un numero nella quantità ********* */
	if(!eregi("[09]{0,3}",$q_ch1)){$errore=1;}//l'utente ha inserito un carattere diverso da un numero
	if(!eregi("[09]{0,3}",$q_ch2)){$errore=1;}
//.................
/* ************verifico che l'utente non abbia inserito solo uno zero, mi servirà in seguito*** */
	if($q_ch1=="0"){$q_ch1="";}
	if($q_ch2=="0"){$q_ch2="";}
//.................
/* **********verifico che i vari campi siano stati correttamente compilati ************ */
	if($ch1!="" && $q_ch1==""){//l'utente ha selezionato il check ma non indicata quantità, o indicato 0
		$errore=1;
	}elseif($ch1=="" && $q_ch1!=""){//contrario di sopra
		$errore=1;
	}
	if($ch2!="" && $q_ch2==""){//l'utente ha selezionato il check ma non indicata quantità, o indicato 0
		$errore=1;
	}elseif($ch2=="" && $q_ch2!=""){//contrario di sopra
		$errore=1;
	}
//.................
/* ****è evidente che simili controlli devono essere fatti anche su altri eventuali
campi esistenti nel form, es. nome utente, email utente.....
alla fine dei controlli se non sono stati fatti errori il valore di
$errore è rimasto zero
*************** */
	if($errore=0){//NON sono stati commessi errori
		/*faccio quello che devo fare es. inizio a prepara il il testo
		che mi verrà inviato per email
		*/
		$oggetto="ordine";
		$testo="vi prego di inviarmi il prodotto sottoelencato:<br>";
		$testo.="$ch1:  $q_ch1 kg <br>";
		//ecc......
		//funzione mail()... e ritorno al form
	}else{//il valore di $errore è 1: ci sono degli errori
		/*non inserisco i dati
	 	visualizzo messaggio di errore
	 	e torno al form, o dove altro mi pare*/
	}
}//fine if submit
?>
<!-- 
utilizzo $server perchè faccio una pagigina unica inserimento ed invio dati
quindi se cambio nome alla pagina non ho bisogni di modificare l'action del form
-->
<form action="<?php htmlspecialchars($_SERVER['PHP_SELF']);?>" method="POST" name="form">
<fieldset >
<legend><span class="Stile15">Farine di base</span></legend>
<table border="0"; cellspacing="0" cellpadding="0" width="640" align="center" style="color:#000000; font-size:12px;">
<tr>
<td>
<table border="3"; cellspacing="1" cellpadding="1" width="320" >
<tr> 
<td >Prodotti</td> 
<td><span class="Stile5">Qtà (Kg)</span></td>
</tr>
<tr> 
<td><input type="checkbox" name="farinadibase1" value="Albumina" />Albumina</td> 
<td align="center"><input type="text" name="Albumina" size="10" maxlength="3" /></td>
</tr>

<td><input type="checkbox" name="farinadibase2" value="Canapa macinata" />Canapa macinata</td> 
<td align="center"><input name="Canapa_macinata" type="text" size="10" maxlength="3" /></td>
</tr>

<tr>

<td><input type="submit" name="Submit" value="Invia">
  aa</td> 
<td align="center">bb</td>
</tr>
</table>
</table>
</form>
 

alessiof86

Utente Attivo
6 Lug 2009
134
0
0
in questa parte di codice
$ch1=$_POST['farinadibase1'];//valore del check 1
$q_ch1=$_POST['farinadibase1'];//quantità correlata a check 1
$ch2=$_POST['farinadibase2'];//valore del check 2
$q_ch2=$_POST['Canapa_macinata'];//quantità correlata a check 2

Al posto di canapa_macinata devo scriverci farinadibase2? Ti sei sbagliato per caso?. Perche nel form html è
<tr>
td><input type="checkbox" name="farinadibase1" value="Albumina" />Albumina</td>
<td align="center"><input type="text" name="Albumina" size="10" maxlength="3" /></td>
</tr>

<td><input type="checkbox" name="farinadibase2" value="Canapa macinata" />Canapa macinata</td>
<td align="center"><input name="Canapa_macinata" type="text" size="10" maxlength="3" /></td>
</tr>

O a quello sopra devo metterci per recuperare la quantita relativa al prodotto ci devo mettere Albumina ? Non riesco a capire Grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
scusa un mio errore
su
$ch1 = $_POST['farinabase1'];
$q_ch1 = $_POST['Albumina'];
$ch2 = $_POST['farinabase2'];
$q_ch2 = $_POST['canapa_macinata'];
 

alessiof86

Utente Attivo
6 Lug 2009
134
0
0
Ora dovrei far in modo che tutt ciò venga stampato su un file txt che mi verra mandato in seguito via email . Uso il comando $file=fopen(”messaggi_salvati.txt”,”a+”);
fwrite($file, “-inizio-
$messaggio.
Ma devo ripassare ogni variabile? Come mi devo muovere?
Grazie mille per gli aiuti che mi stai dando
 

alessiof86

Utente Attivo
6 Lug 2009
134
0
0
il mio dubbio e che magari le check box che uso mi compaiono sfalsate ossia con una formattazione differente a tal punto da non farmi leggere niente. cosa mi consigli?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
puoi, come avresti fatto per il file txt formattare il testo con vari <br> oppure impostando bene l'header della funzione mail() in formato html, puoi costruirti una tabella e ti arriva il testo ben formattato, ti faccio un esempio sintetico sul messaggio da inviare:

$messaggio="<table>
<tr><td>farina</td><td>kg</td></tr>
<tr><td>$ch1</td><td>$q_ch1</td></tr>
.............
</table>";

ti puoi costruire una tabella in modo che l'ordine ti arrivi ben formattato.
 

alessiof86

Utente Attivo
6 Lug 2009
134
0
0
grazie mille un altrcosa il codice php che mi hai postato nella parte
/* ******** verifico che l'utente abbia inserito un numero nella quantità ********* */
if(!eregi("[09]{0,3}",$q_ch1)){$errore=1;}//l'utente ha inserito un carattere diverso da un numero
if(!eregi("[09]{0,3}",$q_ch2)){$errore=1;}
//.................
tra lo 0 e il 9 ci deve essere il trattino giusto?
Altra cosa quindi organizzo i dati in tabella come da tuo esempio e cio lo devo scrivere nel file php dopo il codice che hai postato te?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao,
qusto dovrebbe servirti per impostare l'invio dell'email

PHP:
<?php
//tutti i $_POST

/*
dopo aver raccolto i dati con post inizi ad organizzarli, immagino che nel form tu chieda anche il nome/email all'inviante
prepari le variabili che ti servono e le formatti*/
$email_a="[email protected]";//indirizzo a cui inviare
$oggetto="ordine farine"; //oggetto dell'email
$inviato_da="nome $nome $cognome<br>"; //nome e dell'inviante
$email_da="email: $email <br>";//ec...tel indirizzo e altro.......
$inviato_il="inviato il : "data("g m y")."<br><br>";
// e prepari la tabella per l'ordine dei prodotti
/*intestazione, nora nel tab table, tr, td puoi mettere i classici
parametri che si mettono per la costruzione delle tabelle*/
$prodotto="<table><tr><td>prodotto</td><td>kg</td></tr>";
//metti degli if in modo da non creare righe che non servono
//e inizi a concatenare le varie righe
if($ch1!=""){
$prodotto.="<tr><td>$ch1</td><td>$q_ch1</td></tr>";
}
if($ch2!=""){
$prodotto.="<tr><td>$ch2</td><td>$q_ch2</td></tr>";
}
//continui così per tutti i prodotti sino a chiudere la tabella
$prodotto.="</table>";
//a questo punto prepari tutto il messaggio
$messaggio=$inviato_da.$email_da.$inviato_il;
//se vuoi metti una riga di separazione
$messaggio.="-------------------------------<br><br><br>";
//e attacchi il prodotto
$messaggio.=$prodotto;
//a questo punto invii con la function mail()
if(mail($email_a,$oggetto,$messaggio,$header)){
	echo "email inviata correttamente";
}else{
	echo "errore, riprova più tardi";
}
/**********per la variabile $header ti conviene guardare sul manuale php function mail*********/
?>

se hai dubbi posta
 

SolidSnake4

Utente Attivo
23 Ott 2007
505
0
0
ma il codice html deve essere per forza solo utilizzando le tabelle? io ho fatto una pagina web con div ma quando la invio via mail non mi riconosce il codice html
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
puoi utilizzare tutti i tag html <div><b<br><p>.... ecc, non per niente puoi inviare una pagina completa con colori, bordi, immagini...
devi impostare l'eader per html, poi se il tuo ottlook (o simile) è impostato su testo non legge comunque l'html.
non so sulla funct mail(), ma nella classe phpmailer c'e il teso alternanito che, se non leggi html, scrive tipo txt
 

SolidSnake4

Utente Attivo
23 Ott 2007
505
0
0
ok grazie mille borgo come sempre posso contare sul tuo aiuto :fonzie: come faccio ad impostare i parametri di questa classe ? mi da errore sempre XD
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
io imposto in questa maniera

PHP:
require "phpmailler/class.phpmailer.php";
		$Emailmessaggio = new PHPmailer();
		
		$Emailmessaggio->SetLanguage('it','language/'); 
		$Emailmessaggio->IsHTML(true); // email in formato HTML

		$Emailmessaggio->FromName= $nome;
		$Emailmessaggio->From=$email;
		$Emailmessaggio->AddAddress($destinatario);
		$Emailmessaggio->Subject=$soggetto;
		$Emailmessaggio->Body=$testo;
		
		if(!$Emailmessaggio->Send()){ 
                   //errorre
                }
se apri la classe poi vedi come sono altre eventuali variabili.
se hai pazienza (e se ti serve) poi cerco quello che ho fatto per il testo alternativo e per eventuale invio news-letter
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
stai attento ai percorsi, io ho dentro la cartella
scrivi_a[cartella]
pag_form.php
phpmailler[cartella]
class.phpmailer.php
e_tutte_le_altre_cartelle_di_phpMailer


comunque riverifico di non aver dimenticato qualcosa nel copia/incolla del mio post, poi ti so dire
 
Discussioni simili
Autore Titolo Forum Risposte Data
P Creare form e inviare via mail HTML e CSS 2
S Creare un form mail PHP 9
Cosina Creare bottone delete in form upload PHP 5
Cosina Creare bottone delete in form upload PHP 1
L creare oggetti da una classe tramite un form Javascript 0
B [PHP] Creare PDF dopo inserimento dati form PHP 4
D [PHP] Consigli su come creare form PHP 1
T [PHP] Creare Honeypot per form contatti PHP 10
sandropochi [PHP] Form per creare filtro di ricerca su DB PHP 8
S Concatenare due campi di un form per creare un indirizzo web valido Javascript 7
A Creare da form un PDF da inviare come allegato. PHP 1
E creare un form Presentati al Forum 3
M creare form in un popup HTML e CSS 1
L creare pagine php in modo automatico attraverso form PHP 1
J Creare form registriazione PHP 2
C Creare una form con pulsanti di scelta macro Visual Basic 1
Jam1 Errore nel creare miniature da immagini caricate su un mio form PHP 0
D Come creare validazione form istantanea?? Javascript 1
M Creare un form HTML e CSS 3
M come creare un form di contatto. PHP 19
ypsilon86 Da un FORM creare una Tabella dinamica PHP 7
M liberia fpdf creare form che al premere al bottone di sumit mi crei il pdf PHP 0
P Creare un form in un sito wordpress WordPress 12
B Creare form contatti con php PHP 4
J Creare file html da un form in area riservata PHP 9
N creare form a fasi PHP 3
M come creare un form con dreamweaver da zero PHP 29
G Aiuto per creare un form di invio file Classic ASP 3
H Creare una pagina che si collega a keepvid. come impostare il form? HTML e CSS 3
P creare un form di invio dati PHP 2
I Creare un form di registrazione PHP 7
V AIUTO: creare file php x form PHP 2
E Creare un testo trasparente dietro un div HTML e CSS 5
M Creare traccia di download file sul server HTML e CSS 2
A Cerco programmatore/sviluppatore per creare forum Offerte e Richieste di Lavoro e/o Collaborazione 2
L Creare ancore interne alla pagina PHP 1
I Creare un banner temporaneo JavaScript Javascript 0
C Creare Tabella Dati Meteo prelevandoli da dei Tags in un altro foglio PHP 27
simgia Cordova errore quando cerco di emulare o creare la app Sviluppo app per Android 2
U PHP creare un file excel dopo ricerca nel DB PHP 0
A Creare un cronometro PHP 5
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
F Creare elementi html con javascript Javascript 3
Shyson Modificare codice e creare link PHP 0
M Creare un campo input select quantità di un numero intero prelevato dal db PHP 3
L Creare una forma geometrica Photoshop 1
M [Cerco] aiutanti per creare sito Offerte e Richieste di Lavoro e/o Collaborazione 8
S Libreria PHP per creare file dwg o dxf PHP 0
R Come creare sistema Add to homescreen PHP 3
L Creare un countdown con giorno specifico della settimana PHP 3

Discussioni simili