Invio dati su e-mail da fom php

  • Creatore Discussione Creatore Discussione nofrum
  • Data di inizio Data di inizio

nofrum

Nuovo Utente
13 Ago 2012
14
0
0
Ciao a tutti,
vi anticipo che sono una sega con il php, ho cominciato a studiarlo da poco e quello che fino ad ora mi ha salvato sono le reminiscenze del tecnico informatico.
Un amico mi ha dato una mano a scrivere questo codice che ho inserito in una pagina joomla tramite un modulo che legge e interpreta del codice php, ora il problema è che non so come inviare il tutto tramite il tasto invia su una mail... mi potete dare una mano ?
grazie
PHP:
<?php
$db = mysql_connect("my_ip","user","pass");
mysql_select_db("mio_database");
$r = mysql_query("SELECT id,last_name FROM some_table WHERE team_id=1 and position_id=3");
$r2 = mysql_query("SELECT id,last_name FROM some_table WHERE team_id=1 and position_id=4");
$r3 = mysql_query("SELECT id,last_name FROM some_table WHERE team_id=1 and position_id=5");
$r4 = mysql_query("SELECT id,last_name FROM some_table WHERE team_id=1 and position_id=6");

$drop = "<select>";
while($row=mysql_fetch_assoc($r)) {
	$drop .= "<option value='".$row['id']."'>".$row['last_name']."</option>";
}
$drop .= "</select>";

$drop2 = "<select>";
while($row=mysql_fetch_assoc($r2)) {
	$drop2 .= "<option value='".$row['id']."'>".$row['last_name']."</option>";
}
$drop2 .= "</select>";

$drop3 = "<select>";
while($row=mysql_fetch_assoc($r3)) {
	$drop3 .= "<option value='".$row['id']."'>".$row['last_name']."</option>";
}
$drop3 .= "</select>";

$drop4 = "<select>";
while($row=mysql_fetch_assoc($r4)) {
	$drop4 .= "<option value='".$row['id']."'>".$row['last_name']."</option>";
}
$drop4 .= "</select>";

echo "<div style='font-family:monospace;text-align: center;margin-bottom:30px;font-size:30px;'>Formazione titolare.</div>";
echo "<ciao style='margin-left:40%;font-family:monospace;'>Portiere</span>:" . $drop. "<br>";
echo "<span style='margin-left:5%;font-family:monospace;'> difensore</span> ". $drop2;
echo "Difensore: " . $drop2. $portiere;
echo "Difensore: " . $drop2;
echo "Difensore: " . $drop2 ."<br>";
echo "<span style='margin-left:10%;font-family:monospace;''>Centrocampista</span> ". $drop3;
echo "Centrocampista" . $drop3;
echo "Centrocampista: " . $drop3. "<br>";
echo "<span style='margin-left:13%;font-family:monospace;''>Attaccante </span>". $drop4;
echo "Attaccante: " . $drop4;
echo "Attaccante: " . $drop4. "<br>";
echo "<span style='border: 1px solid black;font-family:monospace;''>CIao sono un div.</span>";
echo "<div style='font-family:monospace;text-align: center;margin-bottom:30px;font-size:30px;'>Riserve.</div>";

echo "<span>Portiere 1</span>" . $drop;
echo "Portiere2" . $drop. "<br>";
echo "Difensore1: " . $drop2;
echo "Difensore2: " . $drop2. "<br>"; 
echo "Centrocampista 1" . $drop3;
echo "Centrocampista 2" . $drop3. "<br>"; 
echo "Attaccante 1 : " . $drop4;
echo "Attaccante 2: " . $drop4. "<br>";
echo "Centrocampista capitano" . $drop3. "<br>"; 
?>
 
Ultima modifica di un moderatore:
ciao
non sbrodolare con spazi inutili il codice e la prossima volta racchiudilo tra i suoi tag (seconda riga di formattazione del post ultime tre iconcine, nell'ordine CODE, HTMç, PHP).
poi spiega un po' meglio cosa vorresti fare
 
Scusami se non ho formattato bene, la prossima volta sarò più attento .
Praticamente con questo codice sono riuscito a contattare il database, a fare le query di cui avevo bisogno e a visualizzare dei campi di scelta con i dropdown.... Tutto bello ma non so come inviare questi dati a un indirizzo mail.. a partire dall'implementazione del tasto invia.
Grazie
 
ciao
un paio di domende:
devi inviare i dati che vengono selezionati nelle select?
a ch devi inviarli a te o a terzi?
chi li invia li invii tu o te li inviani dal tuo sito?
 
ciao
un paio di domende:
devi inviare i dati che vengono selezionati nelle select?
a ch devi inviarli a te o a terzi?
chi li invia li invii tu o te li inviani dal tuo sito?


Ciao,

I dati devo inviarli a un indirizzo mail e vengono inviati dagli utenti che compilano il form.
 
Allora, ho capito una cosa importante, semplicemente il tag <form> andava messo prima del tag <?php ( direte che ho scoperto l'acqua calda ma sono proprio all'inizio), ora sono riuscito ad aggiungere il tasto invia, però quello che ancora non riesco a fare è inviare i dati a una mail con tutte le scelte effettuate nel form!
dai che ci siamo quasi! grazie !
 
ciao
importante: alle select devi dare un nome (es) <select name="prima"> altrimenti come fa lo script a distinguere dove mettere poi i vari dati
se hai fatto il form (che questo punti ad un'altra pagina o alla stessa) devi verificare se il pulsante di submit è stato premuto e se si raccogliere prima i dati, controllarli, predisporli per l'invio e inviarli.
ti faccio uno schema semplificato
PHP:
<?php
if(isset($_POST['Submit'])){//verifca se il submit è stato premuto
	//raccolgo i dati provenienti dalle varie select omettendo gli eventuali controlli
	//poi dovresti mettere nel form anche i campi per avere nome e email del mittente altrimenti come fai a sapere chi ti invia
	$testo_da_inviare="<ciao style='margin-left:40%;font-family:monospace;'>Portiere</span>:" . $_POST['prima']. "<br>";
	$testo_da_inviare.="<span style='margin-left:5%;font-family:monospace;'> difensore</span> ". $_POST['seconda'];
	//eccetera.....
	$oggetto="invio dati dal sito pinco.it";
	$destinatario="[email protected]";
	$mittente="email da: ".$_POST['email_mittente'];
	if(mail($destinatario,$oggetto,$testo_da_inviare,$mittente)){
		echo "email inviata con successo";
	}else{
		echo "c'è stato un errore di trasmissione, riprova più tardi";
	}
}
?>
guarda che è sole uno schema, evidentemente mancano tutti i controlli per evitare che ti inviino porcherie o spam
 
Grazie mille Borgo italia, ora è più chiaro però ancora non capisco una cosa, quindi ti faccio una versione semplificata supponendo con una sola scelta

Codice PHP:
<?php
$db = mysql_connect("my_ip","user","pass");
mysql_select_db("mio_database");
$r = mysql_query("SELECT id,last_name FROM some_table WHERE team_id=1 and position_id=3");
$r2 = mysql_query("SELECT id,last_name FROM some_table WHERE team_id=1 and position_id=4");
$r3 = mysql_query("SELECT id,last_name FROM some_table WHERE team_id=1 and position_id=5");
$r4 = mysql_query("SELECT id,last_name FROM some_table WHERE team_id=1 and position_id=6");

$drop = "<select name="portiere">";
while($row=mysql_fetch_assoc($r)) {
$drop .= "<option value='".$row['id']."'>".$row['last_name']."</option>";
}
$drop .= "</select>";

E' giusta la sintassi per dare un nome alla select ?
poi metto solo un campo

echo "Portiere</span>:" . $drop. "<br>";

ora invece nel file di invio dati cosa devo richiamare?

<?php
if(isset($_POST['Submit'])){//verifca se il submit è stato premuto
$testo_da_inviare="<ciao style='margin-left:40%;font-family:monospace;'>Portiere</span>:" . $_POST['portiere']. "<br>";

//eccetera.....
$oggetto="invio dati dal sito pinco.it";
$destinatario="[email protected]";
$mittente="email da: ".$_POST['email_mittente'];
if(mail($destinatario,$oggetto,$testo_da_inviare,$mittente)){
echo "email inviata con successo";
}else{
echo "c'è stato un errore di trasmissione, riprova più tardi";
}
}
?>


Dove sbaglio ??
 
ciao
se ho capito quello che vuoi fare, quello che stai facendo non mi sembra giusto (non capisco perche tu metta le option dentro una variabile)
ecco, sempre schematicamente, le due parti (form e invio)
ho scritto il codice del form entrando e uscendo da php per evidenziare meglio

parte form html
PHP:
<?php
$db = mysql_connect("my_ip","user","pass");
mysql_select_db("mio_database");
$r = mysql_query("SELECT id,last_name FROM some_table WHERE team_id=1 and position_id=3");
//ecc... 
?>
<form action="questa_o_altra.php" method="post">
	<select name="portiere">
<?php
	while($row=mysql_fetch_assoc($r)) {
		echo "<option value='".$row['id']."'>".$row['last_name']."</option>";
	} 
?>
	</select><br />
	<!-- tutta l'altra serie di select ciascuna col suo nome -->
  <input type="submit" name="invia_i_dati" value="invia">
</form>

parte invio
PHP:
<?php
if(isset($_POST['invia_i_dati'])){//è stato premuto il pulsante di submit chiamato "invia_i_dati"
	$portiere=$_POST['portiere'];//leggo il valore inviato dalla select "portiere"
	//e leggi tutti gli altri valori
	$testo_da_inviare="Portiere: $portiere/n";
	//ecc concatenando (saprai il segno .= serve per concatenare le stringhe)
	$oggetto="invio dati dal sito pinco.it";
	$destinatario="[email protected]";
	$mittente="email da: ".$_POST['email_mittente']; //dovrai fare, nel form, un campo input text in cui il mittente inserisce il suo indirizzo
	if(mail($destinatario,$oggetto,$testo_da_inviare,$ mittente)){
		echo "email inviata con successo";
	}else{
		echo "c'è stato un errore di trasmissione, riprova più tardi";
	}
}
?>

ti faccio notare un paio di cose
-se fai tutto in una pagina (preferibile), sopra (o sotto) il form e sotto (o sopra) la parte di invio, nel tag form metti
...action="#"...
se fai due pagine (es pag_form.php e pag_invio.php) l'action diventa
...action="pag_invio.php"...
-ti ho tolto la parte html nel messaggio (nota che ho sostituito il <br> con /n) questo perche per inviare email in formato html con la
funzione mail() è un po' un casino (e non sempre funzia)
- <select name="portiere"> sintassi ok
- ultimo, guarda che la funzione mail() non funzia in locale

poi ricordati che è solo uno schema (anche se funzionante) ma se lo usi così corri il rischio di farti inviare qualche bel virus o troyan o riempirti di spam
quindi i dati ceh vengono inseriti nel testo prina devono essere controllati e se c'è qualcosa che non quadra l'email NON deve essere inviata
 

Discussioni simili