Reputation: 57
I am having an issue, I am trying to create a form registration but this page will be accessible only by staff people.
So I have: <?php if($_SESSION['id'])
to verify the users if they are logged in and display the echo to this users.
I am having trouble to insert the Birthday registration as I use PHP to calculate the years, months and days. Here is the part of the code
if($_POST['submit']=='Rregjistro')
{
// If the Register form has been submitted
$err = array();
if(strlen($_POST['emri'])<4 || strlen($_POST['emri'])>32)
{
$err[]='Emri duhet te permbaje nga 3 deri 32 karaktere!';
}
if(preg_match('/[^a-z0-9\-\_\.]+/i',$_POST['emri']))
{
$err[]='Emri juaj permban karakter te palejueshme!';
}
if(strlen($_POST['atesia'])<4 || strlen($_POST['atesia'])>32)
{
$err[]='Atesia duhet te permbaje nga 3 deri 32 karaktere!';
}
if(preg_match('/[^a-z0-9\-\_\.]+/i',$_POST['atesia']))
{
$err[]='Atesia juaj permban karakter te palejueshme!';
}
if(strlen($_POST['mbiemri'])<4 || strlen($_POST['mbiemri'])>32)
{
$err[]='Mbiemri duhet te permbaje nga 3 deri 32 karaktere!';
}
if(preg_match('/[^a-z0-9\-\_\.]+/i',$_POST['mbiemri']))
{
$err[]='Mbiemri juaj permban karakter te palejueshme!';
}
if(strlen($_POST['vendlindja'])<4 || strlen($_POST['vendlindja'])>32)
{
$err[]='Vendlindja duhet te permbaje nga 3 deri 32 karaktere!';
}
if(preg_match('/[^a-z0-9\-\_\.]+/i',$_POST['vendlindja']))
{
$err[]='Vendlindja juaj permban karakter te palejueshme!';
}
if(strlen($_POST['vendbanimi'])<4 || strlen($_POST['vendbanimi'])>32)
{
$err[]='Vendbanimi duhet te permbaje nga 3 deri 32 karaktere!';
}
if(preg_match('/[^a-z0-9\-\_\.]+/i',$_POST['vendbanimi']))
{
$err[]='Vendbanimi juaj permban karakter te palejueshme!';
}
if(strlen($_POST['telefon'])<4 || strlen($_POST['telefon'])>10)
{
$err[]='Telefoni duhet te permbaje nga 5 deri 10 numra!';
}
if(preg_match('/[^a-z0-9\-\_\.]+/i',$_POST['telefon']))
{
$err[]='Telefoni juaj permban karakter te palejueshme!';
}
if(!count($err))
{
$_POST['emri'] = mysql_real_escape_string($_POST['emri']);
$_POST['atesia'] = mysql_real_escape_string($_POST['atesia']);
$_POST['mbiemri'] = mysql_real_escape_string($_POST['mbiemri']);
$_POST['vendlindja'] = mysql_real_escape_string($_POST['vendlindja']);
$_POST['vendbanimi'] = mysql_real_escape_string($_POST['vendbanimi']);
$_POST['telefon'] = mysql_real_escape_string($_POST['telefon']);
$_POST['zona'] = mysql_real_escape_string($_POST['zona']);
// Escape the input data
mysql_query("INSERT INTO antaret(ID,emri,atesia,mbiemri,ditelindja,vendlindja,vendbanimi,telefon,zona,regtime)
VALUES('".$_POST['emri']."','".$_POST['atesia']."','".$_POST['mbiemri']."','".$date."','".$_POST['vendlindja']."','".$_POST['vendbanimi']."','".$_POST['telefon']."','".$_POST['zona']."',NOW())");
}
}
I guess I have something wrong in the code but is missing to my eyes and also I have no error response so I guess is something with the query.
Thank you
Upvotes: 1
Views: 49
Reputation: 48357
"I am having trouble inserting ..." is not a useful diagnostic. The mysql extension (and its replacements) provide an API to capture why something has failed:
$qry=("INSERT INTO antaret
(ID, emri,
atesia, mbiemri,
ditelindja, vendlindja,
vendbanimi, telefon,
zona, regtime)
VALUES
('".$_POST['emri']."','".$_POST['atesia']."','"
.$_POST['mbiemri']."','".$date."','"
.$_POST['vendlindja']."','".$_POST['vendbanimi']."','"
.$_POST['telefon']."','".$_POST['zona']."',
NOW()
)");
$result = mysql_query($qry);
if (false===$result) {
print "Query failed: " . mysql_error() . "<br /><br />" . $qry;
}
This might have given you a clue that there is a difference in the number of columns declared in the statement and the number of values. Formatting your SQL so it is readable might have given you a clue.
BTW you should read up on SQL injection before you expose this on the internet.
Upvotes: 0
Reputation: 324
You SQL query seems incorrect, the column count doesn't match, you are trying to insert into 10 columns but you are providing only 9 values, you are missing 'ID' value in your query.
Upvotes: 1