Php problema su inserimento dati mysql

EffeElle

Utente Attivo
25 Set 2012
48
0
0
Ciao ragazzi questo è il mio 2 post su questo forum spero mi sapete dare anche qui un aiuto, mi trovo in difficoltà per inserire dati su un database. Non riesco in particolare a inserire i dati presi da una select o da input radio, ho fatto una prova precedente senza avere dei campi select è tutto funziona corettamente successivamente ho inserito due campi select uno di nome sesso e uno di nome statocivile il primo problema è nel controllo dei campi che l'ho messo come SessoPattern ma non me lo accetta mentre quello NamePattern per il cognome il nome e il codice fiscale me lo accetta e poi non so se per la creazione della tabella mysql si devono dare dei valori specifici per i campi di tipo select io ho inserito tutti i campi di tipo text o varchar ad esclusione del campo id di tipo int AU. Vi posto i 2 file di script spero qualcuno riesce ad aiutarmi...

insert.php
PHP:
<?php
// richiamo il file di configurazione
     require 'connessione.php'; 
 // richiamo lo script responsabile della connessione a MySQL
     require 'config.inc';
 

 $message = "";
if (isset($_GET['alert']))
{
	if ($_GET['alert'] == 0)
	{
		$message = "Dati scritti correttamente nel database";
	}
 
	if ($_GET['alert'] == 1)
	{
		$message = "ERRORE: Nessun dato scritto nel database.<br>Tutti i campi devono essere completati!";
	}
 
	if ($_GET['alert'] == 2)
	{
		$message = "ERRORE: Nessun dato scritto nel database.<br>Campo 
		cognome non nel formato corretto!";
	}
 
	if ($_GET['alert'] == 3)
	{
		$message = "ERRORE: Nessun dato scritto nel database.<br>Campo nome non nel formato corretto!";
	}
 
	if ($_GET['alert'] == 4)
	{
		$message = "ERRORE: Nessun dato scritto nel database.<br>Campo codice fiscale non nel formato corretto!";
	}
	
 
	if ($_GET['alert'] == 5)
	{
		$message = "ERRORE: Nessun dato scritto nel database.<br>Campo sesso non nel formato corretto!";
	}
	if ($_GET['alert'] == 6)
	{
		$message = "ERRORE: Nessun dato scritto nel database.<br>Campo stato civile non nel formato corretto!";
	}
}
 
echo "<br><br>";
echo $message;
 
?>
HTML:
<form name="form1" method="POST" action="insert_data.php">
<table>
    <tr>
 		<td colspan="2"><H3><B>Anagrafica</B></H3></TD>
	</tr>
	<tr>
        <td><label>Cognome:</label></td>
        <td><input type="text" name="cognome" size="20"></td>
	</tr>
	
	<tr>
        <td><label>Nome:</label></td>
        <td><input type="text" name="nome" size="20"></td>
	</tr>
	<tr>
    	<td><label>Codice Fiscale: </label></td>
        <td><input type="text" name="codicefiscale" size="30"></td>
	</tr>
	<tr>
        <td><label>Sesso:</label></td>
        <td><select name="sesso">
            <option value="M"> Maschile</option><br>
            <option value="F"> Femminile</option><br>
        </select></td>
	</tr>
    <tr>
        <td><label>Stato Civile:</label></td>
        <td><select name="statocivile">
            <option>CELIBE/NUBILE</option>
            <option>CONIUGATO/A</option>
            <option>VEDOVO/A</option>
            <option>SEPARATO/A</option>
            
            </select>
        </td>
    </tr>
</table>
<input type="submit" value="inserisci" />
</form>


insert_data.php
PHP:
<?php
$NamePattern = "^[a-zA-Z]{3,20}$";
$CodicePattern = "^[a-zA-Z0-9]{3,30}$";
$SessoPattern = "^[a-zA-Z]{3,15}$";   

 
if (empty($_POST['cognome']) OR empty($_POST['nome']) OR empty($_POST['codicefiscale']) OR empty($_POST['sesso']) OR empty($_POST['statocivile']))
{
	header("Location: insert.php?alert=1");
	die;
}
 
if (!ereg($NamePattern, $_POST['cognome']))
{
	header("Location: insert.php?alert=2");
	die;
}
 
if (!ereg($NamePattern, $_POST['nome']))
{
	header("Location: insert.php?alert=3");
	die;
}
 
if (!ereg($CodicePattern, $_POST['codicefiscale']))
{
	header("Location: insert.php?alert=4");
	die;
}
 if (!ereg($SessoPattern, $_POST['sesso']))
{
	header("Location: insert.php?alert=5");
	die;
}
if (!ereg($SessoPattern, $_POST['statocivile']))
{
	header("Location: insert.php?alert=6");
	die;
}
// richiamo il file di configurazione
     require 'connessione.php'; 
 // richiamo lo script responsabile della connessione a MySQL
     require 'config.inc';
	 
	  mysql_select_db("accademiadelsacro");
	 
$query = "INSERT INTO `accademiadelsacro`.`preiscrizione-utenti` (cognome, nome, coficefiscale, sesso, statocivile) VALUES ('$_POST[cognome]','$_POST[nome]','$_POST[codicefiscale]','$_POST[sesso]','$_POST[statocivile]')";

 // invio la query     
        $result = mysql_query($query);

 
header("Location: insert.php?alert=0");
 
?>

strutturatabella
PHP:
CREATE TABLE IF NOT EXISTS `preiscrizione-utenti` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `cognome` text NOT NULL,
  `nome` text NOT NULL,
  `codicefiscale` text NOT NULL,
  `sesso` text NOT NULL,
  `statocivile` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao,
la funzione ereg è deprecata, cito dal manuale
this function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.
io proverei usando un ciclo sul POST per verificare i dati tipo questo ( + elegante a mio parere )
 

EffeElle

Utente Attivo
25 Set 2012
48
0
0
Si per il controllo dei campi potrebbe andare il problema che non riesco a inserire i campi della select (sesso e statocivile)
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
e cosa ti inserisc? nulla?

è meglio se come tipo campo per il sesso usi enum o set e imposti i due valori possibii esempio enum('M','F')

edit

e ptresti semplicemente verificare in questo modo
PHP:
if ($_POST['sesso'] != "M" || $_POST['sesso'] != "F") {
    header("Location: insert.php?alert=5");
    die;
}
 
Ultima modifica:

EffeElle

Utente Attivo
25 Set 2012
48
0
0
Vorrei andare passo passo a imparare qualcosa, il metodo da te postato sarà sicuramente ottimo ma non saprei come interagirlo nel mio script aiutooo!!!
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
nello stato civile invece manca il value

HTML:
<tr>
        <td><label>Stato Civile:</label></td>
        <td><select name="statocivile">
            <option>CELIBE/NUBILE</option>
            <option>CONIUGATO/A</option>
            <option>VEDOVO/A</option>
            <option>SEPARATO/A</option>
            
            </select>
        </td>
    </tr>
 

EffeElle

Utente Attivo
25 Set 2012
48
0
0
Allora su phpmyadmin ho inserito come campo sesso e statocivile di tipo enum e su valori gli ho messo come mi hai detto M e F sul php devo modificare qualcosa? il problema però sta anche nel messaggio alert 5 cioè sul controllo che non me lo accetta
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
rileggi le mie due risposte che abbiamo risposto contemporaneamente
 

EffeElle

Utente Attivo
25 Set 2012
48
0
0
Ho inserito l'if da te postato ma appena clicco su inserisci mi controlla e mi si blocca sempre sul controllo alert 5 sul campo testo mentre per lo statocivile può andare cosi
HTML:
<td><label>Stato Civile:</label></td>
        <td><select name="statocivile">
            <option value="1">CELIBE/NUBILE</option>
            <option value="2">CONIUGATO/A</option>
            <option value="3">VEDOVO/A</option>
            <option value="4">SEPARATO/A</option>
            
            </select>
        </td>
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
giusto!
colpa mia
non || ma &&
PHP:
if ($_POST['sesso'] != "M" && $_POST['sesso'] != "F") {
    header("Location: insert.php?alert=5");
    die;
}
 

EffeElle

Utente Attivo
25 Set 2012
48
0
0
Ok il controllo del campo sesso me lo passa ho impostato quello del campo statocivile cosi non so se è giusto:
PHP:
if ($_POST['statocivile'] != "1" && $_POST['statocivile'] != "2" && $_POST['statocivile'] != "3" && $_POST['statocivile'] != "4") 
{
    header("Location: insert.php?alert=5");
    die;

Con anche questo compilo tutti i campi e mi da alert=0 cioè dati scritti corretamente, vado a verificare ma sul database non mi inserisce nulla devo modificare qualcosa nella query per i campi sesso e statocivile?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
gli apici sono messi in modo errato

devi cambiarli cosi:
PHP:
VALUES ('" . $_POST['cognome'] . "',  ....   etc etc
 

EffeElle

Utente Attivo
25 Set 2012
48
0
0
Sbaglio la chiusura della query mi da errore
PHP:
$query = "INSERT INTO `accademiadelsacro`.`preiscrizione-utenti` (cognome, nome, coficefiscale, sesso, statocivile) VALUES ('" . $_POST['cognome'] . "', '" . $_POST['nome'] . "', '" . $_POST['codicefiscale'] . "', '" . $_POST['sesso'] . "', '" . $_POST['statocivile'] . "'");
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Si hai invertito gli ultimi caratteri
corretta
PHP:
$query = "INSERT INTO `accademiadelsacro`.`preiscrizione-utenti` (cognome, nome, coficefiscale, sesso, statocivile) VALUES ('" . $_POST['cognome'] . "','" . $_POST['nome'] . "','" . $_POST['codicefiscale'] . "','" . $_POST['sesso'] . "','" . $_POST['statocivile'] . "')";
un parere personale,
io per le INSERT preferisco questa sintassi
PHP:
$query = "INSERT INTO accademiadelsacro.preiscrizione-utenti
                  SET cognome = '" . $_POST['cognome'] . "',
                      nome = '" . $_POST['nome'] . "',
                      coficefiscale = '" . $_POST['codicefiscale'] . "',
                      sesso = '" . $_POST['sesso'] . "',
                      statocivile = '" . $_POST['statocivile'] . "'";
la trovo piu leggibile
 
Ultima modifica:

EffeElle

Utente Attivo
25 Set 2012
48
0
0
Mi da dati scritti correttamente ma non mi inserisce nulla nel database cosa ce di sbagliato :(
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
prova a stampare query e eventuali errori e posta
PHP:
// invio la query     
$result = mysql_query($query);
if (!$result) {
    echo $query . "<br/>" . mysql_error();
}
 

EffeElle

Utente Attivo
25 Set 2012
48
0
0
Mi da questo errore:
INSERT INTO `accademiadelsacro`.`preiscrizione-utenti` SET cognome = 'Rossi', nome = 'Mario', coficefiscale = 'lahah12hdhgd', sesso = 'M', statocivile = '2'
Unknown column 'coficefiscale' in 'field list'
 

EffeElle

Utente Attivo
25 Set 2012
48
0
0
ah dimenticavo oltre a quell errore mi da errore nelle righe
PHP:
if (!ereg($NamePattern, $_POST['cognome']))
{
    header("Location: insert.php?alert=2");
    die;
}
 
if (!ereg($NamePattern, $_POST['nome']))
{
    header("Location: insert.php?alert=3");
    die;
}
 
if (!ereg($CodicePattern, $_POST['codicefiscale']))
{
    header("Location: insert.php?alert=4");
    die;
}
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Unknown column 'coficefiscale' in 'field list'
tradotto
non conosco il campo 'coficefiscale'
sistema il nome

che errore ti da sulle righe?
 

EffeElle

Utente Attivo
25 Set 2012
48
0
0
ok sistemato il nome codicefiscale ora mi inserisce i dati perfettamente però mi restano gli errori sulle righe quelle che ti ho postato che sono le righe per il controllo dei campi nome cognome e codicefiscale queste:
PHP:
if (!ereg($NamePattern, $_POST['cognome']))
{
    header("Location: insert.php?alert=2");
    die;
}
 
if (!ereg($NamePattern, $_POST['nome']))
{
    header("Location: insert.php?alert=3");
    die;
}
 
if (!ereg($CodicePattern, $_POST['codicefiscale']))
{
    header("Location: insert.php?alert=4");
    die;
}
 
Discussioni simili
Autore Titolo Forum Risposte Data
P [PHP] Problema inserimento nuove chiavi in array PHP 2
N [PHP/MySQL] Problema inserimento stringhe ' or ', ' and ' PHP 2
K [php] Problema con inner join PHP 4
K [PHP] Problema con variabili concatenate. PHP 1
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
D problema php mysql PHP 1
D problema php mysql PHP 1
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
A Problema checkout carrello php PHP 2
G Problema caricamento tabelle MySql da PhP PHP 0
M Problema con php per calcolo costo percentuale PHP 7
O Problema Formmail in PHP su Aruba PHP 0
WebmasterFioriniAndrea Chat e php [problema] PHP 3
L [PHP] Problema con Telegram PHP 1
WebmasterFioriniAndrea [PHP] Problema che non mi fa vedere niente PHP 2
K Help: problema con uno script di booking in php! PHP 0
A [PHP] Problema query insert [RISOLTO] PHP 14
N [Apache] problema con estensione php Apache 0
C [PHP] Problema con download file PHP 0
M [PHP] Problema con preg_match PHP 1
gandalf1959 [PHP] problema con l'utilizzo di Header PHP 3
K [RISOLTO] Problema Griglia Php+Mysql PHP 13
M [PHP] Problema con query select PHP 2
L Problema jQuery validation AJAX (PHP 7) PHP 6
L Problema funzione mail() PHP PHP 3
S [PHP] Problema con istruzione "use" PHP 23
A Problema PHP PHP 1
T [php] problema creazione query select-where PHP 5
M [PHP] problema if PHP 3
L [PHP] Problema su codice o server PHP 5
T [PHP] problema maggiore e minore PHP 4
Cosina [PHP] fwrite problema con le parole accentate PHP 9
M [PHP] Problema search form PHP 3
F [PHP] Problema con number_format PHP 3
L [PHP] problema count messo in una funzione. PHP 1
P [PHP] Progettino CRUD di esercitazione. Problema su $_FILE. PHP 9
trattorino [PHP] problema entrata immagini insert PHP 1
C Apache Cordova problema con php Programmazione 1
trattorino problema raccapricciante php conteggio query PHP 4
T PHP+MYSQL: problema con quelle maledette lettere accentate... PHP 5
F [PHP] Problema con array multidimensionale PHP 4
F Problema con pagine login in PHP PHP 2
M [PHP] Problema script ricezione e invio posta... PHP 1
Kolop [RISOLTO][PHP] Problema Pagination PHP 2
C [PHP] Problema Invio Email Elseif PHP 2
A [PHP] Problema invio mail con funzione mail() PHP 3
gandalf1959 problema con la codifica caratteri accentati e speciali tra php e mysql PHP 3
L [PHP] Problema Script 'Not Found' PHP 4
webmachine [PHP][MYSQL] Problema con le SELECT PHP 5
alessandra86 [PHP] Popolamento database con form ricorsivi - problema array (foreach ) PHP 5

Discussioni simili