Foto's wel naar de server, niet naar de DB
In onderstaand script word het plaatsen van de foto's (9 stuks via een form.) op de server keurig afgewerkt. De namen van de afbeeldingen die in het formulier worden ingevuld komen echter niet in de database te staan waardoor ik ze ook niet meer kan oproepen op mijn website... Kan iemand mij vertellen waar de fout zit of wat ik moet toevoegen.
Hartelijk dank alvast voor de hulp!!!
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
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
<?PHP
// TOEVOEGEN
if ($action == "toevoegen")
{
include ("filter.php");
$hello = getcwd();
$file_dir = ($hello . "/../image/project/");
if (is_dir ($file_dir)) {
echo "<br><br>++directorty bestaat";
} else {
echo "<br><br>--Directory bestaat nog niet" . $file_dir;
$newpage = $file_dir;
echo ("<br>we gaan daarom de directory aanmaken");
mkdir ($newpage, 0777);
}
echo ("<br><br>");
foreach($_FILES as $file_name => $file_array)
{
$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);
$test = afbeeldingen($file_name);
if ($test !=""):
echo "<p> " . $file_name . " dit is een afbeelding<br></p>";
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 "<p>Afbeelding staat op de server<br><br></p>";
}
endif;
if ($test ==""):
echo "<p> " . $file_name . " dit is geen afbeelding en wordt daarom niet op de server geplaatst<br></p>\n";
endif;
}
$afb = $file_name;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
$titel = $_POST['titel'];
$buttontekst = $_POST['buttontekst'];
$cat = $_POST['cat'];
$projecttekst = $_POST['projecttekst'];
$datum = $_POST['datum'];
echo "$titel en $buttontekst en $cat en $projecttekst en $datum en $afb";
$insertQuery = "INSERT INTO project (titel, buttontekst, cat, projecttekst, datum, foto1, foto2, foto3, foto4, foto5, foto6, foto7, foto8, foto9) VALUES('$titel','$buttontekst','$cat','$projecttekst','$datum','$afb1','$afb2','$afb3','$afb4','$afb5','$afb6','$afb7','$afb8','$afb9')";
// $insertQuery = "INSERT INTO project (titel, buttontekst, cat, projecttekst, datum, foto1, foto2, foto3, foto4, foto5, foto6, foto7, foto8, foto9) VALUES('$titel','$buttontekst','$cat','$projecttekst','$datum','$afb','$foto2','$foto3','$foto4','$foto5','$foto6','$foto7','$foto8','$foto9')";
$bool = mysql_query($insertQuery);
// show msg after
if($bool == 1) echo "<script language=JavaScript>window.alert('Publication successfully added')</script>";
if($bool <> 1) echo mysql_error();
$action = "";
}
// =======================================================================>
?>
// TOEVOEGEN
if ($action == "toevoegen")
{
include ("filter.php");
$hello = getcwd();
$file_dir = ($hello . "/../image/project/");
if (is_dir ($file_dir)) {
echo "<br><br>++directorty bestaat";
} else {
echo "<br><br>--Directory bestaat nog niet" . $file_dir;
$newpage = $file_dir;
echo ("<br>we gaan daarom de directory aanmaken");
mkdir ($newpage, 0777);
}
echo ("<br><br>");
foreach($_FILES as $file_name => $file_array)
{
$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);
$test = afbeeldingen($file_name);
if ($test !=""):
echo "<p> " . $file_name . " dit is een afbeelding<br></p>";
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 "<p>Afbeelding staat op de server<br><br></p>";
}
endif;
if ($test ==""):
echo "<p> " . $file_name . " dit is geen afbeelding en wordt daarom niet op de server geplaatst<br></p>\n";
endif;
}
$afb = $file_name;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
$titel = $_POST['titel'];
$buttontekst = $_POST['buttontekst'];
$cat = $_POST['cat'];
$projecttekst = $_POST['projecttekst'];
$datum = $_POST['datum'];
echo "$titel en $buttontekst en $cat en $projecttekst en $datum en $afb";
$insertQuery = "INSERT INTO project (titel, buttontekst, cat, projecttekst, datum, foto1, foto2, foto3, foto4, foto5, foto6, foto7, foto8, foto9) VALUES('$titel','$buttontekst','$cat','$projecttekst','$datum','$afb1','$afb2','$afb3','$afb4','$afb5','$afb6','$afb7','$afb8','$afb9')";
// $insertQuery = "INSERT INTO project (titel, buttontekst, cat, projecttekst, datum, foto1, foto2, foto3, foto4, foto5, foto6, foto7, foto8, foto9) VALUES('$titel','$buttontekst','$cat','$projecttekst','$datum','$afb','$foto2','$foto3','$foto4','$foto5','$foto6','$foto7','$foto8','$foto9')";
$bool = mysql_query($insertQuery);
// show msg after
if($bool == 1) echo "<script language=JavaScript>window.alert('Publication successfully added')</script>";
if($bool <> 1) echo mysql_error();
$action = "";
}
// =======================================================================>
?>
<div class="pubForm" id="pubForm">
<form name="form1" id="pub" method="post" action="ADD-PROJECT.php" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="5120000" />
<p>Naam project</p>
<p><input type="text" name="titel" id="titel"></p>
<p>Button naam</p>
<p><input type="text" name="buttontekst" id="buttontekst"></p>
<p>Categorie</p>
<p><input type="radio" name="cat" id="cat" value="woningbouw"> Woningbouw <br /><input type="radio" name="cat" id="cat" value="utiliteit"> Utiliteit <br /><input type="radio" name="cat" id="cat" value="diversen"> Diversen </p>
<p>Tekst</p>
<p><textarea name="projecttekst" id="projecttekst" cols="30" rows"4"/></textarea></p>
<p>Datum (jjjj-mm-dd)</p>
<p><input type="text" name="datum" id="datum"></p>
<p>Foto nr 1 (255 x 150 px)<p>
<p><input type="file" name="foto1" id="foto1" /></p>
<p>Foto nr 2 (255 x 150 px)<p>
<p><input type="file" name="foto2" id="foto2" /></p>
<p>Foto nr 3 (255 x 150 px)<p>
<p><input type="file" name="foto3" id="foto3" /></p>
<p>Foto nr 4 (255 x 150 px)<p>
<p><input type="file" name="foto4" id="foto4" /></p>
<p>Foto nr 5 (255 x 150 px)<p>
<p><input type="file" name="foto5" id="foto5" /></p>
<p>Foto nr 6 (255 x 150 px)<p>
<p><input type="file" name="foto6" id="foto6" /></p>
<p>Foto nr 7 (255 x 150 px)<p>
<p><input type="file" name="foto7" id="foto7" /></p>
<p>Foto nr 8 (255 x 150 px)<p>
<p><input type="file" name="foto8" id="foto8" /></p>
<p>Foto nr 9 (255 x 150 px)<p>
<p><input type="file" name="foto9" id="foto9" /></p>
<p><input type="submit" name="action" id="insert" value="toevoegen" /></p>
</form>
Waar maak je de verbinding met de database?
Die maak in via een include in de header, die is verder in orde omdat de andere invoervelden <INPUT type=text> wel in de database komen...
Dan is de vraag waar je de namen van de foto's in de variabelen zet die je gebruikt in je query? Test eens wat er in die variabelen zit?
Volgens mij worden dat de variabelen $ foto1, $foto2 etc etc. toch...?
Tip: $datum = $_POST['datum'];
Toevoeging op 15/02/2012 11:12:18:
Waarom gaat het bij datum dan al wel goed op de manier zoals ik het nu heb gedaan?
Toevoeging op 15/02/2012 11:14:02:
En de variabele NAAM, DATUM, TEKST e.d. worden alleen nog maar gebruikt in de INSERT QUERY, daar werkt het dus ook zonder $_POST...
Als je een form post, komen de waardes van de inputs in dat form in de $_POST array terecht. Daar staat de data dus in die je wilt hebben. Waarom $datum ook werkt in jouw geval is simpelweg omdat je eerst $datum = $_POST['datum'] doet. Haal regel 54 maar eens weg en opeens zit er geen waarde meer in $datum.
Alleen nu met de <input type="file" />, daarvan komen de waardes in de $_FILES array terecht. Niet in $_POST, omdat er meer info nodig is dan alleen de filenaam. Grappig is, dat je wel al met $_FILES werkt om de bestandsgegevens eruit te halen. Daar haal je zelfs de bestandsnaam er al uit. Je weet dus wel hoe het moet....
De gegevens in regel 54 zag ik zelfs al niet eens meer staan... Ik krijg er een beetje een waas van voor mijn ogen.
Die $_FILES wordt inderdaad gebuikt bij het wegschrijven van de files. Dat gebeurd in een foreach loop. Moet ik dat op dezelfde manier voor de database gegevens doen.
Ik moet tenslotte uitkomen op de variabelen die ik in de INSERT QUERY gebruik...
Of die variabelen aanpassen.... Je kan het ook met een array doen. Dus in de foreach loop waar je toch al alle foto's uitleest lees je ook de namen van de foto's uit en stopt ze in een array, daarna gebruik je de elementen in die array in je insert query.
Toevoeging op 15/02/2012 11:51:29:
Anders gezegd.... ik kan er niet achter komen (of ik kan dat nog niet beredeneerd krijgen) wat de waarde van de array $_FILES is. Dus $_FILES[????] De tekst op de vraagtekens zo volgens mij bijvoorbeeld 'foto1' en 'foto2' etc. etc. moeten zijn. Maar dat geeft alleen maar 'array' als resultaat als ik dat echo.