[PHP] email con inserimento dati nel database

  • Creatore Discussione Creatore Discussione sal88
  • Data di inizio Data di inizio

sal88

Utente Attivo
25 Giu 2019
22
0
1
salve ragazzi essendo un neofita del codice php volevo qualche suggerimento riguardo a un form di invio email, con inserimento rispettivo di nome email messaggio e data sul database mysql ; sono riuscito solo ad eseguire l' invio email ma senza riuscire all' inserimento dei dati inviati sul proprio database avendo effettuato una query insert into.
Attendo vostri consigli grazie.
 
ma senza riuscire all' inserimento dei dati inviati sul proprio database avendo effettuato una query insert into
noi conosciamo perfettamente
il codice che hai scritto,
il database che hai usato,
le operazioni che hai fatto,
l'eventuale errore che ti ha dato

sicuramente ti sarà arrivato il mio suggerimento per risolvere
 
Posta il codice che hai prodotto finora così potremo aiutarti
PHP:
include 'conn.php';


//Controllo dati
$error= "";

if(isset($_POST['nome']) and $_POST['nome'] != ""){//<- controllo nome
    $nome= strip_tags($_POST['nome']);
}
elseif(isset($_POST['nome'])){
    $error .= "Nome mancante.<br />";
}

if(isset($_POST['email']) and preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $_POST['email'])){//<- controlla se la mail è presente e se è in un formato valido
    $mail = $_POST['email'];
}
elseif(isset($_POST['email'])){
    $error .= "Email mancante o non valida.<br />";
}

if(isset($_POST['messaggio']) and $_POST['messaggio'] != ""){//<- controllo messaggio
    $messaggio = strip_tags($_POST['messaggio']);
}
elseif(isset($_POST['messaggio'])){
    $error .= "Inserire un messaggio.<br/>";
}

//Invio mail
if(isset($nome,$mail,$messaggio)){
    $destinatario = "[email protected]";//<- ricorda di cambiarla!
    $intestazione = "From: ".$mail."\r\n";
    $messaggio .= "\n\nMittente: ".$nome."\nEmail: ".$mail."";

    mail($destinatario, $messaggio, $intestazione);

    echo "<p class='success'>Messaggio inviato con successo!</p>";
}
else{
    echo "<p class='error'>".$error."</p>";
}

//VOGLIO PERO' CHE NON SI INVII SOLO ALLA MIA EMAIL MA CHE VENGA SALVATA ANCHE SUL DATABASE

?>
 
Prova così:
PHP:
include 'conn.php';


//Controllo dati
$error= "";

if(isset($_POST['nome']) and $_POST['nome'] != ""){//<- controllo nome
    $nome= strip_tags($_POST['nome']);
}
elseif(isset($_POST['nome'])){
    $error .= "Nome mancante.<br />";
}

if(isset($_POST['email']) and preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $_POST['email'])){//<- controlla se la mail è presente e se è in un formato valido
    $mail = $_POST['email'];
}
elseif(isset($_POST['email'])){
    $error .= "Email mancante o non valida.<br />";
}

if(isset($_POST['messaggio']) and $_POST['messaggio'] != ""){//<- controllo messaggio
    $messaggio = strip_tags($_POST['messaggio']);
}
elseif(isset($_POST['messaggio'])){
    $error .= "Inserire un messaggio.<br/>";
}

//Invio mail
if(isset($nome,$mail,$messaggio)){
  $inserisci=mysqli_query($conn," INSERT INTO nome_tabelle (campo_nome,campo_mail,campo_messaggio) VALUES ('$nome','$mail','$messaggio')");
$destinatario = "[email protected]";//<- ricorda di cambiarla!
    $intestazione = "From: ".$mail."\r\n";
    $messaggio .= "\n\nMittente: ".$nome."\nEmail: ".$mail."";

    mail($destinatario, $messaggio, $intestazione);

    echo "<p class='success'>Messaggio inviato con successo!</p>";
}
else{
    echo "<p class='error'>".$error."</p>";
}

//VOGLIO PERO' CHE NON SI INVII SOLO ALLA MIA EMAIL MA CHE VENGA SALVATA ANCHE SUL DATABASE

?>
 
Prova così:
PHP:
include 'conn.php';


//Controllo dati
$error= "";

if(isset($_POST['nome']) and $_POST['nome'] != ""){//<- controllo nome
    $nome= strip_tags($_POST['nome']);
}
elseif(isset($_POST['nome'])){
    $error .= "Nome mancante.<br />";
}

if(isset($_POST['email']) and preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $_POST['email'])){//<- controlla se la mail è presente e se è in un formato valido
    $mail = $_POST['email'];
}
elseif(isset($_POST['email'])){
    $error .= "Email mancante o non valida.<br />";
}

if(isset($_POST['messaggio']) and $_POST['messaggio'] != ""){//<- controllo messaggio
    $messaggio = strip_tags($_POST['messaggio']);
}
elseif(isset($_POST['messaggio'])){
    $error .= "Inserire un messaggio.<br/>";
}

//Invio mail
if(isset($nome,$mail,$messaggio)){
  $inserisci=mysqli_query($conn," INSERT INTO nome_tabelle (campo_nome,campo_mail,campo_messaggio) VALUES ('$nome','$mail','$messaggio')");
$destinatario = "[email protected]";//<- ricorda di cambiarla!
    $intestazione = "From: ".$mail."\r\n";
    $messaggio .= "\n\nMittente: ".$nome."\nEmail: ".$mail."";

    mail($destinatario, $messaggio, $intestazione);

    echo "<p class='success'>Messaggio inviato con successo!</p>";
}
else{
    echo "<p class='error'>".$error."</p>";
}

//VOGLIO PERO' CHE NON SI INVII SOLO ALLA MIA EMAIL MA CHE VENGA SALVATA ANCHE SUL DATABASE

?>
mi fa inviare l' email ma i dati non si salvano su database
 
Ma hai già provato a fare semplici inserimenti nel database per vedere se è un errore a livello di connessione o dello script dell'email?
 
o provato a eseguire la query direttamente su phpadmin myqsl ma mi da questo errore:
#1364 - Field 'id' doesn't have a default value
 
non prende la query provato con un altro esercizio e non so perché il database non prende la query
 
no no messo , sto uscendo pazzo ... l 'ho provato pure con un esercizio più semplice ma non prende il database
 
no no messo , sto uscendo pazzo
Senti, se non funziona stai sbagliando approccio, meglio cancellare e rifare da zero se non sei pratico....
La gestione degli errori dovrebbe essere la prima cosa da imparare!

Ipotizzando che tu abbia fatto un mapping dei dati dal DB, ipotizzando che tu abbia i dati nella variabile POST corretti, prova con questo...
PHP:
$conn=new mysqli($host,$user,$pass,$db);
try{
    $conn->query('INSERT INTO TABELLA (`'.join('`,`',array_keys($_POST)).'`) VALUES ("'.join(",",$_POST).'")');
}catch(Exception $e){
    print_r($e);
}
 
PHP:
<?php
$host = 'localhost';
$user = 'root';
$pass = 'root';
$db = 'esercitazione';

$conn=new mysqli($host,$user,$pass,$db);
try{
    $conn->query('INSERT INTO 'tabella' (`'.join('`,`',array_keys($_POST)).'`) VALUES ("'.join(",",$_POST).'")');
}catch(Exception $e){
    print_r($e);
}



 ?>
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <form class="" action="index.php" method="post">
      <input type="text" name="nome">
      <input type="submit" name="submit">
    </form>
  </body>
</html>

database nome esercitazione , nome tabella = tabella , colonne: id int auto_increment , nome varchar 255...
 
Quindi? con questo stai comunicando che è andato in errore appena l'hai lanciato?
Se è questo il motivo dell'intervento, basterebbe leggere più attentamente il codice per vedere dove hai sbagliato.

L'attivatore dell'action dove sta? lo stai eseguendo ad ogni caricamento della pagina!
$conn=new mysqli($host,$user,$pass,$db);
try{
$conn->query('INSERT INTO 'tabella' (`'.join('`,`',array_keys($_POST)).'`) VALUES ("'.join(",",$_POST).'")');
}catch(
Exception $e){
print_r($e);
}
 
alla fine non mi fa collegare al database al server si... non capisco il perchè...
 

Discussioni simili