Jump to content

[SOLVED] Auto_increment


emediastudios

Recommended Posts

Hi everyone.

I have made a code that adds properties to a website, it uploads images, and inserts all the data(property details and image paths) to my database.

It works well except for one thing, i cant get the auto_increment to work.

I had the auto_increment field as "hidden" in my add_property.php file and it wouldnt work.

If i had the field not hidden and added a number it works, and if that number is the same as as a other property id it replaces it.

Do i need that field in my file at all? and should i even have it in my insert statement?

Shouldnt that insert automatically my id in an auto increment.

I am unable also to set a default value in my id field.

here is my table structure.

 

# Table structure for table `employees`

#

 

DROP TABLE IF EXISTS `employees`;

CREATE TABLE `employees` (

  `id` int(4) NOT NULL auto_increment,

  `name` varchar(100) default NULL,

  `rank` int(10) default NULL,

  `suburb` varchar(100) default NULL,

  `price` varchar(100) default NULL,

  `content` text,

  `content2` text,

  `agentmobile` varchar(100) default NULL,

  `agentemail` varchar(100) default NULL,

  `photo1` varchar(100) default NULL,

  `photo2` varchar(100) default NULL,

  `photo3` varchar(100) default NULL,

  `photo4` varchar(100) default NULL,

  `photo5` varchar(100) default NULL,

  `photo6` varchar(100) default NULL,

  `photo7` varchar(100) default NULL,

  `photo8` varchar(100) default NULL,

  `photo9` varchar(100) default NULL,

  PRIMARY KEY  (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=80 DEFAULT CHARSET=latin1 AUTO_INCREMENT=80 ;

 

#

This is my add_property code.

<input name="id" type="text" id="id" size="3" />

 

and this is my proccess file code

 

<?php
if (!isset($_SESSION)) {
  session_start();
}
$MM_authorizedUsers = "";
$MM_donotCheckaccess = "true";

// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) { 
  // For security, start by assuming the visitor is NOT authorized. 
  $isValid = False; 

  // When a visitor has logged into this site, the Session variable MM_Username set equal to their username. 
  // Therefore, we know that a user is NOT logged in if that Session variable is blank. 
  if (!empty($UserName)) { 
    // Besides being logged in, you may restrict access to only certain users based on an ID established when they login. 
    // Parse the strings into arrays. 
    $arrUsers = Explode(",", $strUsers); 
    $arrGroups = Explode(",", $strGroups); 
    if (in_array($UserName, $arrUsers)) { 
      $isValid = true; 
    } 
    // Or, you may restrict access to only certain users based on their username. 
    if (in_array($UserGroup, $arrGroups)) { 
      $isValid = true; 
    } 
    if (($strUsers == "") && true) { 
      $isValid = true; 
    } 
  } 
  return $isValid; 
}

$MM_restrictGoTo = "restricted.php";
if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {   
  $MM_qsChar = "?";
  $MM_referrer = $_SERVER['PHP_SELF'];
  if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
  if (isset($QUERY_STRING) && strlen($QUERY_STRING) > 0) 
  $MM_referrer .= "?" . $QUERY_STRING;
  $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
  header("Location: ". $MM_restrictGoTo); 
  exit;
}
?>




<?php 
//***FUNCTIONS

//filter extensions
function valid_ext($file_name)
{
$valid = array("jpeg","jpg","png","gif");
$extension = strtolower(substr($file_name,-3,3));
return (in_array($extension, $valid));
}


//filter by size,
function valid_size($size)
{
return ($size <= 1048576);
}


//This is the directory where images will be saved 
$path = '../images/';


//This gets all the other information from the form 
$id=$_POST['id']; 
$name=$_POST['name']; 
$rank=$_POST['rank']; 
$suburb=$_POST['suburb']; 
$price=$_POST['price']; 
$content=$_POST['content']; 
$content2=$_POST['content2']; 
$agentmobile=$_POST['agentmobile']; 
$agentemail=$_POST['agentemail']; 
$uploadFile0=($_FILES['uploadFile0']['name']); 
$uploadFile1=($_FILES['uploadFile1']['name']);
$uploadFile2=($_FILES['uploadFile2']['name']); 
$uploadFile3=($_FILES['uploadFile3']['name']);
$uploadFile4=($_FILES['uploadFile4']['name']);
$uploadFile5=($_FILES['uploadFile5']['name']);
$uploadFile6=($_FILES['uploadFile6']['name']);
$uploadFile7=($_FILES['uploadFile7']['name']);
$uploadFile8=($_FILES['uploadFile8']['name']);

// Connects to your Database 
mysql_connect("localhost", "root", "5050888202") or die(mysql_error()) ; 
mysql_select_db("gcproperty") or die(mysql_error()) ; 

 //Writes the information to the database


mysql_query("INSERT INTO `employees` VALUES ('$id','$name', '$rank', '$suburb', '$price', '$content', '$content2','$agentmobile', '$agentemail','$uploadFile0','$uploadFile1', '$uploadFile2', '$uploadFile3', '$uploadFile4', '$uploadFile5', '$uploadFile6', '$uploadFile7', '$uploadFile8')");

// Uploads Images
$uploadNeed = $_POST['uploadNeed'];

// start for loop
$copied = 0;//the number of files successfully uploaded
for($x=0;$x<$uploadNeed;$x++)
{
$file_name = $_FILES['uploadFile'. $x]['name'];

//test
$Size = $_FILES['uploadFile'. $x]['size'];

//Test Check
$Valid = false;
if(valid_ext($file_name))
{
	echo " {$file_name} valid ext";
	$Valid = true;
}else{
	print "<meta http-equiv=\"refresh\" content=\"0;URL=invalid_extension.php\">";
    exit();
}
echo "</br>";
if(valid_size($Size))
{
	echo " {$file_name} valid size</br>";
}else{
	$Valid = false;
	print "<meta http-equiv=\"refresh\" content=\"0;URL=invalid_size.php\">";
	exit(); 
}
if($Valid)
{
	// strip file_name of slashes
	$file_name = stripslashes($file_name);
	$file_name = str_replace("'","",$file_name);
	if(file_exists($path . $file_name) ) {
		print "<meta http-equiv=\"refresh\" content=\"0;URL=file_exists.php\">";
        exit();
	}else {
		$copy = move_uploaded_file($_FILES['uploadFile'. $x]['tmp_name'], $path . $file_name);
		$copied++;//increment our counter
	}	
}
}



if($copied > 0) {

//do your insert stuff

if($copied != $uploadNeed) {

$not_uploaded = $uploadNeed - $copied;

		print "<meta http-equiv=\"refresh\" content=\"0;URL=upload_error.php\">";
        exit();


  }

}


// check if successfully copied

if($copied == $uploadNeed)
{
 print "<meta http-equiv=\"refresh\" content=\"0;URL=property_added_successfully.php\">";

}else{

            echo "<br>$file_name The File(s) could not be uploaded!<br>The file must be under 1 meg and be of a valid extension type, jpeg, jpg, png or gif!<br />
<br />
Please go <a href=\"property_add.php\">back</a> and try again";
}



// end of loop



?>

Link to comment
Share on other sites

So do i still need a hidden (id) field?

and do i need the id in my proccess file?

 

<?php
//This gets all the other information from the form 
$id=$_POST['id']; // do i need this?/////////////////////////////////////////////////////////////
$name=$_POST['name']; 
$rank=$_POST['rank']; 
$suburb=$_POST['suburb']; 
$price=$_POST['price']; 
$content=$_POST['content']; 
$content2=$_POST['content2']; 
$agentmobile=$_POST['agentmobile']; 
$agentemail=$_POST['agentemail']; 
$uploadFile0=($_FILES['uploadFile0']['name']); 
$uploadFile1=($_FILES['uploadFile1']['name']);
$uploadFile2=($_FILES['uploadFile2']['name']); 
$uploadFile3=($_FILES['uploadFile3']['name']);
$uploadFile4=($_FILES['uploadFile4']['name']);
$uploadFile5=($_FILES['uploadFile5']['name']);
$uploadFile6=($_FILES['uploadFile6']['name']);
$uploadFile7=($_FILES['uploadFile7']['name']);
$uploadFile8=($_FILES['uploadFile8']['name']);
?>

 

Do i just do the code for the auto increment in this part of my code?

 

//Writes the information to the database

 

 

mysql_query("INSERT INTO `employees` VALUES ('$id','$name', '$rank', '$suburb', '$price', '$content', '$content2','$agentmobile', '$agentemail','$uploadFile0','$uploadFile1', '$uploadFile2', '$uploadFile3', '$uploadFile4', '$uploadFile5', '$uploadFile6', '$uploadFile7', '$uploadFile8')");

 

//

 

Sorry im stil learning, this is my first php/mysql project, thanks for your help ;)

 

Is my id field setup correctly?

Should it be a "primary key"

It has a key beside it in dreamweaver and says that it is required?

 

Link to comment
Share on other sites

ok, i get a drift of what u are saying, i deleted the input field and the get from form $id

 

But in the insert statement it is formatted as

 

<?php
//Writes the information to the database
      mysql_query("INSERT INTO `employees` VALUES ('$id','$name', '$rank', '$suburb', '$price', '$content', '$content2','$agentmobile', '$agentemail','$uploadFile0','$uploadFile1', '$uploadFile2', '$uploadFile3', '$uploadFile4', '$uploadFile5', '$uploadFile6', '$uploadFile7', '$uploadFile8')");

// ?>

Should it be a different insert statement as $id now no longer exists in my files?

Should it read

 

 

  mysql_query("INSERT INTO `employees` VALUES ('id','$name', '$rank', '$suburb', '$price', '$content', '$content2','$agentmobile', '$agentemail','$uploadFile0','$uploadFile1', '$uploadFile2', '$uploadFile3', '$uploadFile4', '$uploadFile5', '$uploadFile6', '$uploadFile7', '$uploadFile8')");

 

//

 

 

Link to comment
Share on other sites

I changed it all so that there is no reference to (id) anywhere in my code.

And changed my insert statement to

 

mysql_query("INSERT INTO `employees` VALUES ('id','$name', '$rank', '$suburb', '$price', '$content', '$content2','$agentmobile', '$agentemail','$uploadFile0','$uploadFile1', '$uploadFile2', '$uploadFile3', '$uploadFile4', '$uploadFile5', '$uploadFile6', '$uploadFile7', '$uploadFile8')");

 

And it does nothing.

It says property added successfully but doesnt add the record ??? i removed the $ from the start of id.

What am i doing wrong?

Is my id field correctly structured, should it have a defult value? and should it be asigned as a primary key?

 

Thanks in advanced

 

 

Link to comment
Share on other sites

Barand has already given you an answer in his first post here.

 

In your last post, you're still giving a value for the id column of 'id'.

 

You still need:

 

CREATE TABLE `employees` (

  `id` int(4) NOT NULL auto_increment,

  `name` varchar(100) default NULL,

.

.

.

PRIMARY KEY  (`id`)

)...

 

Then the start of your insert should be like this:

 

mysql_query("INSERT INTO `employees` VALUES (NULL, '$name', . . .

 

 

I always recommend you do it the way Barand shows, by specifying the exact column names before specifying their values. That way it's clear, no assumptions are being made and when you need to insert new columns to your table you can without having to change your code first. So, do it this way:

 

You can omit the auto_inc column from the insert or you can specify NULL as its value.

 

E.G.

 

INSERT INTO table (username, password) VALUES ('abc', 'def')

 

or

 

INSERT INTO table (id, username, password) VALUES (null, 'abc', 'def')

 

Link to comment
Share on other sites

You're welcome, but don't thank me, thank Barand, he gave you the example of using NULL right from the beginning. I simply iterated the same thing. Here's Barand's example from his first post again:

 

INSERT INTO table (id, username, password) VALUES (null, 'abc', 'def')

 

 

Please read replies carefully as it may save you a lot of time and frustration.

 

Happy coding.

 

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.