designedfree4u Posted March 18, 2008 Share Posted March 18, 2008 I am slowly learning php and im try to combine two tutorials. The form is posting fine to the database ,but it creates two rows. one row for the blob and one for all the text. My goal is to place all the info in one single row. Thanks for the help Code: <? $username=""; $password=""; $database="jaybirdf_RealEstate"; $Address=$_POST['Address']; $Picture=$_POST['Picture']; $City=$_POST['City']; $Map=$_POST['Map']; $Bed=$_POST['Bed']; $Bath=$_POST['Bath']; $Terms=$_POST['Terms']; $SQFT=$_POST['SQFT']; $LSQFT=$_POST['LSQFT']; $Price=$_POST['Price']; $file=$_POST['Image']; $type=$_POST['FileType']; mysql_connect(localhost,$username,$password); @mysql_select_db($database) or die( "Unable to select database"); $query = "INSERT INTO Listing (Address,City,Map,Bed,Bath,Terms,SQFT,LSQFT,Price,Picture,Image,FileType) VALUES ('$Address','$City','$Map','$Bed','$Bath','$Terms','$SQFT','$LSQFT','$Price','$Picture','$file','$type')"; mysql_query($query); //File upload Part if ($_POST['Submit']) { if ($_POST['MAX_FILE_SIZE'] >= $_FILES['file']['size']) { //print_r($_FILES); mysql_connect("localhost", "", "") or die(mysql_error()); mysql_select_db("jaybirdf_RealEstate"); $photo = addslashes(fread(fopen($_FILES['file']['tmp_name'], "r"), $_FILES['file']['size'])); $query = sprintf("INSERT INTO Listing(Image, FileType) VALUES ('%s', '%s')", $photo, $_FILES['file']['type']); if (mysql_query($query)) { $messages[] = "Your files is successfully store in database"; } else { $messages[]= mysql_error(); } } else { $messages[]="The file is bigger than the allowed size please resize"; } } ?> <html> <head> <title>Add Image</title> </head> <body> <? if (isset($messages)) { foreach ($messages as $message) { print $message ."<br>"; } } mysql_close(); ?> Quote Link to comment Share on other sites More sharing options...
frijole Posted March 18, 2008 Share Posted March 18, 2008 what do you mean by "the blob" I don't see it in your code? Quote Link to comment Share on other sites More sharing options...
bpops Posted March 18, 2008 Share Posted March 18, 2008 You're saying the file posted is being submitted to a separate row? If this is what you're saying, you need to specify the row to put it in in your query. So query = sprintf("INSERT INTO Listing(Image, FileType) VALUES ('%s', '%s')", $photo, $_FILES['file']['type']); would become something like query = sprintf("INSERT INTO Listing(Image, FileType) VALUES ('%s', '%s') WHERE Address='$Address' AND City='$City'", $photo, $_FILES['file']['type']); .. but to even better specify a particular row, you should have the primary key for your table be an auto_increment to give it a unique ID. Quote Link to comment Share on other sites More sharing options...
Caberman Posted March 18, 2008 Share Posted March 18, 2008 Inserts always create a new row. So you have an INSERT for the data you get posted, and then an INSERT for the blob down below. Your second INSERT should probably be an UPDATE and you will have to make sure you get a way to know which row to UPDATE, ideally by selecting out the ID of the row you need to update. Cheers. Quote Link to comment Share on other sites More sharing options...
designedfree4u Posted March 18, 2008 Author Share Posted March 18, 2008 15 final test t t t t t t t t t [bLOB - 0 B] 16 final test t t t t t t t t [bLOB - 0 B] 30 testes w w w w w w w w w [bLOB - 0 B] 31 [bLOB - 4.5 KiB] image/pjpeg When i upload it creates line 30 and line 31 what i want is 15 final test t t t t t t t t t [bLOB - 0 B] 16 final test t t t t t t t t [bLOB - 0 B] 30 testes w w w w w w w w w [bLOB - 4.5 KiB] image/pjpeg Quote Link to comment Share on other sites More sharing options...
GingerRobot Posted March 18, 2008 Share Posted March 18, 2008 Yes, when you use the insert command, you will create a new row. You can either combine everything into one insert, or perform the first query as an insert and the second as an update query. I would recommend combining the queries, since it is more efficent. This should work for you: <?php $username="jaybirdf_Admin"; $password="607101593"; $database="jaybirdf_RealEstate"; mysql_connect(localhost,$username,$password); @mysql_select_db($database) or die( "Unable to select database"); if ($_POST['Submit']) { if ($_POST['MAX_FILE_SIZE'] >= $_FILES['file']['size']) { $Address=$_POST['Address']; $Picture=$_POST['Picture']; $City=$_POST['City']; $Map=$_POST['Map']; $Bed=$_POST['Bed']; $Bath=$_POST['Bath']; $Terms=$_POST['Terms']; $SQFT=$_POST['SQFT']; $LSQFT=$_POST['LSQFT']; $Price=$_POST['Price']; $file=$_POST['Image']; $type=$_POST['FileType']; //print_r($_FILES); $photo = addslashes(fread(fopen($_FILES['file']['tmp_name'], "r"), $_FILES['file']['size'])); $query = "INSERT INTO Listing (Address,City,Map,Bed,Bath,Terms,SQFT,LSQFT,Price,Picture,Image,FileType) VALUES ('$Address','$City','$Map','$Bed','$Bath','$Terms','$SQFT','$LSQFT','$Price','$Picture','$photo','".$_FILES['file']['type']."')"; if (mysql_query($query)) { $messages[] = "Your files is successfully store in database"; } else { $messages[]= mysql_error(); } } else { $messages[]="The file is bigger than the allowed size please resize"; } } ?> <html> <head> <title>Add Image</title> </head> <body> <? if (isset($messages)) { foreach ($messages as $message) { print $message ."<br>"; } } mysql_close(); ?> Quote Link to comment Share on other sites More sharing options...
designedfree4u Posted March 18, 2008 Author Share Posted March 18, 2008 Wow that worked perfect, Thank you to all Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.