Toon posts:

[PHP] Filename via een formulier in een DB

Pagina: 1
Acties:
  • 46 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb hier een formulier voor een CMS. Het is de bedoeling dat de beheerder een bestand van .jpg-formaat kan uploaden. Vervolgens moet de naam van dat bestand in de database geplaatst worden zodat in de online-catalogus die ik nu aan het maken ben, automatisch het juiste plaatje bij het juiste product wordt getoond. Het gaat hier om een online Kunstgallerie om precies te zijn. Dit is de code van het formulier (het gedeelte voor het uploaden dan) :

PHP:
1
2
3
4
5
<form action="database.php" method="post" ENCTYPE="multipart/form-data" name="form1" id="form1">
  <input type="hidden" name="actie" value="nieuwkunstwerk">
[...]
<input name="userfile" type="file" id="userfile">
</form>


Dit formulier verwijst dus naar database.php, waar de php code in staat. Die ziet er als volgt uit:

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

    mysql_connect("localhost", "root", "");
    mysql_select_db("korsman");

    if($actie == toevoegen){
    $sql = "update Kunstenaars SET Naam='$Naam' WHERE ID = '$_POST[ID]'";   
    mysql_query($sql) or die (mysql_error());
    mysql_select_db("korsman");             
    }
    
    if($actie == nieuwkunstwerk){
    $sql = "INSERT INTO Kunstwerken (Artikelnummer, Naam, Kunstenaar, Foto, Aantal, Prijs, Formaat, Techniek, Extra, Oplage, Jaar) VALUES ('$Artikelnummer', '$Naam', '$Kunstenaar', '$Foto', '$Aantal', '$Prijs', '$Formaat', '$Techniek', '$Extra', '$Oplage', '$Jaar')"; 
    mysql_query($sql) or die (mysql_error());
    mysql_select_db("korsman");             
    }
    
$path = "../../pictures/";
$max_size = 200000;

if (!isset($HTTP_POST_FILES['userfile'])) exit;

if (is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'])) {

if ($HTTP_POST_FILES['userfile']['size']>$max_size) { echo "Dit bestand is te groot<br>\n"; exit; }
if (($HTTP_POST_FILES['userfile']['type']=="image/gif") || ($HTTP_POST_FILES['userfile']['type']=="image/pjpeg") || ($HTTP_POST_FILES['userfile']['type']=="image/jpeg")) {

if (file_exists($path . $HTTP_POST_FILES['userfile']['name'])) { echo "Dit bestand staat al op de server, geef het bestand een andere naam.<br>\n"; exit; }

$res = copy($HTTP_POST_FILES['userfile']['tmp_name'], $path .
$HTTP_POST_FILES['userfile']['name']);
if (!$res) { echo "Upload mislukt!<br>\n"; exit; } else { echo "Upload Succesvol!<br>\n"; }

echo "Bestandsnaam: ".$HTTP_POST_FILES['userfile']['name']."<br>\n";
echo "Bestandsgrootte: ".$HTTP_POST_FILES['userfile']['size']." bytes<br>\n";
echo "Bestandsformaat: ".$HTTP_POST_FILES['userfile']['type']."<br>\n";
} else { echo "Wrong file type<br>\n"; exit; }

}
?>  


Het bovenste gedeelte is voor de normale formvelden, dit gedeelte werkt al dus dat zit wel goed. Alleen hoe kan ik er nu voor zorgen dat de naam (en het liefst nog de file extentie) in de database wordt geplaatst. Ik heb hier het veld "Foto" aangemaakt. Ik heb al geprobeerd "$HTTP_POST_FILES['userfile']['type']" in het insert statement te plaatsen, dit werkt echter niet.

Wie kan mij helpen? Bvd _/-\o_ _/-\o_

[ Voor 36% gewijzigd door Verwijderd op 17-10-2003 12:05 ]


  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 10-11-2025

OkkE

CSS influencer :+

$_FILE['userfile']['name']
of in jouw gevan denk ik $_HTTP_POST_FILES['userfile']['name']

Dat zou 'mijn_afbeelding.jpg' op moeten leveren.

___ Edit _________________________

Je moet dus je INSERT query dan NA je upload script doen, en dan op de plaats van $Foto moet je het bovenstaande gebruiken..

[ Voor 79% gewijzigd door OkkE op 17-10-2003 12:46 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Verwijderd

Topicstarter
Ik neem aan dat het insert statement dan zo wordt?

PHP:
1
2
3
4
5
        if($actie == nieuwkunstwerk){
        $sql = "INSERT INTO Kunstwerken (Artikelnummer, Naam, Kunstenaar, Foto, Aantal, Prijs, Formaat, Techniek, Extra, Oplage, Jaar) VALUES ('$Artikelnummer', '$Naam', '$Kunstenaar', '$_FILE['userfile']['name']', '$Aantal', '$Prijs', '$Formaat', '$Techniek', '$Extra', '$Oplage', '$Jaar')";    
        mysql_query($sql) or die (mysql_error());
        mysql_select_db("korsman");             
    }


Jammer genoeg krijg ik dan de volgende foutmelding:

[qoute]
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\apache\htdocs\korsman2\cms\kunstwerken\database.php on line 19
[/quote]

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 10-11-2025

OkkE

CSS influencer :+

Die wordt dan, zwaar verkort, zo:
PHP:
1
$sql = "INSERT INTO `Kunstwerken` ( $velden ) VALUES ( '$Artikelnummer', '" . $_FILE['userfile']['name'] . "', '$Aantal')";


___ Edit _______________________

Ohh en dingen als $Artikelnummer enz, zijn neem ik aan getallen, daar hoef je dan geen ' en ' omheen te zetten. Plus dat ik het geheel eigenlijk zo zou doen:
PHP:
1
$sql = "INSERT INTO `Kunstwerken` ( $velden ) VALUES ( " . $Artikelnummer . ", '" . $_FILE['userfile']['name'] . "', " . $Aantal . " )";
Dus alle variabelen buiten de quotes.. maar dat is misschien meer persoonlijk.

[ Voor 82% gewijzigd door OkkE op 17-10-2003 12:58 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

excuse me, maar dit is toch wel heel erg basic nadenk-werk hoor.

Doe gewoon eens rustig nadenken over wat je nou precies wilt en ga dat vervolgens stap voor stap in elkaar draaien. Dan kom je er best wel uit.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Dit topic is gesloten.