madmoose Posted June 6, 2003 Posted June 6, 2003 Is it possible to load images into a database from a form and then reflect it back on a view page? I have tried several script configurations taken from the php manual etc., but the all send this error message (whereas other people seem to have no trouble): Parse error: parse error, unexpected T_STRING in /home/myaccount/public_html/test/sendimage.php on line 6 Is it possible to store images in a database at TCH? Thanks MM Quote
borfast Posted June 6, 2003 Posted June 6, 2003 Yes, it is possible. Do keep in mind that it may kill your database, if the images are big and are going to be fetched many times. As for how to do it, I could explain you how to do it since I've done it several times but instead, I'll just tell you "learn to use google" http://www.google.com/search?q=storing+ima...start=0&start=0 Quote
natimage Posted June 6, 2003 Posted June 6, 2003 Hi, Just curious about a couple of things. I'm a beginner at server-side stuff! Do keep in mind that it may kill your database, if the images are big What does "kill your database" mean?? And how big is big for what you are talking about here...Many megabytes worth or just several KBs worth? Tracy Quote
madmoose Posted June 6, 2003 Author Posted June 6, 2003 but instead, I'll just tell you "learn to use google" Actually, I have several great scripts including those found at the top of your google search. The problem is that each time I attempt any one of many scripts, I receive the same unexpected T_STRING error. I cannot seem to get past it. If you have thoughts on this issue, please let me know. MM Quote
borfast Posted June 6, 2003 Posted June 6, 2003 madmoose, it seems you are not a google illiterate after all. My apologies Could you please be a little more specific about your problem? Are you setting the right column types in MySQL? Are you sending the MIME type in the headers when retrieving the image from the database and sending it to the browser? Actually, are you having problems getting the images from the database or storing them there? As for natimage's questions, by "kill your database" I meant that it could hog the server down, making it slow or even unavailable. As for the size, it's actually more a matter of how much will the image be requested. For instance, you can have one single big image with one megabyteor you can also have lots of small images with just a few Kb each and only one person viewing each of them but if you have thousands of visitors to your site... Basically, one big image loaded once isn't any better/worse than lots of smaller images loaded several times. The key is the traffic the images are going to generate on the server. You have to think in terms of how much data will the MySQL server have to transfer, either with big images or small ones. Raul Quote
surefire Posted June 6, 2003 Posted June 6, 2003 I'm not sure if this helps... but I've gotten that same error several times during the transfer of one of my sites that is database driven. I wish I could tell you exactly what the problem is... but I'll try to point you in the right direction. I had to recode MANY pages of my site to account for register_globals == off. If you look in the php(info) file, you'll see what I'm talking about re. globals. Anyhow, my old scripts would assign variables that were passed by forms without any special code. In other words, if I had a field in a form that was 'email' then the script receiving the data would say $var=$email. I've had to go through my pages and put in code that looks like $var = $_POST['email']; I don't know if that's the issue, but some older scripts seem to be written based on the assumption that register_globals is on. TCH has it off. I'd hate to send you on a wild goose chase but maybe this will help. Quote
TCH-Rob Posted June 7, 2003 Posted June 7, 2003 Madmoose, Could you please post line 6 as well as 5 in sendimage.php. Most parsing errors are related to the line above the one listed. Can you also post the error message verbatim, is it saying it was expecting something? Quote
madmoose Posted June 7, 2003 Author Posted June 7, 2003 Could you please post line 6 as well as 5 in sendimage.php. I am not having trouble viewing the image once posted to the db (i have tested this by hand loading the image from phpmyadmin). My trouble is with the sendimage script. They all are experiencing error at the very start of the script not even getting to the variables. Here is just one of several I have tried: 1. Form: <html> <body> <FORM ENCTYPE="multipart/form-data" ACTION="upload.php" METHOD=POST> <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="300000"> Send this file: <INPUT NAME="userfile" TYPE="file"> <INPUT TYPE="submit" VALUE="Upload file"> </FORM> </body> </html> 2. Sendimage: Here is the scipt that receives the unexpacted T_STRING error. <? if (is_uploaded_file($userfile)) { copy($userfile, $HTTP_POST_FILES['userfile']['name']); } else { echo "error. File: '$userfile'."; } $filename=$HTTP_POST_FILES['userfile']['name']; $fd = fopen ($filename, "r"); $contents = fread ($fd, filesize($filename)); fclose($fd); $escaped_contents=mysql_escape_string($contents); // Connecting, selecting database $link = mysql_connect("dbhost", "dbuser", "dbpassword") or die("Could not connect"); mysql_select_db("databasename") or die("Could not select database"); // Performing SQL query; assuming that the "image" is a BLOB field $query = "UPDATE tablename SET image='$escaped_contents' WHERE id=1"; $result = mysql_query($query) or die("Query failed"); // Closing connection mysql_close($link); ?> 3. To view the image, I am using this script successfully: <? // Connecting, selecting database $link = mysql_connect("dbhost", "dbuser", "dbpassword") or die("Could not connect"); #print "Connected successfully"; mysql_select_db("databasename") or die("Could not select database"); header(" Content-Type: image/gif"); header(" Content-Disposition: inline"); $sql = "SELECT picture FROM tablename WHERE id=1"; $result = mysql_query($sql); $row = mysql_fetch_row($result); $image = $row[0]; echo $image; ?> Thanks for the attention. MM Quote
madmoose Posted June 7, 2003 Author Posted June 7, 2003 Actually, are you having problems getting the images from the database or storing them there? I can get them with no trouble. My problem is sending. Each script I have tried generates a T_STRING error right at the start of the script. I have hand loaded images and reflected them with no trouble, just can't seem to find a script to load them. I have only thus far been able to use a move_file script that moves the image to a perm server directory. This is fine but only valuable to me if I could find a way to rename the file with a specific name (ie. img01, img02...) as it move through to the directory. No ideas on this to date. This move script is the only one I have been able to use without receiving the STRING error: <?php $uploaddir = 'images/'; print "<pre>"; if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])) { print "File is valid, and was successfully uploaded."; } else { print "ERROR: File transfer was NOT successful. Possible invalid file."; } ?> Thanks Raul, MM Quote
dozure Posted June 8, 2003 Posted June 8, 2003 do you have the image field in your db set to blob? i dont see anything wrong with the script itself Quote
dozure Posted June 8, 2003 Posted June 8, 2003 but some older scripts seem to be written based on the assumption that register_globals is on. TCH has it off. which server are you on? register globals is on on server 11 Quote
madmoose Posted June 8, 2003 Author Posted June 8, 2003 do you have the image field in your db set to blob? yes i do Quote
madmoose Posted June 8, 2003 Author Posted June 8, 2003 which server are you on? register globals is on on server 11 I'm on 21. Do I need to register globals? How do I do this? Thanks MM Quote
surefire Posted June 9, 2003 Posted June 9, 2003 but some older scripts seem to be written based on the assumption that register_globals is on. TCH has it off. which server are you on? register globals is on on server 11 I swear that must have been changed recently... but maybe I was seeing things. Dunno. Ignore my previous suggestion re globals Quote
madmoose Posted June 10, 2003 Author Posted June 10, 2003 How about this... Does anyone have a good (complete) script that will allow users to load image files from a html form to an upload directory AND rename the file to a very specific name as it moves to the end directory? If I use a move function to relocate the image to a directory, I need to rename the file to a very specific name as it passes through. any ideas? MM Quote
dozure Posted June 12, 2003 Posted June 12, 2003 not sure exactly how to do it, but you could have the script, before it stores the file, get a list of all the files in the directory, use a reg exp to cut off all but the end of the newest file name, increment the number by 1 and stick the filename back together, then proceed to store the file. For Example: if you wanted them to be named image001.jpg image002.jpg image003.jpg and so on, have the script strip off the image and the .jpg from the filename, increment the number by 1 and then stick the filename back together. so if image0010.jpg was the newest file in the directory, take image0010.jpg, take off the image and the .jpg so you're left with only 0010 then increment 0010 by 1 so you get 0011, then stick it back together as image0011.jpg, give image0011.jpg as the filename, and proceed to store the file. I'll sit down later and see if I can bring this theory to life, but no promises. I'm still trying to figure out this regular expression stuff. Quote
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.