Toon posts:

[MySQL]

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

Verwijderd

Topicstarter
Ik heb een vraagje over het uploaden van bestanden en vervolgens het schrijven van de naam in een database.

Op de volgende site heb ik een tutorial gevonden, waarmee ik perfect kan uploaden:
http://www.phpfreaks.com/tutorials/36/0.php

Echter wil ik vervolgens de naam en grootte van het bestand schrijven in een MySQL database.

code:
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
<form name="form1" method="post" action="" enctype="multipart/form-data"> 
<input type="file" name="imagefile"> 
<input type="submit" name="Submit" value="Submit"> ';

if(isset( $Submit )) 
{ 
if ($_FILES['imagefile']['type'] == "image/gif"){ 
    copy ($_FILES['imagefile']['tmp_name'], "../upload/".$_FILES['imagefile']['name'])  
    or die ("Could not copy"); 

      echo "<br><br>";  
      echo "<b>Upload klaar</b><br><br>";  
      echo "Naam: ".$_FILES['imagefile']['name']."<br> ";  
      echo "Grootte: ".$_FILES['imagefile']['size']." bytes<br> ";  
      echo "Type: ".$_FILES['imagefile']['type']."<br><br> ";  

//    mysql_query("INSERT INTO plaatjes (name,size) VALUES (
      addslashes ($_FILES['imagefile']['name']),
      addslashes ($_FILES['imagefile']['size'])"); 

       } 
        else { 
            echo ""; 
            echo "Could Not Copy, Wrong Filetype (".$_FILES['imagefile']['name'].")"; 
        } 
}


In de // regel wil ik de waarde schrijven in de database maar dat werkt zo dus niet. De naam wordt wel goed geprint in de "html" code ".$_FILES['imagefile']['name']." maar ik kan deze naam dus niet in een database gooien.

Wie kan me vertellen hoe ik dit wel kan doen?

Dit is de database:
code:
1
2
3
4
5
6
CREATE TABLE plaatjes (
  ID int(10) unsigned NOT NULL auto_increment,
  name text,
  size text,
  PRIMARY KEY  (ID)
) TYPE=MyISAM;



--

ONDERWERP VERGETEN :o :o :o

[ Voor 0% gewijzigd door Verwijderd op 06-11-2002 15:09 . Reden: HELP ]


Verwijderd

Ik ken php niet zo goed, maar SQL wel. Je moet enkele quotes (') om de name en size zetten. Zoiets als:

code:
1
2
3
mysql_query("INSERT INTO plaatjes (name,size) VALUES ( '
      addslashes ($_FILES['imagefile']['name']) ' , ' 
      addslashes ($_FILES['imagefile']['size'] ' )");

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Waarom zou dat niet werken? De name is gewoon een string.. die kan zo de database in (al was een varchar(255) hier wat efficienter geweest dan een textblob)...

Ow ja.. quotes :) String hebben quotes nodig ;) Dank typhon

  • Lurge
  • Registratie: Maart 2000
  • Niet online

Lurge

ActueleWind

ik zou het zo doen:
PHP:
1
2
3
4
5
6
$sql = "
   INSERT INTO 
     plaatjes (name,size) 
   VALUES ('".addslashes ($_FILES['imagefile']['name'])." ',
        '".addslashes ($_FILES['imagefile']['size'])."')";
mysql_query($sql);

Kan zo met deze layout ff niet zien of het goed is maar denk dat het zo moet werken.

ActueleWind


Verwijderd

Topicstarter
Bedankt voor de reacties :)

Het heeft al iets geholpen alleen nu gebruik je 2x dezelfde haakjes
( ' addslashes ($_FILES['
Dat geeft een error

Nu dacht ik het dan zo te doen:

code:
1
2
3
mysql_query("INSERT INTO plaatjes (name,size) VALUES ( '
      addslashes ($_FILES[imagefile][name]) ' , ' 
      addslashes ($_FILES[imagefile][size] ' )");


Maar dat wordt er dit in de database geschreven :(

addslashes (Array[name])

Dus ik ben er al bijna, alleen nu wordt het verkeerde in de MySQL database geschreven.

Verwijderd

Topicstarter
Lurge schreef op 06 november 2002 @ 15:59:
ik zou het zo doen:
PHP:
1
2
3
4
5
6
$sql = "
   INSERT INTO 
     plaatjes (name,size) 
   VALUES ('".addslashes ($_FILES['imagefile']['name'])." ',
        '".addslashes ($_FILES['imagefile']['size'])."')";
mysql_query($sql);

Kan zo met deze layout ff niet zien of het goed is maar denk dat het zo moet werken.
:*) :) ;) :> _/-\o_
Geweldig! That's it! Ctrl+c, Ctrl+v, It's working... it's working!

THNX! (Voor het geval het nog niet duidelijk was)

  • sjon.
  • Registratie: November 2002
  • Laatst online: 14-01-2024
admiraal, wat jij probeerde te doen was een functie (addslashes) uitvoeren IN een string, zonder de string te onderbreken, wat dus gewoonweg niet kan.
ben zelf een sprintf() gebruiker, dus ik zou zoiets doen:
PHP:
1
2
3
4
<?php
    $sql = sprintf('INSERT INTO plaatjes (name, size) VALUES (\'%s\', %d)', 
        addslashes($_FILES['imagefile']['name']), $_FILES['imagefile']['size']);
?>

en als tabel:
code:
1
2
3
4
5
6
create table plaatjes (
    id mediumint unsigned not null auto_increment,
    name varchar (255) not null,
    size int unsigned not null,
    primary key (id)
);


maar lurge's code is ook toppie :)


sjon.

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Sjon, wil jij vertellen waarom jij sprintf() gebruikt? Aangezien alle variabelen strings zijn is het imo gewoon overbodig, en kan je beter gewoon echo gebruiken...

Verwijderd

Je kan toch geen echo() in een mysql_query() gebruiken 8)7

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Verwijderd schreef op 06 november 2002 @ 22:48:
Je kan toch geen echo() in een mysql_query() gebruiken 8)7
Zie jij daar een mysql_query staan dan? 8)7

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Nielsz schreef op 07 November 2002 @ 09:14:
[...]

Zie jij daar een mysql_query staan dan? 8)7
Lekker bijdehand Nielz, maar kijk nog eens goed naar het antwoord van sjon voor je jezelf helemaal voor paal zet :P
(hint: is echo een functie?)

Today's subliminal thought is:


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 29-08 22:51

D2k

gaat nergens meer over

Doet iets met Cloud (MS/IBM)

Pagina: 1

Dit topic is gesloten.