Foto's wel naar de server, niet naar de DB

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pieter Michielsen

Pieter Michielsen

15/02/2012 10:45:34
Quote Anchor link
Ik ben nu drie dagen bezig met het volgende probleem (voor mij in ieder geval een probleem...)
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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 = "";
}

// =======================================================================>
?>

<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>
 
PHP hulp

PHP hulp

25/11/2024 17:11:56
 
Erwin H

Erwin H

15/02/2012 10:47:33
Quote Anchor link
Waar maak je de verbinding met de database?
 
Pieter Michielsen

Pieter Michielsen

15/02/2012 10:58:57
Quote Anchor link
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...
 
Erwin H

Erwin H

15/02/2012 11:04:54
Quote Anchor link
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?
 
Pieter Michielsen

Pieter Michielsen

15/02/2012 11:07:34
Quote Anchor link
Het formulier dat ik gebruik staat onder het script in het bovenste bericht
Volgens mij worden dat de variabelen $ foto1, $foto2 etc etc. toch...?
 
Erwin H

Erwin H

15/02/2012 11:08:49
Quote Anchor link
Nee.

Tip: $datum = $_POST['datum'];
 
Pieter Michielsen

Pieter Michielsen

15/02/2012 11:11:05
Quote Anchor link
Die kan ik vervolgens niet uitlezen, maar de gegevens worden wel mee overgenomen. Anders zouden de afbeeldingen ook niet naar de server gekopieerd kunnen worden...

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...
 
Erwin H

Erwin H

15/02/2012 11:21:18
Quote Anchor link
Ok, ik dacht dat je verder was met php, en ik was ook iets te snel. Naast $_POST heb je hier $_FILES nodig, die je overigens al gebruikt. Een iets uitgebreidere uitleg dus.

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....
 
Pieter Michielsen

Pieter Michielsen

15/02/2012 11:33:19
Quote Anchor link
Ik weet inderdaad wel hoe het een beetje werkt, maar soms loop je een doodlopende straat in die je niet meer uit komt.
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...
 
Erwin H

Erwin H

15/02/2012 11:39:57
Quote Anchor link
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.
 
Pieter Michielsen

Pieter Michielsen

15/02/2012 11:46:18
Quote Anchor link
Dat is voor mij nog een abacadabra hoe ik dat moet combineren. Ik snap wat er gebeurd als ik een script zie, maar het script zo aanpassen dat is nog een brug te ver...

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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.