inserimento dati in tabella

nim

Utente Attivo
11 Ott 2011
96
0
0
salve a tutti!!!
per voi sarà una fesseria ma io giuro che non ne vengo fuori!
sto imparando MySql e ho provato a fare una piccola applicazione per archiviare delle password in una tabella "archivio_password" in un database "passaword".
create le colonne id,programma,password,importanza ho fatto così nell'index.php:
PHP:
<form method="post" action="insert.php">
Programma: <input type="text" name="programma"><br>
password: <input type="text" name="password"><br>
importanza da 1 a 10: <input type="text" name="importanza"><br>
<input type="submit" value="archivia">
</form>

<?php
$message="";
if (isset($_GET['alert']))
{
if ($_GET['alert'] == 0) {$message="Password archiviate!";}
if ($_GET['alert'] == 1)
	{
		$message = "ERRORE: Nessun dato scritto nel database.<br>Tutti i campi devono essere completati!";
	}}
echo"$message";
?>

e nel file insert.php
PHP:
<?php
if (empty($_POST['programma']) OR empty($_POST['password']) OR empty($_POST['importanza']))
{
header("location: index.php?alert=1");
die;
}
include ".include/db_connect.php";
$sql = "INSERT INTO archivio_password (programma,password,importanza) VALUES ('$_POST[programma]','$_POST[password]','$_POST[importanza]')";
mysql_query($sql , $conn);
header("location: index.php?alert=0");
?>
chiaramente anche il file di connessione al database db_connect.php
PHP:
<?php
 
$db = "password";
$host = "localhost";
$username = "root";
 
if(!$conn = @mysql_connect($host,$username))
{
	echo 'Impossibile connettersi a MySql';
	die;
}
 
if(!@mysql_select_db($db,$conn))
{
	echo "Impossibile selezionare il database $db";
	die;
}
 
?>
una volta scritti i dati nel modulo mi viene l'avviso "password archiviate!" però quando guardo su phpmyadmin scopro che non ha salvato proprio niente..mi aiutereste?
grazie in anticipo.
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
metti due var_dump

PHP:
//...
include ".include/db_connect.php";
$sql = "INSERT INTO archivio_password (programma,password,importanza) VALUES ('$_POST[programma]','$_POST[password]','$_POST[importanza]')";
var_dump($sql );//vedi se la stringa viene scritta giusta
//metti una variabile
$ris=mysql_query($sql , $conn);
var_dump($ris);//si ti da Bool (FALSE) la query non viene eseguita, se ti da resuorce si
//...
poi verifichi che i nomi che hai messo in
archivio_password (programma,password,importanza)
siano PERFETTAMENTE uguali a quelli che hai nella tabella, compreso maiscole/minuscole

dimenticavo:
nella tabella hai messo un id autoincrement primary key?
 

nim

Utente Attivo
11 Ott 2011
96
0
0
grazie della risposta intanto...
ho messo i due var_dump ma non mi da niente di diverso da prima..
e comunque sì, ho messo un id AI con chiave primaria...
ah, ho controllato, corrisponde tutto con quello che c'è nel database e nella tabella...
 
Ultima modifica:

Monital

Utente Attivo
15 Apr 2009
778
2
18
Quando fa l'insert devi rispettare tutte le colonne quindi se hai una colonna di nome id,immagino in autoincrement
la tu ainsert

PHP:
$sql = "INSERT INTO archivio_password (programma,password,importanza) VALUES ('$_POST[programma]','$_POST[password]','$_POST[importanza]')";

diventa

PHP:
$sql = "INSERT INTO archivio_password (programma,password,importanza) VALUES ('','$_POST[programma]','$_POST[password]','$_POST[importanza]')";

ovviamente il campo vuoto devi lasciarla nella poszione in cui ti trovi la colonna id, inq uesto caso la prima colonna
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
mi era sfuggita :crying: :crying: :crying:una cosa importante

PHP:
$sql = "INSERT INTO archivio_password (programma,password,importanza) VALUES ('$_POST[programma]','$_POST[password]','$_POST[importanza]')";
correggi in

PHP:
$sql = "INSERT INTO archivio_password (programma,password,importanza) VALUES ('".$_POST['programma']."','".$_POST['password']."','".$_POST['importanza']."')";

p.s.
non è che i var_dump modofichino
servono per vedere i valori restituiti da una variabile o funzione o altro, vedendo quello che restituiscono si puo, non sempre, capire dove si annida l'errore
es. se il primo var_dump ti avesse riestituito
String(nn) "INSERT INTO archivio_password (programma,password,importanza) VALUES ('','mia pasword','molto')"
ti saresti accorto che non trasmetti il valore di $_POST['programma'] quindi risalendo vedere perchè non viene trasmesso
 

nim

Utente Attivo
11 Ott 2011
96
0
0
ok ho effettuato i dovuti cambiamenti ma niente...proprio non c'è verso...non si salvano nel database ma non vengono neanche errori di connessione o simili ...sembra tutto apposto tranne che non salva effettivamente quello che vorrei...
 
Ultima modifica:

nim

Utente Attivo
11 Ott 2011
96
0
0
sì chiedo scusa.. è che non succede niente, non mi dice niente , tutto come prima: password archiviate e sembra tutto ok se non che...non ha archiviato un piffero...
ho provato così
PHP:
<?php 
if (empty($_POST['programma']) or empty($_POST['password']) or empty($_POST['importanza'])) 
{ 
header("location: index.php?alert=1"); 
} 
include ".include/db_connect.php"; 
$sql = "INSERT INTO archivio_password (programma,password,importanza) VALUES ('".$_POST['programma']."','".$_POST['password']."','".$_POST['importanza']."')";  
mysql_query($sql , $conn) or die("Errore: ".mysql_error); 
header("location: index.php?alert=0"); 
?>
e mi da questa schermata di errore http://www.icfast.altervista.org/errori.JPG
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se i var_dump non si vedono vuol dire che le righe non vengono eseguite ne $sql ne il mysql_query, quindi anche se fossere errate non ti danno errore perche non eseguite
prova a invertire l'if e metti un else

PHP:
<?php 
if (!empty($_POST['programma']) && !empty($_POST['password']) && !empty($_POST['importanza'])) 
{
include "include/db_connect.php"; 
$sql = "INSERT INTO archivio_password (programma,password,importanza) VALUES ('".$_POST['programma']."','".$_POST['password']."','".$_POST['importanza']."')";
var_dump($sql); 
$ris=mysql_query($sql , $conn) or die("Errore: ".mysql_error); 
var_dump($ris);
header("location: index.php?alert=0"); 
}else{
header("location: index.php?alert=1"); 
}
?>
quell'errore che ti da errore http://www.icfast.altervista.org/errori.JPG non so cosa sia esattamente dall'jpg per quel che si legge sembra che non trovi il file di connessione db:connect.php (intanto togli quel punto davanti)
 

nim

Utente Attivo
11 Ott 2011
96
0
0
sì!!! ora funziona tutto!!!
ma perchè quest'inversione.? cioè come ha fatto a venirti in mente...non ho capito bene perchè e cosa avevo sbagliato...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
per l'inversione è diciamo un mio stile.
l'errore era soprattutto per il . davanti all'include per cui, non avendo i dati di connessione, non faceva la query, mentre l'header location si (per quello ti diceva inserimento OK).
poi conviene sempre quando hai due o più possibilità di inserire l'else (e se serve l'elseif) per essere sicuro o che fa l'una o l'altra.
fare come ho fatto io o come (circa) hai fatto tu è la medesima cosa

PHP:
<?php  
if (empty($_POST['programma']) || empty($_POST['password']) || empty($_POST['importanza'])){ 
	header("location: index.php?alert=1");
}else{ //questo invece secondo me serve
	include "include/db_connect.php";  
	$sql = "INSERT INTO archivio_password (programma,password,importanza) VALUES ('".$_POST['programma']."','".$_POST['password']."','".$_POST['importanza']."')"; 
	mysql_query($sql , $conn) or die("Errore: ".mysql_error);  
	header("location: index.php?alert=0");  
} 
?>
analogo discorso per quando leggi i get di ritorno

PHP:
<?php
$message="";
if (isset($_GET['alert'])){
	if ($_GET['alert'] == 0){
		$message="Password archiviate!";
	}elseif($_GET['alert'] == 1){
        $message = "ERRORE: Nessun dato scritto nel database.<br>Tutti i campi devono essere completati!";
    }
}
echo"$message";
?>
p.s.
comunque in precedenza avevo detto una put....ta:
per forza non vedi i var_dump, non fai intempo perchè l'eader location ti dirotta subito e quindi (anche se ci sono) il loro tempo di permanenza a monitor e quasi zero

ps al p.s
visto che stai imparando:
indenta sempre il codice poi è più facile rileggerlo, qui è semplice, ma se poi farai script più lunghi e complessi capirai meglio quello che hai fatto
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
visto che stai imparando:
indenta sempre il codice poi è più facile rileggerlo, qui è semplice, ma se poi farai script più lunghi e complessi capirai meglio quello che hai fatto

Sacorsanto, inoltre metti anche dei filtri ai parametri di input (non basta controllare che non siano vuoti), l'applicazione ne guadagna in sicurezza.
 
Discussioni simili
Autore Titolo Forum Risposte Data
E Inserimento dati da PHP in tabella MySQL PHP 5
P Inserimento in tabella da select + altri dati MySQL 2
J Problema con inserimento dati tabella PHP 4
D ACCESS 2003 - Inserimento dati in tabella MS Access 0
L inserimento form dati multipli ? PHP 0
J Form inserimento dati in database Ajax 1
A Inserimento dati nel database tramite form + altre operazioni PHP 18
Alex_70 Inserimento dati a cascata PHP 204
T Da xsd a xml ed inserimento dati in excel XML 0
S [PHP] email con inserimento dati nel database PHP 23
G [Javascript] Errore inserimento dati Backend Node.js e workbench Javascript 1
B [PHP] Creare PDF dopo inserimento dati form PHP 4
C [PHP] Form con Inserimento dati dalla maschera e un menù a discesa che prende i dati dal db PHP 1
E Form inserimento dati con JavaScript Javascript 0
K [PHP] Inserimento dati database con postgres PHP 2
K [PHP + MYSQL ] Inserimento dati in database da form dinamico PHP 13
M Inserimento dati checkbox multipli in db da ajax a php PHP 1
M [PHP] errore in semplie form inserimento dati PHP 7
S [PHP] Inserimento dati su tabelle collegate 1-m PHP 17
M [PHP] controllo inserimento dati un un form PHP 4
cris8380 [PHP] Generare file pdf con inserimento dati PHP 34
cris8380 Inserimento dei dati automatici mediante numero di tessera. PHP 21
G mysql - problemi inserimento dati nel database, consigli. MySQL 3
J Inserimento dati in db da due o più form PHP 0
P problemi inserimento dati PHP 1
S Trigger con inserimento dati preesistenti MySQL 0
G Estrazioni dati dal database e inserimento nella pagina html Database 11
A Aiuto form inserimento dati PHP 3
T Problema inserimento dati in phpmyadmin PHP 2
P scritta di avviso inserimento dati corretti che non vuole scendere verso il basso PHP 4
D Verifica inserimento dati form PHP 12
M Problema inserimento dati in sqlite Sviluppo app per Android 1
L Cerco lavoro retribuito,mi offro come articolista,inserimento dati,promozione siti,blog,forum Offerte e Richieste di Lavoro e/o Collaborazione 1
M Problema con modulo registrazione e inserimento dati in database PHP 8
otto9due Piccolo problemino su inserimento dati db da form PHP 5
M chiusura colorbox dopo inserimento dati in un database tramite form PHP 0
S Inserimento dati in colonna mysql PHP 10
N Inserimento dati in db che avviene due volte PHP 1
K Controllo esistenza dati e inserimento in db ASP.NET 2
B Problema inserimento dati con apostrofo MySQL 1
M [RISOLTO] inserimento dati db PHP 22
L Inserimento dati nel database. PHP 3
M Inserimento dati in db mysql dopo aver confermato e-mail PHP 7
D tabelle e inserimento dati nel database PHP 2
G Arresto dello script per inserimento dati. PHP 4
P Problemi inserimento dati con checkbox multiplo PHP 17
P Problemi inserimento dati database tramite form PHP 12
P Controllo inserimento dati Javascript 6
Z Aiuto! problemi di inserimento dati da form PHP 9
lab php e html - inserimento di dati in database e aggiornamento della pagina html PHP 2

Discussioni simili