hmm... je kan toch ook een formulier gebruiken om de afbeelding op te slaan, i.p.v. ze in de database te plaatsen, en de URL met de afbeelding gegevens in de database opslaan?
Zo'n 'upload' script is éénvoudig te realiseren, zie voorbeeld.
--- upload.php ---
<?php
# This procedure will upload the pictures to the server
# The images will be uploaded into the images directory.
# Procedure written by Cynthia Fridsma
$hello = getcwd();
$file_dir = ($hello . "/images/");
echo date("m/d/y G.i:s");
echo ("<br><h2>");
echo date("F j, Y. \a\\t g.i.a");
echo ("</h2><br><br>");
foreach($_FILES as $file_name => $file_array) {
# filter the filename so that it will become a valid filename
# into a Linux environment. (A Mac and Windows environment are
# much more relaxing with filenames, regarding spaces, upper- & lowercase
# names. But Linux isn't
$file_name=str_replace("'", "_", $file_array['name']);
$file_name=str_replace(" ", "_", $file_array['name']);
$file_name=stripslashes ($file_name);
$file_name=trim($file_name);
$file_name=strtolower($file_name);
echo "path: " .$file_array['tmp_name'] . "<br>\n";
echo "name: " .$file_name . "<br>\n";
echo "type: " .$file_array['type'] ."<br>\n";
echo "size: " .$file_array['size'] ."<br>\n";
if (is_uploaded_file($file_array['tmp_name'])) {
move_uploaded_file($file_array['tmp_name'], "$file_dir/$file_name") or die ("Couldn't copy");
echo "file was uploaded!<br><br>";
}
}
?>
-- Einde upload.php -----------------
Je zou de bestandsnaam en URL via $_POST kunnen verwerken in je mysql database.
Dit script doet niets anders dan file upload, maar je kan het natuurlijk aanpassen dat de gegevens tevens in een mysql database worden geplaatst...
Het script het ik geschreven voor een Content Management Systeem dat werkt met een 'flat file' database. Als ik het systeem af heb, wil ik het als open source gaan aanbieden en hoop ik met andere mensen te kunnen samenwerken :-)
Ontopic: ik zal morgen uitleggen hoe je dit kan implementeren in een mysql database ;-)
Hierbij het beloofde complete script ;-) (en nu heb ik hem aangepast!!!
----- afbeelding_toevoegen.php -----------------
<?php
# De verwerking van de gegevens doen we gewoon
# met een eenvoudig formulier.
// verbind de server
require_once("config.php");
$go = $_POST[go];
if ($go ==""):
?>
<br><br><br>
<form name="form1" method="post" action="test1.php" enctype="multipart/form-data">
<input name="go" type="hidden" value="go">
<table width="450" border="0" bgcolor="#99CCFF" align="center">
<tr>
<td bgcolor="#99CCFF">Omschrijving</td>
<td><input name="omschrijving" type="text" id="omschrijving" size="50"></td>
</tr>
<tr>
<td bgcolor="#99CCFF">Afbeelding</td>
<td><input name="afbeelding" type="file" accept="image/jpeg" id="afbeelding" size="50">
</tr>
<tr>
<td bgcolor="#99CCFF"> </td>
<td><input type="submit" name="Submit" value="Verzenden">
<input type="reset" name="Reset" value="Herstellen"></td>
</tr>
</table>
<p> </p>
</form>
<?php
endif;
echo $go;
if ($go =="go"):
# This procedure will upload the pictures to the server
# The images will be uploaded into the images directory.
# Procedure written by Cynthia Fridsma
$hello = getcwd();
$file_dir = ($hello . "/images/");
echo date("m/d/y G.i:s");
echo ("<br><h2>");
echo date("F j, Y. \a\\t g.i.a");
echo ("</h2><br><br>");
foreach($_FILES as $file_name => $file_array) {
# filter the filename so that it will become a valid filename
# into a Linux environment. (A Mac and Windows environment are
# much more relaxing with filenames, regarding spaces, upper- & lowercase
# names. But Linux isn't
$file_name=str_replace("'", "_", $file_array['name']);
$file_name=str_replace(" ", "_", $file_array['name']);
$file_name=stripslashes ($file_name);
$file_name=trim($file_name);
$file_name=strtolower($file_name);
echo "path: " .$file_array['tmp_name'] . "<br>\n";
echo "name: " .$file_name . "<br>\n";
echo "type: " .$file_array['type'] ."<br>\n";
echo "size: " .$file_array['size'] ."<br>\n";
if (is_uploaded_file($file_array['tmp_name'])) {
move_uploaded_file($file_array['tmp_name'], "$file_dir/$file_name") or die ("Couldn't copy");
echo "file was uploaded!<br><br>";
}
}
$afbeelding = "images/" . $file_name;
echo $afbeelding . "is toegevoegd aan de database";
echo $_POST[omschrijving];
// voeg de nieuwe gevens toe
$query = "INSERT INTO afbeelding (nummer, omschrijving, afbeelding) VALUES ('', '$_POST[omschrijving]','$afbeelding')";
if(!mysql_db_query($dbname,$query,$db)) die(mysql_error());
endif;
?>
----- einde afbeelding_toevoegen.php -----------------
Uitleg:
Door in het formulier de variabel 'go' te gebruiken, wordt door middel van if ($go =="go") het upload script gestart, via het upload script krijgt de variabel $afbeelding, de URL van de afbeelding samen met de naam.
Als je later je database raadpleegd met bijvoorbeeld mysql_fetch_array, kan je daar de benodigde html tags toevoegen om de afbeelding zichtbaar te maken.
--- voorbeeld ----
<?php
$sql = mysql_query("SELECT * FROM databas WHERE nummer=$welk_nummer");
while ($row = mysql_fetch_array($sql)) {
?>
<img src="<?php echo $row[2]; ?>"></img>
<?php
}