mail e php

sto' provando ad inviare il risultato di una query via mail

<?php
include("config.inc.php");
include("connect.inc.php");

$email=$_POST['email'];
$id = $_GET['id'];
$query   =   "SELECT  titolo,   regione, tipopiatto, persone,   ingredienti,  preparazione, note, difficolta   FROM   ricette WHERE   id=$id";
$result   =   mysql_query($query,   $db);
while($row = mysql_fetch_array($result))
{

   $titolo = $row['titolo'];
   $regione = $row['regione'];
   $tipopiatto = $row['tipopiatto'];
   $persone = $row['persone'];
   $ingredienti = $row['ingredienti'];
   $preparazione = $row['preparazione'];
   $note = $row['note'];
   $difficolta = $row['difficolta'];
}
/* destinatari */
$destinatari  = $email;

/* oggetto */
$oggetto = "La ricetta che hai richiesto";

/* messaggio */
$messaggio = '
<html>
<head>
 <title><?echo $row[titolo] ?></title>
</head>
<body>
<p><?echo $row[titolo] ?></p>
<table>
 <tr>
  <td><?echo $row[regione]?></td><td><?echo $row[tipopiatto]?></td><td><?echo $row[persone]?></td><td><?echo $row[ingredienti]?></td><td><?echo $row[preparazione]?></td><td><?echo $row[note]?></td><td><?echo $row[difficolta]?></td> </tr>
 </table>
</body>
</html>
';

/* Per inviare email in formato HTML, si deve impostare l'intestazione Content-type. */
$intestazioni  = "MIME-Version: 1.0\r\n";
$intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";

/* intestazioni addizionali */
$intestazioni .= "To: $email , \r\n";
$intestazioni .= "From: Alessandro \r\n";

/* ed infine l'invio */
mail($destinatari, $oggetto, $messaggio, $intestazioni);
echo "<center>Messaggio inviato<br><br><a href=\"index.php\">Vai al form</a></center>";
mysql_close($db);
?>

Ho provato cosi, la mail arriva ma è vuota :'(

Allora ho eliminato il while ma il risultato è lo stesso :-\

<?php
include("config.inc.php");
include("connect.inc.php");

$email=$_POST['email'];
$id = $_GET['id'];
$query   =   "SELECT  titolo,   regione, tipopiatto, persone,   ingredienti,  preparazione, note, difficolta   FROM   ricette WHERE   id=$id";
$result   =   mysql_query($query,   $db);
$row   =   mysql_fetch_array($result);
/* destinatari */
$destinatari  = $email;

/* oggetto */
$oggetto = "La ricetta che hai richiesto";

/* messaggio */
$messaggio = '
<html>
<head>
 <title><?echo $row[titolo] ?></title>
</head>
<body>
<p><?echo $row[titolo] ?></p>
<table>
 <tr>
  <td><?echo $row[regione]?></td><td><?echo $row[tipopiatto]?></td><td><?echo $row[persone]?></td><td><?echo $row[ingredienti]?></td><td><?echo $row[preparazione]?></td><td><?echo $row[note]?></td><td><?echo $row[difficolta]?></td>
 </tr>
 </table>
</body>
</html>
';

/* Per inviare email in formato HTML, si deve impostare l'intestazione Content-type. */
$intestazioni  = "MIME-Version: 1.0\r\n";
$intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";

/* intestazioni addizionali */
$intestazioni .= "To: $email , \r\n";
$intestazioni .= "From: Alessandro \r\n";

/* ed infine l'invio */
mail($destinatari, $oggetto, $messaggio, $intestazioni);
echo "<center>Messaggio inviato<br><br><a href=\"index.php\">Vai al form</a></center>";
mysql_close($db);
?>

Cosa sbaglio ::)

inviato 9 anni fa
blackeyes
X 0 X

ho modificato il codice del send.php cosi, ma non cambia nulla ??? ???

<?php
include("config.inc.php");
include("connect.inc.php");

$email=$_POST['email'];
$id = $_GET['id'];
$query   =   "SELECT  titolo,   regione, tipopiatto, persone,   ingredienti,  preparazione, note, difficolta   FROM   ricette WHERE   id=$id";
$result   =   mysql_query($query,   $db);
$row   =   mysql_fetch_array($result);
/* destinatari */
$destinatari  = $email;

/* oggetto */
$oggetto = "La ricetta che hai richiesto";

/* messaggio */
$messaggio = '
<table width=600 border=1 cellspacing=0 cellpadding=3 align=center>
<td  width=600 height=56 align=center><b>$row[titolo]</b></td>
<td  valign=top>
<table width=100% border=0 cellspacing=1 cellpadding=4 bgcolor=#CCCC99 align=center>
</table>
<tr bgcolor=#FFFFFF valign=top>
<td  bgcolor=#FFFFFF width=143> 
<br /><b>Nazione / Regione:</b><br />$row[regione]<br />
<br /><b>N.Persone:</b><br />$row[persone]<br />
<br /><b>Portata:</b><br />$row[tipopiatto]<br />
<br /><b>Difficoltà:</b><br />$row[difficolta]<br />
<td width=452>
<div align=justify><b>Ingredienti:</b><br />$row[ingredienti]</div><br>
<table width=300 border=0 cellspacing=0 cellpadding=0>
</tr>
<td height=10></td>
</tr>
<div  align=justify><b>Preparazione:</b><br />$row[preparazione]</div></td></tr>
</table>
<div  align=justify><b>Note:</b><br />$row[note]</div></td></tr>
</table>
<table width=600 border=0 cellspacing=0 cellpadding=0 align=center>
<tr>
<td height=10></td>
</tr>
</table>
';

/* Per inviare email in formato HTML, si deve impostare l'intestazione Content-type. */
$intestazioni  = "MIME-Version: 1.0\r\n";
$intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";

/* intestazioni addizionali */
$intestazioni .= "To: $email , \r\n";
$intestazioni .= "From: Alessandro \r\n";

/* ed infine l'invio */
mail($destinatari, $oggetto, $messaggio, $intestazioni);
echo "<center>Messaggio inviato<br><br><a href=\"index.php\">Vai al form</a></center>";
mysql_close($db);
?>
risposto 9 anni fa
blackeyes
X 0 X

ho modificato il codice del send.php cosi, ma non cambia nulla ??? ???

<?php
include("config.inc.php");
include("connect.inc.php");

$email=$_POST['email'];
$id = $_GET['id'];
$query   =   "SELECT  titolo,   regione, tipopiatto, persone,   ingredienti,  preparazione, note, difficolta   FROM   ricette WHERE   id=$id";
$result   =   mysql_query($query,   $db);
$row   =   mysql_fetch_array($result);
/* destinatari */
$destinatari  = $email;

/* oggetto */
$oggetto = "La ricetta che hai richiesto";

/* messaggio */
$messaggio = '
<table width=600 border=1 cellspacing=0 cellpadding=3 align=center>
<td  width=600 height=56 align=center><b>$row[titolo]</b></td>
<td  valign=top>
<table width=100% border=0 cellspacing=1 cellpadding=4 bgcolor=#CCCC99 align=center>
</table>
<tr bgcolor=#FFFFFF valign=top>
<td  bgcolor=#FFFFFF width=143> 
<br /><b>Nazione / Regione:</b><br />$row[regione]<br />
<br /><b>N.Persone:</b><br />$row[persone]<br />
<br /><b>Portata:</b><br />$row[tipopiatto]<br />
<br /><b>Difficoltà:</b><br />$row[difficolta]<br />
<td width=452>
<div align=justify><b>Ingredienti:</b><br />$row[ingredienti]</div><br>
<table width=300 border=0 cellspacing=0 cellpadding=0>
</tr>
<td height=10></td>
</tr>
<div  align=justify><b>Preparazione:</b><br />$row[preparazione]</div></td></tr>
</table>
<div  align=justify><b>Note:</b><br />$row[note]</div></td></tr>
</table>
<table width=600 border=0 cellspacing=0 cellpadding=0 align=center>
<tr>
<td height=10></td>
</tr>
</table>
';

/* Per inviare email in formato HTML, si deve impostare l'intestazione Content-type. */
$intestazioni  = "MIME-Version: 1.0\r\n";
$intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";

/* intestazioni addizionali */
$intestazioni .= "To: $email , \r\n";
$intestazioni .= "From: Alessandro \r\n";

/* ed infine l'invio */
mail($destinatari, $oggetto, $messaggio, $intestazioni);
echo "<center>Messaggio inviato<br><br><a href=\"index.php\">Vai al form</a></center>";
mysql_close($db);
?>

per chiarezza l'id viene preso dal file view.php

<?   
include("top_foot.inc.php");   
include("config.inc.php");
include("connect.inc.php");
top();
$query   =   "SELECT   titolo,   regione, tipopiatto, persone,   ingredienti,  preparazione, note, difficolta   FROM   ricette WHERE   id=$id";
$result   =   mysql_query($query,   $db);
$row   =   mysql_fetch_array($result);
$riga.="<table width=600 border=1 cellspacing=0 cellpadding=3 align=center>";
$riga.="<td  width=600 height=56 align=center><b>$row[titolo]</b></td>";
$riga.="<td  valign=top>";
$riga.="<table width=100% border=0 cellspacing=1 cellpadding=4 bgcolor=#CCCC99 align=center>";
$riga.="</table>";
$riga.="<tr bgcolor=#FFFFFF valign=top>";
$riga.="<td  bgcolor=#FFFFFF width=143>"; 
$riga.="<br /><b>Nazione / Regione:</b><br />$row[regione]<br />";
$riga.="<br /><b>N.Persone:</b><br />$row[persone]<br />";
$riga.="<br /><b>Portata:</b><br />$row[tipopiatto]<br />";
$riga.="<br /><b>Difficoltà:</b><br />";
$riga.="$row[difficolta]<br />";
if ($row['difficolta'] == "Facile")
  $riga.='<img src=1.jpg>';
elseif($row['difficolta'] == "Elaborata")
  $riga.='<img src=2.jpg>';
elseif($row['difficolta'] == "Impegnativa")
  $riga.='<img src=3.jpg>';
$riga.="<td width=452>";
$riga.="<div align=justify><b>Ingredienti:</b><br />$row[ingredienti]</div><br>";
$riga.="<table width=300 border=0 cellspacing=0 cellpadding=0>";
$riga.="</tr>";
$riga.="<td height=10></td>";
$riga.="  </tr>";
$riga.="<div  align=justify><b>Preparazione:</b><br />$row[preparazione]</div></td></tr>";
$riga.="</table>";
$riga.="<div  align=justify><b>Note:</b><br />$row[note]</div></td></tr>";
$riga.="</table>";
$riga.="<table width=600 border=0 cellspacing=0 cellpadding=0 align=center>";
$riga.="<tr>";
$riga.="<td height=10></td>";
$riga.="</tr>";
$riga.="</table>";
$riga.="<table width=600 border=0 cellspacing=0 cellpadding=0 align=center>";
$riga.="<td><a   href=index.php>Torna   alla   pagina   iniziale</a></td>";
$riga.="<td><a href='javascript:print();'>Stampa la ricetta</a></td>";
$riga.="<td><a   href=all.php>Visualizza   tutte   le ricette</a></td>";
$riga.="<td><a   href=search.php>Cerca   nel database</a></td>";
$riga.="<td><a   href=mailricetta.php?id=".$_GET["id"].">Invia la ricetta</a></td>";
$riga.="</table>";
echo $riga;
mysql_close($db);
?>
 

Cliccando su invia la ricetta si apre un form mailricetta.php

<form name="form_invio" method="post" action="send.php">
  <div align="left">
  <table width="339" cellpadding="3" cellspacing="0" bgcolor="#FFFFFF">
    <tr> 
      <td bgcolor="#FFFFFF">
          <tr>
            <td align="right"><font size="1" face="Georgia" color="#6A0000">
         <strong>E-mail</strong></font></td>
            <td><font color="#400000"><input name="email" type="text" id="email" style="border:1px solid;" size="30"></font></td>
          </tr>
          <tr> 
            <td bgcolor="#FFFFFF">
         <p align="center">&nbsp;</td>
            <td bgcolor="#FFFFFF"><font color="#400000"><input type="submit" name="Submit" value="Invia"></font><font size="2" face="Georgia" color="#400000">&nbsp;&nbsp;&nbsp;&nbsp;</font><font size="2" face="Georgia" color="#6A0000"> </font>
         
              </tr>
        </table></td>
    </tr>
    </table>
   </div>
</form>

inserendo l'indirizzo mail parte il send.php

risposto 9 anni fa
blackeyes
X 0 X

la mail mi arriva cosi

$row[titolo]  

Nazione / Regione:
$row[regione]

N.Persone:
$row[persone]

Portata:
$row[tipopiatto]

Difficoltà:
$row[difficolta]
 Ingredienti:
$row[ingredienti]

 
Preparazione:
$row[preparazione] 
Note:
$row[note]
risposto 9 anni fa
blackeyes
X 0 X

innanzitutto scusate per la quantita' spropositata di codice postato pensavo fosse utile alla soluzione del problema ma forse ha generato solo confusione...

Comunque  facendo un echo della query generata dal send.php ho

SELECT titolo, regione, tipopiatto, persone, ingredienti, preparazione, note, difficolta FROM ricette WHERE id=

Quindi non viene correttamente acquisito l'id

infatti dal  view.php viene correttamente passato al form mail dove l'utente dovra' inserire il suo indirizzo mail  $riga.="<td><a   href=mailricetta.php?id=".$_GET["id"].">Invia la ricetta</a></td>"; ma poi ovviamente viene perso nel momento in cui premo il tasto invia del form. come posso ovviare?

risposto 9 anni fa
blackeyes
X 0 X

Ma la pagina con il form ha ancora l'id nell'URL? Allora, se il submit del form è inviato ancora allo stesso script (target="") allora l'id sarà disponibile in $_GET['id']

Se invece il submit lo fai ad un altro script potresti creare un campo input invisibile nel form, nel quale salvare l'id.

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

allora cliccando su invia la ricetta mi si apre mailricetta.php e l'id dovrebbe essere disponibile dal momento che sulla barra degli indirizzi vedo http://www.syrio.altervista.org/mailricetta.php?id=27

inserendo la mail nel campo input e cliccando su invia il submit viene fatto al send.php

risposto 9 anni fa
blackeyes
X 0 X

Se il submit viene fatto ad una pagina diversa (in questo caso send.php) allora le soluzioni possibili sono:

1) salvare l'id in uncampo input di tipo nascosto, present nel form

2) salvare l'id in un cookie

3) salvare l'id in sessione.

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

creato il campo input "tempid"nel form come vi salvo l'id e come lo richiamo dal send ?

risposto 9 anni fa
blackeyes
X 0 X

ho provato cosi' ma credo sia errato

          <td><font color="#400000"><input name="tempid" type="text" id="tempid" style="border:1px solid;" size="30" value=mailricetta.php?id=".$_GET["id"].></font></td>

risposto 9 anni fa
blackeyes
X 0 X

ho provato anche ad accorpare il codice del form nel file send.php pero' come clicco su invia la ricetta mi compare

E-mail    

SELECT titolo, regione, tipopiatto, persone, ingredienti, preparazione, note, difficolta FROM ricette WHERE id=12

Messaggio inviato

Vai al form

senza che io inserisca l'indirizzo email se poi metto la mail e do invia la query si perde nuovamente l'id

SELECT titolo, regione, tipopiatto, persone, ingredienti, preparazione, note, difficolta FROM ricette WHERE id=

risposto 9 anni fa
blackeyes
X 0 X

allora ho modificato gli script mailricetta.php cosi'

<?php
session_start();
$_SESSION['salvaid'] = $id = $_GET['id'];
?>

piu' ovviamente il codice del form che non sto' a riportare e il send.php cosi

<?php
session_start();
include("config.inc.php");
include("connect.inc.php");

$email=$_POST['email'];
$id = $_SESSION['salvaid'];
$query   =   "SELECT  titolo,   regione, tipopiatto, persone,   ingredienti,  preparazione, note, difficolta   FROM   ricette WHERE   id=$id";
$result   =   mysql_query($query,   $db);
$row   =   mysql_fetch_array($result);
echo $query;
/* destinatari */
$destinatari  = $email;

/* oggetto */
$oggetto = "La ricetta che hai richiesto";

/* messaggio */
$messaggio = '
<table width=600 border=1 cellspacing=0 cellpadding=3 align=center>
<td  width=600 height=56 align=center><b>$row[titolo]</b></td>
<td  valign=top>
<table width=100% border=0 cellspacing=1 cellpadding=4 bgcolor=#CCCC99 align=center>
</table>
<tr bgcolor=#FFFFFF valign=top>
<td  bgcolor=#FFFFFF width=143> 
<br /><b>Nazione / Regione:</b><br />$row[regione]<br />
<br /><b>N.Persone:</b><br />$row[persone]<br />
<br /><b>Portata:</b><br />$row[tipopiatto]<br />
<br /><b>Difficoltà:</b><br />$row[difficolta]<br />
<td width=452>
<div align=justify><b>Ingredienti:</b><br />$row[ingredienti]</div><br>
<table width=300 border=0 cellspacing=0 cellpadding=0>
</tr>
<td height=10></td>
</tr>
<div  align=justify><b>Preparazione:</b><br />$row[preparazione]</div></td></tr>
</table>
<div  align=justify><b>Note:</b><br />$row[note]</div></td></tr>
</table>
<table width=600 border=0 cellspacing=0 cellpadding=0 align=center>
<tr>
<td height=10></td>
</tr>
</table>
';

l'id viene passato infatti a video ho questa risposta

SELECT titolo, regione, tipopiatto, persone, ingredienti, preparazione, note, difficolta FROM ricette WHERE id=26
Messaggio inviato

Vai al form

pero' la mail arriva in modo errato

risposto 9 anni fa
blackeyes
X 0 X

allora ho risolto cosi

<?php
session_start();
include("config.inc.php");
include("connect.inc.php");

$email=$_POST['email'];
$id = $_SESSION['salvaid'];
$query   =   "SELECT  titolo,   regione, tipopiatto, persone,   ingredienti,  preparazione, note, difficolta   FROM   ricette WHERE   id=$id";
$result   =   mysql_query($query,   $db);
$row   =   mysql_fetch_array($result);

/* destinatari */
$destinatari  = $email;

/* oggetto */
$oggetto = "La ricetta che hai richiesto";

/* messaggio */
$messaggio = '
                <td>TITOLO: <br>'.htmlentities($row['titolo']).'<br></td>
            <br>
                <td>REGIONE: <br>'.htmlentities($row['regione']).'<br></td>
            <br>
                <td>PORTATA: <br>'.htmlentities($row['tipopiatto']).'<br></td>
            <br>
                <td>PERSONE: <br>'.htmlentities($row['persone']).'<br></td>
            <br>
                <td>INGREDIENTI: <br>'.htmlentities($row['ingredienti']).'<br></td>
            <br>
                <td>PREPARAZIONE: <br>'.htmlentities($row['preparazione']).'<br></td>
            <br>
                <td>NOTE: <br>'.htmlentities($row['note']).'<br></td>
            <br>
                <td>DIFFICOLTA:<br>'.htmlentities($row['difficolta']).'<br></td>
';

/* Per inviare email in formato HTML, si deve impostare l'intestazione Content-type. */
$intestazioni  = "MIME-Version: 1.0\r\n";
$intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";

/* intestazioni addizionali */
$intestazioni .= "To: $email , \r\n";
$intestazioni .= "From: alex \r\n";

/* ed infine l'invio */
mail($destinatari, $oggetto, $messaggio, $intestazioni);
echo "<center>Messaggio inviato<br><br><a href=\"index.php\">TORNA ALLA PAGINA INIZIALE</a></center>";
mysql_close($db);
?>

Adesso funziona tutto :smitten: mi piacerebbe comunque capire cosa  ci fosse di errato nel codice precedente, quello dove nella variabile messaggio costruivo la tabella ??? ??? ???

Anche perche' in quel modo veniva impaginata meglio ^-^

Un'altra domanda quando mi arriva la mail il mittente si visualizza in questo modo Alessandro@ns20.altervista.org come posso evitare di visualizzare la parte dopo la @ ?

risposto 9 anni fa
blackeyes
X 0 X

Dimenticavo ho anche imparato ad usare le sessioni 8)

risposto 9 anni fa
blackeyes
X 0 X

Sto' notando facendo delle prove che alcune volte dipende dala ricetta i dati mi arrivano cosi':

250 g formaggio cacio semifresco di vacca o di pecora dolce<br /> 250 g mollica di pane<br />

come posso fare in modo che non venga visualizzato il <br />?

risposto 9 anni fa
blackeyes
X 0 X

per la cronaca ho risolto cosi

$messaggio = <<<EOQ
<table width=600 border=1 cellspacing=0 cellpadding=3 align=center>
<td  width=600 height=56 align=center><b>$row[titolo]</b></td>
<td  valign=top>
<table width=100% border=0 cellspacing=1 cellpadding=4 bgcolor=#CCCC99 align=center>
</table>
<tr bgcolor=#FFFFFF valign=top>
<td  bgcolor=#FFFFFF width=143>
<br /><b>Nazione / Regione:</b><br />$e_regione<br />
<br /><b>N.Persone:</b><br />$e_persone<br />
<br /><b>Portata:</b><br />$e_piatto<br />
<br /><b>Difficoltà:</b><br />$e_difficolta<br />
<td width=452>
<div align=justify><b>Ingredienti:</b><br />$e_ingredienti</div><br>
<table width=300 border=0 cellspacing=0 cellpadding=0>
</tr>
<td height=10></td>
</tr>
<div  align=justify><b>Preparazione:</b><br />$e_preparazione</div></td></tr>
</table>
<div  align=justify><b>Note:</b><br />$e_note</div></td></tr>
</table>
<table width=600 border=0 cellspacing=0 cellpadding=0 align=center>
<tr>
<td height=10></td>
</tr>
</table>
EOQ;
 

'

ho notato ora che se uso lo script send.php  su altervista funziona tutto se lo uso su un un altro server lo stesso script mi invia la stessa mail 2 volte :master: come mai??

risposto 9 anni fa
blackeyes
modificato 9 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda