[PHP] email con inserimento dati nel database

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.
 

marino51

Utente Attivo
28 Feb 2013
2.903
160
63
Lombardia
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
 

sal88

Utente Attivo
25 Giu 2019
22
0
1
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 = "miaemail@gmail.com";//<- 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

?>
 

Tommy03

Utente Attivo
6 Giu 2018
361
39
28
16
Bassano del Grappa (VI)
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 = "miaemail@gmail.com";//<- 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

?>
 

sal88

Utente Attivo
25 Giu 2019
22
0
1
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 = "miaemail@gmail.com";//<- 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
 

sal88

Utente Attivo
25 Giu 2019
22
0
1
o provato a eseguire la query direttamente su phpadmin myqsl ma mi da questo errore:
#1364 - Field 'id' doesn't have a default value
 

sal88

Utente Attivo
25 Giu 2019
22
0
1
non prende la query provato con un altro esercizio e non so perché il database non prende la query
 

sal88

Utente Attivo
25 Giu 2019
22
0
1
no no messo , sto uscendo pazzo ... l 'ho provato pure con un esercizio più semplice ma non prende il database
 

macus_adi

Utente Attivo
5 Dic 2017
1.265
82
48
IT/SW
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);
}
 

sal88

Utente Attivo
25 Giu 2019
22
0
1
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...
 

macus_adi

Utente Attivo
5 Dic 2017
1.265
82
48
IT/SW
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);
}
 

sal88

Utente Attivo
25 Giu 2019
22
0
1
alla fine non mi fa collegare al database al server si... non capisco il perchè...