View Full Version : [PHP] Miglioramento script
Ciao ragazzi, ho scritto questo script che inserisce dei dati trasmetti tramite form in un database mysql.
Mi chiedevo, come posso aggiungere un controllo se i dati inseriti sono già esistenti all'interno del database?
ps: ho aggiunto un controllo sul nome incluso dentro una funzione e richiamato per valutarne il risultato, true o false, ho fatto male?
vedo che lo script funziona.
<html>
<head>
<body>
come vi sembra?
<?
require 'connect.php';
require 'config.php';
function controllodati()
{
if ( empty($_POST['nome']) ) die ('Il campo nome è obbligatorio');
}
$query= "insert into glossario (nome, descrizione) values ('{$_POST['nome']}', '{$_POST['descrizione']}')";
$result= mysql_query($query);
if(controllodati()==true) {
die ('impossibile continuare');
}
else {
if(!$result) {
die ('Inserimento non riuscito'.mysql_error());
}
}
mysql_close();
echo 'Inserimento avvenuto con successo';
?>
<br>
<a href="form.html"> Torna al form di inserimento </a>
<br>
<a href="leggi.php"> Visualizza tutti i valori esistenti nel database </a>
</head>
</body>
</html>
bobbytre
17-02-2011, 13:57
non ha senso fare il controllo dei dati DOPO aver gia eseguito la query sul database
e poi la tua funzione di controllo non ritorna un valore TRUE/FALSE
non ha senso fare il controllo dei dati DOPO aver gia eseguito la query sul database
e poi la tua funzione di controllo non ritorna un valore TRUE/FALSE
non mi ero accorto di aver messo la funzione dopo la query.
Mi spiegheresti come modificare la funzione?
scusa ma sono alle prima armi.
grazie
così?
<html>
<head>
<body>
<?
require 'connect.php';
require 'config.php';
function controllodati()
{
if ( empty($_POST['nome']) )
{ die ('impossibile'); ;
}
}
controllodati();
$query= "insert into glossario (nome, descrizione) values ('{$_POST['nome']}', '{$_POST['descrizione']}')";
$result= mysql_query($query);
if(!$result) {
die ('Inserimento non riuscito'.mysql_error());
}
mysql_close();
echo 'Inserimento avvenuto con successo';
?>
<br>
<a href="form.html"> Torna al form di inserimento </a>
<br>
<a href="leggi.php"> Visualizza tutti i valori esistenti nel database </a>
</head>
</body>
</html>
bobbytre
17-02-2011, 14:23
prova con qualcosa del genere ...
<?php
//--
require 'connect.php';
require 'config.php';
function controllodati()
{
if ( empty($_POST['nome']) )
return TRUE;
else
return FALSE;
}
function mia_funzione_di_pulizia_e_controllo($a)
{
// ad esempio ...
$s = mysql_real_escape_string($a);
// eventuali altri controlli ...
return $s;
}
if( controllodati() )
{
// controllo fallito !
// gestisco questa situazione , esco o redirect a una pagina di errore ...
header("Location: error.php");
}
$nome = mia_funzione_di_pulizia_e_controllo($_POST['nome']);
$desc = mia_funzione_di_pulizia_e_controllo($_POST['descrizione']);
$query= "insert into glossario (nome, descrizione) values ('".$nome."', '".$desc."')";
$result= mysql_query($query);
// ecc... ecc...
?>
<html>
bla...
bla...
</html>
grazie infinite adesso studierò il tuo metodo però prima vorrei chiederti una cosa ( devo capire bene i miei errori ) approfittando della tua gentilezza.
perchè così mi ritorna sempre la scritta impossibile???
il simbolo || non significa or?
<?
require 'connect.php';
require 'config.php';
function controllodati()
{
if ( empty($_POST['nome']) || "SELECT * FROM glossario WHERE nome='{$_POST['nome']}'") {
die ('impossibile');
}
}
controllodati();
$query= "insert into glossario (nome, descrizione) values ('{$_POST['nome']}', '{$_POST['descrizione']}')";
$result= mysql_query($query);
if(!$result) {
die ('Inserimento non riuscito'.mysql_error());
}
mysql_close();
echo 'Inserimento avvenuto con successo';
?>
bobbytre
17-02-2011, 19:39
la condizione del tuo if si verifica se anche una delle due tue condizione risulta vera.
if ( empty($_POST['nome']) ) , puo risultare sia vera che falsa in base all'argomento passato a empty , quindi è corretto usarlo .
if ( "SELECT * FROM glossario WHERE nome='{$_POST['nome']}'")
risulta sempre verificata perche in PHP una stringa che contiene testo è vera a meno che la stringa non contenga uno 0
quindi ora capisci da solo che la condizione del tuo IF è sempre verificata quindi ti ritorna la scritta impossibile.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.