Codice PHP:
<? if ($_POST) {
$_GET=$_POST;
$_GET["descrizione"]=fix_caps($_GET["descrizione"]);
if (trim($_GET["descrizione"]) && eregi("^[a-zA-Z0-9_\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$", trim($_GET["email"]))) {
$id_azienda=$_GET["id_azienda"];
$sql="SELECT email FROM aziende WHERE id_azienda='$id_azienda'";
$result=mysql_query($sql, $link) or die($sql.mysql_error());
$rows=mysql_fetch_assoc($result);
if ($_GET["modifica"]) {
$emails=trim($rows["email"]);
if ($emails) $email=explode("\n", $emails);
if ($email) {
foreach ($email as $valore) {
if ($valore==$_SESSION["riga_mail"][$_GET["modifica"]]) {
$corretto=$corretto.trim($_GET["descrizione"])." ".trim($_GET["email"])."\n";
$testo=$_SESSION["riga_mail"][$_GET["modifica"]];
$parti=explode(" ", $testo);
$quante_parti=count($parti)-1;
$email_precedente=$parti[$quante_parti];
$email_attuale=trim($_GET["email"]);
} else {
$corretto=$corretto.$valore."\n";
}
}
}
$emails=trim($corretto);
} else {
$emails=$rows["email"]."\n".trim($_GET["descrizione"])." ".trim($_GET["email"]);
$email_attuale=$_GET["email"];
}
$sql="UPDATE aziende SET email='".$emails."' WHERE id_azienda='$id_azienda'";
$result=mysql_query($sql, $link) or die($sql.mysql_error());
if ($corretto) $_SESSION["riga_mail"][$_GET["modifica"]]=trim($_GET["descrizione"])." ".trim($_GET["email"]);
} else {
$div="<div style=\"color:red; font-weight:bold;\">Problemi con l'inserimento dell'e-mail. Riprovare</div>";
}
} ?>
La parte che controlla i dati e aggiorna il db è questa sopra riportata; l'ho messa tutta, anche se in realtà ci saranno cose che non interessano la questione aperta, ed invito a non considerarle. E' un sistema strambo (ho dovuto fare così...) di gestione di un campo text contenente indirizzi email con descrittore separati da \n.
Ad ogni modo... il problema principale è che se ho nel campo un'apice, al primo update tutto bene... al secondo (la pagina ripropone se stessa a fine operazione) invece non mi mette automaticamente il backslash e quindi passa al db una stringa con errore (UPDATE tabella SET descrizione='Un'ape'... invece del corretto UPDATE tabella SET descrizione='Un\'ape'...).
PERCHE' questa differenza di comportamento?!