• Home
  • Forum
  • Fare Web
  • PHP

inserimento dati in tabella

  • Creatore Discussione Creatore Discussione nim
  • Data di inizio Data di inizio 16 Dic 2011

nim

Utente Attivo
11 Ott 2011
96
0
0
  • 16 Dic 2011
  • #1
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: 16 Dic 2011

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 16 Dic 2011
  • #2
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
  • 16 Dic 2011
  • #3
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: 16 Dic 2011

Monital

Utente Attivo
15 Apr 2009
778
2
18
  • 16 Dic 2011
  • #4
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.044
150
63
PR
www.borgo-italia.it
  • 16 Dic 2011
  • #5
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
  • 16 Dic 2011
  • #6
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: 16 Dic 2011

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 16 Dic 2011
  • #7
ciao
però non mi hai ancora detto cosa ti restituiscono i due var_dump
 

nim

Utente Attivo
11 Ott 2011
96
0
0
  • 16 Dic 2011
  • #8
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: 16 Dic 2011

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 16 Dic 2011
  • #9
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
  • 17 Dic 2011
  • #10
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.044
150
63
PR
www.borgo-italia.it
  • 17 Dic 2011
  • #11
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
  • 17 Dic 2011
  • #12
borgo italia ha scritto:
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
Clicca per allargare...

Sacorsanto, inoltre metti anche dei filtri ai parametri di input (non basta controllare che non siano vuoti), l'applicazione ne guadagna in sicurezza.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 17 Dic 2011
  • #13
ciao
Eliox ha scritto:
Sacorsanto, inoltre metti anche dei filtri ai parametri di input (non basta controllare che non siano vuoti), l'applicazione ne guadagna in sicurezza.
Clicca per allargare...
oltre ai filtri ricordati di cambiare anche l'olio
 
Devi accedere o registrarti per poter rispondere.

Discussioni simili

E
Inserimento dati da PHP in tabella MySQL
  • etto.demu
  • 1 Giu 2019
  • PHP
Risposte
5
Visite
3K
PHP 3 Giu 2019
zorro
P
Inserimento in tabella da select + altri dati
  • peppeocchi
  • 28 Apr 2013
  • MySQL
Risposte
2
Visite
1K
MySQL 28 Apr 2013
peppeocchi
P
J
Problema con inserimento dati tabella
  • JerryLeeLewis
  • 30 Mar 2011
  • PHP
Risposte
4
Visite
2K
PHP 30 Mar 2011
JerryLeeLewis
J
D
ACCESS 2003 - Inserimento dati in tabella
  • davidepal
  • 12 Ott 2009
  • MS Access
Risposte
0
Visite
3K
MS Access 12 Ott 2009
davidepal
D
L
inserimento form dati multipli ?
  • luigithen
  • 13 Mag 2021
  • PHP
Risposte
0
Visite
1K
PHP 13 Mag 2021
luigithen
L
J
Form inserimento dati in database
  • jerweb
  • 29 Gen 2021
  • Ajax
Risposte
1
Visite
4K
Ajax 5 Feb 2021
_SAGO
A
Inserimento dati nel database tramite form + altre operazioni
  • AndreaBet
  • 5 Giu 2020
  • PHP
Risposte
18
Visite
2K
PHP 5 Giu 2020
AndreaBet
A
Inserimento dati a cascata
  • Alex_70
  • 25 Apr 2020
  • PHP
  • 9 10 11
Risposte
204
Visite
16K
PHP 28 Mag 2020
Alex_70
T
Da xsd a xml ed inserimento dati in excel
  • tappa81
  • 23 Apr 2020
  • XML
Risposte
0
Visite
2K
XML 23 Apr 2020
tappa81
T
S
[PHP] email con inserimento dati nel database
  • sal88
  • 23 Nov 2019
  • PHP
  • 2
Risposte
23
Visite
4K
PHP 27 Nov 2019
Max 1
G
[Javascript] Errore inserimento dati Backend Node.js e workbench
  • giorgio85
  • 8 Ott 2019
  • Javascript
Risposte
1
Visite
1K
Javascript 28 Ott 2019
macus_adi
B
  • Bloccata
[PHP] Creare PDF dopo inserimento dati form
  • bipolare75
  • 28 Set 2019
  • PHP
Risposte
4
Visite
4K
PHP 28 Set 2019
Max 1
E
Form inserimento dati con JavaScript
  • Emidio
  • 9 Mar 2019
  • Javascript
Risposte
0
Visite
2K
Javascript 9 Mar 2019
Emidio
E
K
[PHP] Inserimento dati database con postgres
  • keyz23
  • 3 Ott 2018
  • PHP
Risposte
2
Visite
2K
PHP 3 Ott 2018
keyz23
K
K
[PHP + MYSQL ] Inserimento dati in database da form dinamico
  • keyz23
  • 13 Set 2018
  • PHP
Risposte
13
Visite
12K
PHP 11 Ott 2019
marino51
M
Inserimento dati checkbox multipli in db da ajax a php
  • migo80
  • 23 Apr 2018
  • PHP
Risposte
1
Visite
2K
PHP 23 Apr 2018
migo80
M
M
[PHP] errore in semplie form inserimento dati
  • maxdp
  • 13 Nov 2016
  • PHP
Risposte
7
Visite
2K
PHP 18 Nov 2016
maxdp
M
S
[PHP] Inserimento dati su tabelle collegate 1-m
  • solari77
  • 6 Ott 2016
  • PHP
Risposte
17
Visite
4K
PHP 17 Ott 2016
borgo italia
M
[PHP] controllo inserimento dati un un form
  • MoPa
  • 4 Ago 2016
  • PHP
Risposte
4
Visite
6K
PHP 7 Lug 2018
Max 1
[PHP] Generare file pdf con inserimento dati
  • cris8380
  • 10 Giu 2016
  • PHP
  • 2
Risposte
34
Visite
12K
PHP 18 Giu 2016
cris8380
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?