creare form mail PHP

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)
 
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>
 
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
 
ciao
scusa un mio errore
su
$ch1 = $_POST['farinabase1'];
$q_ch1 = $_POST['Albumina'];
$ch2 = $_POST['farinabase2'];
$q_ch2 = $_POST['canapa_macinata'];
 
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
 
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?
 
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.
 
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?
 
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
 
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
 
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
 
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:
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
 
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