Upload naar database
Heeft iemand een scriptje waarmee ik foto's kan uploaden, ze dan in een map zet, en ze ook in de database toevoegd?
Voor mijn part onder afbeelding1.jpg, en afbeelding2.jpg, of onder de gewone naam?
Het is namelijk voor een soort marktsysteempje. Mensen kunnen dan een foto uploaden, en staat automatisch ook in de database.
Bedankt!
heb ik wel, meerdere zelfs. ik weet trouwens niet of jij er ook fotos mee kan uploaden, als je de zoekknop al niet eens kan vinden
Heb je hem hier online staan?
Dan vind ik hem hopelijk wel
Zo moeilijk is het niet, de vraag is alleen of het verstandig is. Gebruik maken van een simpel filesysteem is veel efficienter/sneller en logischer dan zulke data in een database zetten.
Ik upload een bestand, en in de database komt bijvoorbeeld in de tabel "afbeelding" >> image.jpg.
Op de site roep ik hem op met een Fetch?
is toch niet veel ruimte?
Zeg dat dan, ipv van het opslaan van de afbeelding in de database :s
Het gaat niet om de ruimte maar om snelheid en efficientie.
Heeft niemand dat?
Arjan, met een marksysteempje is het toch niet handig alles los te laten staan... Het wordt geen fotoalbum. Of wil je voor elke advertentie een nieuwe map maken, dan kan het wel ja.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<html>
<head>
<title>Afbeelding uploaden</title>
</head>
<body>
<?
#Ik neem aan dat het nummer van de advertentie meegegeven is met POST onder de naam advertentieid, en de locatie naar het bestand in de variabele file
$locatie = "map/"; #directorie (CHMOD 777) met slash aan het eind
if (isset($_POST['advertentieid']) AND isset($_POST['file'])){ #checken of er wel een id en een plaatje is verstuurd
if (is_numeric($_POST['advertentieid'])){ #checken of het idnummer wel nummeriek is (tegen hackers etc.)
$advertentieid = $_POST['advertentieid']; #het nummer van de advertentie ophalen
$file = pathinfo($_FILES['file']['name']); #een array met informatie over het plaatje opvragen
$ext = $file['extension']; #de extensie van het plaatje opvragen
if ($extension=="jpg" OR $extension=="JPG" OR $extension=="jpeg" OR $extension=="JPEG"){ #kijken of de extensie wel jpg, JPG, jpeg of JPEG is
$maximalegrootte = ; #het aantal bytes dat de afbeelding maximaal mag zijn
if ($_FILES['file']['size']<$maximalegrootte){ #controleren of de afbeelding niet te groot is
move_uploaded_file($_FILES['file']['tmp_name'], $locatie.$advertentieid.".jpg"); #het plaatje uploaden in de aangegeven map, met als bestandsnaam het idnummer.jpg
$username = ""; #gebruikersnaam van de mysql database
$password = ""; #wachtwoord van de mysql database
$hostname = ""; #de hostnaam van de mysqldatabase (vaak localhost)
$database = ""; #de mysqldatabase (vaak hetzelde als de username)
$connection = mysql_connect($hostname,$username,$password); #verbinding maken met de mysqldatabase
$db = mysql_select_db($database,$connection); #de databasekiezen
$tabel = ""; #de tabel waar de urls naar de plaatjes in worden opgeslagen
$idveld = ""; #de naam van de kolom waar het idnummer in staat
$urlveld = ""; #de naam van de kolom waar de url naar het plaatje in moet komen
$actie = ""; #'vervangen' als er al een rij is aangemaakt met het idnummer, 'maken' als er nog geen rij is aangemaakt met dat idnummer
if ($actie=="vervangen"){ #kijken of de actie vervangen is
$query = "UPDATE ".$tabel." SET ".$urlveld." = '"$locatie.$advertentieid.".jpg' WHERE ".$idveld." = '".$advertentieid."'"; #een mysql query maken
$result = mysql_query($query); #de mysql query uitvoeren
}
if ($actie=="maken"){ #kijken of de actie maken is
$query = "INSERT INTO ".$tabel." ('".$idveld."','".$urlveld."') VALUES ('".$advertentieid."','".$locatie.$advertentieid.".jpg')"; #een mysql query maken
$result = mysql_query($query); #de mysql query uitvoeren
}
print("<p><img src=\"".$locatie.$advertentieid.".jpg\"></p><p>Uw afbeelding is geupload.</p>"); #het upgeloade plaatje laten zien
}
else{
print("<p>Uw afbeelding is ".$maximalegrootte-$_FILES['file']['size']." bytes te groot. De maximale grootte is ".$maximalegrootte." bytes.</p>"); #een melding geven als het plaatje te groot is
}
else{
print("<p>Uw afbeelding heeft de verkeerde extensie. Goedgekeurde extensies zijn:</p><p><ul><li>.jpg</li><li>.JPG</li><li>.jpeg</li><li>.JPEG</li></p>");
}
}
else{
print("<p>Het idnummer van de advertentie moet nummeriek zijn.</p>");
}
}
else{
print("<p>Er missen enkele variabelen.</p>");
}
?>
<form action="<? print($_SERVER['SCRIPT_NAME']); ?>" target="_self" method="POST" enctype="multipart/form-data">
<input type="hidden" name="advertentieid">
<p><input type="file" name="file"></p>
<p><input type="submit" value="Uploaden"></p>
</form>
</body>
</html>
<head>
<title>Afbeelding uploaden</title>
</head>
<body>
<?
#Ik neem aan dat het nummer van de advertentie meegegeven is met POST onder de naam advertentieid, en de locatie naar het bestand in de variabele file
$locatie = "map/"; #directorie (CHMOD 777) met slash aan het eind
if (isset($_POST['advertentieid']) AND isset($_POST['file'])){ #checken of er wel een id en een plaatje is verstuurd
if (is_numeric($_POST['advertentieid'])){ #checken of het idnummer wel nummeriek is (tegen hackers etc.)
$advertentieid = $_POST['advertentieid']; #het nummer van de advertentie ophalen
$file = pathinfo($_FILES['file']['name']); #een array met informatie over het plaatje opvragen
$ext = $file['extension']; #de extensie van het plaatje opvragen
if ($extension=="jpg" OR $extension=="JPG" OR $extension=="jpeg" OR $extension=="JPEG"){ #kijken of de extensie wel jpg, JPG, jpeg of JPEG is
$maximalegrootte = ; #het aantal bytes dat de afbeelding maximaal mag zijn
if ($_FILES['file']['size']<$maximalegrootte){ #controleren of de afbeelding niet te groot is
move_uploaded_file($_FILES['file']['tmp_name'], $locatie.$advertentieid.".jpg"); #het plaatje uploaden in de aangegeven map, met als bestandsnaam het idnummer.jpg
$username = ""; #gebruikersnaam van de mysql database
$password = ""; #wachtwoord van de mysql database
$hostname = ""; #de hostnaam van de mysqldatabase (vaak localhost)
$database = ""; #de mysqldatabase (vaak hetzelde als de username)
$connection = mysql_connect($hostname,$username,$password); #verbinding maken met de mysqldatabase
$db = mysql_select_db($database,$connection); #de databasekiezen
$tabel = ""; #de tabel waar de urls naar de plaatjes in worden opgeslagen
$idveld = ""; #de naam van de kolom waar het idnummer in staat
$urlveld = ""; #de naam van de kolom waar de url naar het plaatje in moet komen
$actie = ""; #'vervangen' als er al een rij is aangemaakt met het idnummer, 'maken' als er nog geen rij is aangemaakt met dat idnummer
if ($actie=="vervangen"){ #kijken of de actie vervangen is
$query = "UPDATE ".$tabel." SET ".$urlveld." = '"$locatie.$advertentieid.".jpg' WHERE ".$idveld." = '".$advertentieid."'"; #een mysql query maken
$result = mysql_query($query); #de mysql query uitvoeren
}
if ($actie=="maken"){ #kijken of de actie maken is
$query = "INSERT INTO ".$tabel." ('".$idveld."','".$urlveld."') VALUES ('".$advertentieid."','".$locatie.$advertentieid.".jpg')"; #een mysql query maken
$result = mysql_query($query); #de mysql query uitvoeren
}
print("<p><img src=\"".$locatie.$advertentieid.".jpg\"></p><p>Uw afbeelding is geupload.</p>"); #het upgeloade plaatje laten zien
}
else{
print("<p>Uw afbeelding is ".$maximalegrootte-$_FILES['file']['size']." bytes te groot. De maximale grootte is ".$maximalegrootte." bytes.</p>"); #een melding geven als het plaatje te groot is
}
else{
print("<p>Uw afbeelding heeft de verkeerde extensie. Goedgekeurde extensies zijn:</p><p><ul><li>.jpg</li><li>.JPG</li><li>.jpeg</li><li>.JPEG</li></p>");
}
}
else{
print("<p>Het idnummer van de advertentie moet nummeriek zijn.</p>");
}
}
else{
print("<p>Er missen enkele variabelen.</p>");
}
?>
<form action="<? print($_SERVER['SCRIPT_NAME']); ?>" target="_self" method="POST" enctype="multipart/form-data">
<input type="hidden" name="advertentieid">
<p><input type="file" name="file"></p>
<p><input type="submit" value="Uploaden"></p>
</form>
</body>
</html>
wat is
actie = ""; #'vervangen' als er al een rij is aangemaakt met het idnummer, 'maken' als er nog geen rij is aangemaakt met dat idnummer
moet ik dat leeglaten of iets invullen?
Parse error: syntax error, unexpected T_IF in c:\appserv\www\deknagertjes.nl\modules\markt\upload.php on line 16
regel 16:
if ($_FILES['file']['size']<$maximalegrootte){ #controleren of de afbeelding niet te groot is
Parse error: syntax error, unexpected T_VARIABLE in c:\appserv\www\deknagertjes.nl\modules\markt\upload.php on line 24
Deze code is 24:
$query = "UPDATE ".$tabel." SET ".$urlveld." = '"$locatie.$advertentieid.".jpg' WHERE ".$idveld." = '".$advertentieid."'"; #een mysql query maken
Zo'n 'upload' script is éénvoudig te realiseren, zie voorbeeld.
--- upload.php ---
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?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>";
}
}
?>
# 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.
anders voegt hij de naam teo, en upload niets, of hij upload, en voegt geen naam toe?
toch?
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 ;-)
----- afbeelding_toevoegen.php -----------------
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?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;
?>
# 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 ----
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?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
}
[/code]
$sql = mysql_query("SELECT * FROM databas WHERE nummer=$welk_nummer");
while ($row = mysql_fetch_array($sql)) {
?>
<img src="<?php echo $row[2]; ?>"></img>
<?php
}
[/code]
Gewijzigd op 01/01/1970 01:00:00 door cynthia Fridsma
ik weet niet wat ik verkeerd doe, maar hij upload geen foto, en zet niets in database?
Oeps, mijn foutje, sorry... ik was vergeten om in het formulier de hidden file te plaatsen....