PDA

View Full Version : [PHP] Creazione pannello inserimento dati


ygnoto
22-07-2005, 17:42
Sto creando un pannello spartano per l'inserimento degli articoli...

Ho creato una pagina config.inc.php con all'interno le istruzioni per connettersi al database...


Codice PHP:
<?php
$db_host = "localhost";
$db_user = "root";
$db_password = "mia_password";
$db_name = "test";
$password = "ciao";
?>


Poi tramite la pagina insert.htm invio i valori:


Codice HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento senza titolo</title>
</head>

<body>
<form method=post action=save.php>
<br>
Materia:<br>
<select name=materia>
<option value=1>Fisica
<option value=2>Chimica
<option value=3>Biologia
<option value=4>Matematica
<option value=5>Astronomia
<option value=6>Scienze della terra
<option value=7>Medicina
</option></select><br><br>
Titolo:<br>
<input type=text size=40 name=titolo><br><br>
Descrizione:<br>
<textarea cols=80 rows=5 name=descrizione></textarea><br><br>
Articolo:<br>
<textarea cols=80 rows=20 name=articolo></textarea><br><br>
Autore:<br>
<input type=text size=40 name=autore><br><br>
Mail:<br>
<input type=text size=40 name=mail><br><br>
Password:<br>
<input type=password size=20 name=pass><br><br>
<input type=submit value=Invia><br>
</form>
</body>
</html>


Adesso la pagina save.php che riceve i valori...


Codice PHP:
<?php
include("config.inc.php");
if($pass != $password):
echo "Password errata";
elseif(trim($titolo) == "" OR trim($descrizione) == "" OR trim($articolo) == "" OR trim($autore) == "" OR trim($mail) == ""):
echo "Alcuni campi non sono stati compilati!!!";
else:
$titolo = addslashes(stripslashes($titolo));
$descrizione = addslashes(stripslashes($descrizione));
$articolo = addslashes(stripslashes($articolo));
$autore = addslashes(stripslashes($autore));
$mail = addslashes(stripslashes($mail));
$titolo = str_replace("<", "&lt;", $titolo);
$titolo = str_replace(">", "&gt;", $titolo);
$descrizione = str_replace("<", "&lt;", $descrizione);
$descrizione = str_replace(">", "&gt;", $descrizione);
$articolo = str_replace("<", "&lt;", $articolo);
$articolo = str_replace(">", "&gt;", $articolo);
$articolo = nl2br($articolo);
$autore = str_replace("<", "&lt;", $autore);
$autore = str_replace(">", "&gt;", $autore);
$db = mysql_connect($db_host, $db_user, $db_password);
if($db == FALSE)
die("Errore nella connessione. Verificare i parametri nel file config.inc.php");
mysql_select_db($db_name, $db)
or die("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
$query = "INSERT INTO articoli (materia, titolo, descrizione, articolo, autore, mail) VALUES ('$materia', '$titolo', '$descrizione', '$articolo', '$autore', '$mail')";
if(mysql_query($query, $db))
echo "L'articolo è stato inserito correttamente";
else
echo"Errore durante l'inserimento";
mysql_close($d); endif;
?>


Il problema è che quando vado ad inserire l'articolo mi dà sempre che la password è errata... perchè

Grazie :D

fabio1883
22-07-2005, 17:48
Scusa la domanda: ma hai inserito la stessa password che hai scelto durante l'installazione del server mysql?

ygnoto
22-07-2005, 17:56
Scusa la domanda: ma hai inserito la stessa password che hai scelto durante l'installazione del server mysql?

Che intendi...???

Io inserisco la password "ciao" che ho settato come password per l'inserimento articoli in config.inc.php...

fabio1883
22-07-2005, 18:01
per utilizzare un database mysql devi settare un nome utente e una password; di solito questo si fa al momento dell'installazione del server mysql...
Non puoi scegliere una password all'interno del file .inc.php senza avere configurato con tale password il server! Il file inc.php passerà i valori al server, il server verifica se l'utente ha i permessi e dopo ciò concede l'accesso ai dati.

Spero di essere stato abbastanza chiaro

ygnoto
22-07-2005, 18:06
per utilizzare un database mysql devi settare un nome utente e una password; di solito questo si fa al momento dell'installazione del server mysql...
Non puoi scegliere una password all'interno del file .inc.php senza avere configurato con tale password il server! Il file inc.php passerà i valori al server, il server verifica se l'utente ha i permessi e dopo ciò concede l'accesso ai dati.

Spero di essere stato abbastanza chiaro

Se leggi bene i sorgenti, noti che il problema non è nella connessione al database, tra l'altro già ho fatto qualche prova... se vedi bene io ho creato una password di sicurezza... con all'intervo il valore "ciao" quindi vado a immettere la password, non del database, ma per inserire l'articolo...
Infatti quando mi dice la password è errata, non ho ancora effettuato la connessione al database, infatti, questa avverrà solo quando avrà verificato che la password di autenticazione è corretta... ;)

Capito adesso??? Oppure sono i che mi sbaglio... :doh:

Ciao :D

fabio1883
22-07-2005, 18:13
Prova ad aggiungere questa riga nel file save.php prima di tutto:
$pass = ($_POST['pass']);

fammi sapere

ygnoto
22-07-2005, 18:17
Adesso ho risolto con la password, ma mi dà che gli sltri campi non funzionano...

Allora mi sa che il problema è lo stesso... seguo il tuo consiglio per le altre variabili...


Grazie 1000 :D

fabio1883
22-07-2005, 18:20
Di niente!

Buon lavoro ;)

ygnoto
22-07-2005, 18:35
Non è finita...

<?php
include("config.inc.php");
if($_POST['pass'] != $password):
echo "Password errata";
elseif(trim($_POST['titolo']) == "" OR trim($_POST['descrizione']) == "" OR trim($_POST['articolo']) == "" OR trim($_POST['autore']) == "" OR trim($_POST['mail']) == ""):
echo "Alcuni campi non sono stati compilati!!!";
else:
$_POST['titolo'] = addslashes(stripslashes($_POST['titolo']));
$_POST['descrizione'] = addslashes(stripslashes($_POST['descrizione']));
$_POST['articolo'] = addslashes(stripslashes($_POST['articolo']));
$_POST['autore'] = addslashes(stripslashes($_POST['autore']));
$_POST['mail'] = addslashes(stripslashes($_POST['mail']));
$_POST['titolo'] = str_replace("<", "&lt;", $_POST['titolo']);
$_POST['titolo'] = str_replace(">", "&gt;", $_POST['titolo']);
$_POST['descrizione'] = str_replace("<", "&lt;", $_POST['descrizione']);
$_POST['descrizione'] = str_replace(">", "&gt;", $_POST['descrizione']);
$_POST['articolo'] = str_replace("<", "&lt;", $_POST['articolo']);
$_POST['articolo'] = str_replace(">", "&gt;", $_POST['articolo']);
$_POST['articolo'] = nl2br($_POST['articolo']);
$_POST['autore'] = str_replace("<", "&lt;", $_POST['autore']);
$_POST['autore'] = str_replace(">", "&gt;", $_POST['autore']);
$db = mysql_connect($db_host, $db_user, $db_password);
if($db == FALSE)
die("Errore nella connessione. Verificare i parametri nel file config.inc.php");
mysql_select_db($db_name, $db)
or die("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
$query = "INSERT INTO articoli (materia, titolo, descrizione, articolo, autore, mail) VALUES ('$_POST['materia']', '$_POST['titolo']', '$_POST['descrizione']', '$_POST['articolo']', '$_POST['autore']', '$_POST['mail']')";
if(mysql_query($query, $db))
echo "L'articolo è stato inserito correttamente";
else
echo "Errore durante l'inserimento";
mysql_close($d);
?>

Ho risolte le variabili... ma adesso da un errore di sintassi...

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\Programmi\Apache Group\Apache2\public_html\save.php on line 27

Esattamente questa riga:

$query = "INSERT INTO articoli (materia, titolo, descrizione, articolo, autore, mail) VALUES ('$_POST['materia']', '$_POST['titolo']', '$_POST['descrizione']', '$_POST['articolo']', '$_POST['autore']', '$_POST['mail']')";

Help me... :(

Grazie :D

fabio1883
22-07-2005, 21:46
Prova a cambiare tutte le righe in questo modo:

$titolo = addslashes(stripslashes($_POST['titolo']));

Nella insert inserisci poi la stringa $titolo, ecc.

Ma prima di fare la INSERT l'hai creata la tabella?

CIAO

ygnoto
22-07-2005, 22:36
Adesso dovrebbe essere tutto corretto...

Ho risolto gran parte dei problemi, adesso il problema... e proprio nell'inserimento dei dati...

<?php
include("config.inc.php");
if($_POST['pass'] != $password):
echo "Password errata";
elseif(trim($_POST['titolo']) == "" OR trim($_POST['descrizione']) == "" OR trim($_POST['articolo']) == "" OR trim($_POST['autore']) == "" OR trim($_POST['mail']) == ""):
echo "Alcuni campi non sono stati compilati!!!";
else:
$_POST['titolo'] = addslashes(stripslashes($_POST['titolo']));
$_POST['descrizione'] = addslashes(stripslashes($_POST['descrizione']));
$_POST['articolo'] = addslashes(stripslashes($_POST['articolo']));
$_POST['autore'] = addslashes(stripslashes($_POST['autore']));
$_POST['mail'] = addslashes(stripslashes($_POST['mail']));
$_POST['titolo'] = str_replace("<", "&lt;", $_POST['titolo']);
$_POST['titolo'] = str_replace(">", "&gt;", $_POST['titolo']);
$_POST['descrizione'] = str_replace("<", "&lt;", $_POST['descrizione']);
$_POST['descrizione'] = str_replace(">", "&gt;", $_POST['descrizione']);
$_POST['articolo'] = str_replace("<", "&lt;", $_POST['articolo']);
$_POST['articolo'] = str_replace(">", "&gt;", $_POST['articolo']);
$_POST['articolo'] = nl2br($_POST['articolo']);
$_POST['autore'] = str_replace("<", "&lt;", $_POST['autore']);
$_POST['autore'] = str_replace(">", "&gt;", $_POST['autore']);
$db = mysql_connect($db_host, $db_user, $db_password);
if($db == FALSE)
die("Errore nella connessione. Verificare i parametri nel file config.inc.php");
mysql_select_db($db_name, $db)
or die("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
$query = "INSERT INTO articoli (materia, titolo, descrizione, articolo, autore, mail) VALUES ('$_POST[materia]','$_POST[titolo]', '$_POST[descrizione]', '$_POST[articolo]', '$_POST[autore]', '$_POST[mail]')";
if(mysql_query($query, $db))
echo "L'articolo è stato inserito correttamente";
else
echo "Errore durante l'inserimento";
mysql_close($db);
endif;
?>

Dà "Errore durante l'inserimento"... :muro:

Aiutatemi... :cry:

Alvaro Vitali
22-07-2005, 23:53
Prova a stampare il dettaglio dell'errore per saperne di più:

if(mysql_query($query, $db))
echo "L'articolo è stato inserito correttamente";
else
echo 'Errore durante l'inserimento: ' . mysql_error();

ygnoto
23-07-2005, 22:59
Prova a stampare il dettaglio dell'errore per saperne di più:

if(mysql_query($query, $db))
echo "L'articolo è stato inserito correttamente";
else
echo 'Errore durante l'inserimento: ' . mysql_error();


Infatti... un errore stupido nel database... la colonna titolo... :(

Non esisteva ma esisteva quella titlo... :stordita:

Enjoy :D