[RISOLTO]Problema connessione + insert mysqli

Hackx

Utente Attivo
20 Ago 2013
109
0
16
Ciao a tutti,

Ho un problema riguardante l'inserimento dei dati nel DB

config.php:

PHP:
<?php

$host = "localhost";
$username = "root";
$password = "password";
$database = "DB";

//connessione DB

$conn = mysqli_connect($host, $username, $password, $database)
        or die (mysqli_connect_error());

?>

ed ecco il controllo del nome e del cognome ... che poi dovranno essere inseriti nel DB

PHP:
<?php

include "config.php";

if(isset($_POST['submit']))
{

if ($_POST['nome'] == '')
{
echo "Non hai compilato il campo nome.<br/>";
} else {
$nome = $_POST['nome'];
}


     if ($_POST['cognome'] == '')
     {
     echo "Non hai compilato il campo cognome.<br/>";
     } else {
     $cognome = $_POST['cognome']; 
     }	  
	 
	
echo "registrazione effettuata!";
} else {	
mysqli_query($conn,"INSERT INTO 'prova iscrizione' ('nome', 'cognome') VALUES "
. "('{$_POST['nome']}', '{$_POST['cognome']}')");

echo "Registrazione ";
?>
Dove sbaglio ?... non mi restituisce nessun errore è come se ogni volta che faccio invia ...i dati sono scritti sul DB in maniera corretta, ma quando vado a vedere il DB su phpmyadmin, quest'ultimo è vuoto !

Come posso fare ??

Ringrazio,
Andrea
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, gli errori ci sono ma non li stampi
non puoi concatenare una stringa in quel modo e ti conviene separare la stringa della query dall'esecuzione. almeno fino a che non diventi super esperto allora potrai scrivere tutto il codice su una riga sola
PHP:
$query = "INSERT INTO 'prova iscrizione' ('nome', 'cognome') 
                         VALUES ('{$_POST['nome']}', '{$_POST['cognome']}') ";
$res = mysqli_query($conn, $query);
if (!$res)
    echo mysqli_error($conn);
così è più ordinato
 
Ultima modifica:

Hackx

Utente Attivo
20 Ago 2013
109
0
16
Ciao !

Innanzitutto ti volevo ringraziare per l'aiuto ! e per il consiglio !... ho corretto tutto ed ecco gli errori che mi stampa:

1° errore : Undefined index: nome

2° errore : Undefined index: cognome

3° errore : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''prova iscrizione' ('nome', 'cognome') VALUES ('', ''' at line 1Registrazione (presumo sia l'errore del mysqli)

Ringrazio,
Andrea
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Per i primi due ci sono degli errori di logica nelle if e else che hai messo
puoi fare semplicemente cosi
PHP:
<?php

include "config.php";

if (isset($_POST['submit'])) {

    if (!empty($_POST['nome']) && !empty($_POST['cognome'])) {

        $query = "INSERT INTO prova_iscrizione ('nome', 'cognome') 
                         VALUES ('{$_POST['nome']}', '{$_POST['cognome']}')";
        $res = mysqli_query($conn, $query);
        if (!$res)
            echo mysqli_error($conn);
        else
            echo "registrazione effettuata!";
    } else {
        echo "Non hai compilato tutti i campi ";
    }
}
?>
il terzo riguarda gli apici che hai messo per racchiudere il nome della tabella, sarebbe consigliato non mettere spazi vuoti nel nome dei campi o delle tabelle, in altrnativa si devono usare altri tipi di apici che non mandano in errore la query ( ` )
 

Hackx

Utente Attivo
20 Ago 2013
109
0
16
Ciao,

Ti volevo dire che ho risolto! :D ! finalmente!
Ho impostata tutto con gli elseif ed ho messo le variabili di sotto, infondo al codice sopra la query d'inserimento e tutto funziona !

Grazie mille :) !
Andrea
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
io metterei almeno un trim, altrimenti qualcuno può iscriversi con una serie di spazi
PHP:
<?php
//....
if (!empty(trim($_POST['nome'])) && !empty(trim($_POST['cognome']))) {
//....
?>
e fare anche altro es controllare che il nome e/o cognome non siano es pin**|+co cioè con caratteri strani e verificherei che non esistano di già
 

Hackx

Utente Attivo
20 Ago 2013
109
0
16
ciao
io metterei almeno un trim, altrimenti qualcuno può iscriversi con una serie di spazi
PHP:
<?php
//....
if (!empty(trim($_POST['nome'])) && !empty(trim($_POST['cognome']))) {
//....
?>
e fare anche altro es controllare che il nome e/o cognome non siano es pin**|+co cioè con caratteri strani e verificherei che non esistano di già
Ciao,

Adesso riguarderò tutto il codice ed aggiungerò, oltre all'empty, il comando trim.
Mentre per controllare nome e cognome ho usato preg_match (sole lettere) e per verificare se è presente già nel DB o no posso usare una cosa del genere:

PHP:
$query = "SELECT nome FROM prova_iscrizione WHERE nome = '$nome'";
$risultato = mysql_query($query, $db);
$num = mysql_num_rows ($risultato);
if($num == '0'){
puoi salvare il record
}else{
errore record gia esistente
}
Un'altra domanda.. se è corretto, lo script sopra lo devo usare per il nome e cognome. Ovvero ne devo scrivere due distinti oppure li posso unire in qualche modo ??

Ringrazio,
Andrea
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
cioa
mi ero dimenticato (l'avevo saltato nel copy/paste)

PHP:
$query = "SELECT nome FROM prova_iscrizione WHERE nome = '$nome' AND cognome='$cognome'";
devi verificare che non ci siano es due mario rossi