login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Plaatje rechtstreeks in de database

Offline Metalhead - 19/01/2005 11:34
Avatar van MetalheadHTML gevorderde Hey hallo, hoe kun je een geüpload plaatje rechtstreeks in een
database schrijven?

Zeg maar zoiets (dit klopt dus niet, maar 't gaat om 't idee):
  1. if (isset($_FILES['thePhoto']))
  2. {
  3. mysql_query("INSERT INTO fotos (ID, Normal, Foto) VALUES ('', 1, ".$_FILES['thePhoto'].")") or die(mysql_error());
  4. }

8 antwoorden

Gesponsorde links
Offline xSc - 19/01/2005 12:10
Avatar van xSc Onbekend Als je echt de afbeeldingen in de database wilt plaatsen, volgens mij moet je dat met een BLOB-veld doen. Overigens wordt het meer aanbevolen om alleen bijv. het pad of de naam van de afbeelding op te slaan in de database en de afbeelding zelf gewoon 'fysiek' opslaan.
Offline Metalhead - 19/01/2005 12:16
Avatar van Metalhead HTML gevorderde Dat het met een BLOB-veld moet begrijp ik. De database is ook wel goed. Ik wil alleen weten hoe ik nu via php het geüploade bestand in de database kan schrijven...
Offline twopeak - 19/01/2005 12:25 (laatste wijziging 19/01/2005 12:27)
Avatar van twopeak Gouden medaille

PHP ver gevorderde
via een functie als file_get_content() ofzo.
Je moet de informatie uit het bestand uitlezen, in een string bewaren en die dan daarin opslaan. (alleee, mag ook direct)

dus lees $_FILES['thePhoto']['tmpname'] uit, doe daarop je basiscontroles (controleer of het een upgeload bestand is, hoogte/breedte en verklein indien gewenst)
Als je server compressie ondersteund, zou je het kunnen compresseren (ref.)
Offline Metalhead - 19/01/2005 12:30
Avatar van Metalhead HTML gevorderde Ik krijg deze error:
Citaat:
You have an error in your SQL syntax near 'JFIFHHÿÛC   

 $.' ",#(7),0' at line 1

met deze code:
  1. <?php
  2. if (isset($_FILES['thePhoto']))
  3. {
  4. //als het bestand groter is dan (30kb) word hij niet toegelaten
  5. if($_FILES['thePhoto']['size'] > 30720)
  6. {
  7. echo "Het bestand is <b>".$_FILES['thePhoto']['size']."</b>, het maximale toegestaan is <b>30720</b>";
  8. }
  9. else
  10. {
  11. //kijken of het bestand wel een gif, png of jpg is
  12. if ($_FILES['thePhoto']['type']=="image/gif" || $_FILES['thePhoto']['type']=="image/png" || $_FILES['thePhoto']['type'] == "image/pjpeg" || $_FILES['thePhoto']['type']=="image/jpeg")
  13. {
  14. $data = addslashes(fread(fopen($_FILES['thePhoto']['tmp_name'], "r"), $_FILES['thePhoto']['size']));
  15. mysql_query("INSERT INTO fotos (ID, Normal, Foto) VALUES ('', 1, ".$data.")") or die(mysql_error());
  16. }
  17. else
  18. {
  19. echo "Het bestand is geen png, jpg of gif";
  20. }
  21. }
  22. }
  23. ?>
  24.  
  25. <form action="upload.php" method="POST" enctype="multipart/form-data">
  26. Selecteer afbeelding om toe te voegen:
  27. <input type="file" name="thePhoto">
  28. <input type="submit" value="Voeg toe">
  29. </form>
Offline XenoX - 19/01/2005 14:10
Avatar van XenoX Gouden medailleGouden medaille

PHP expert
http://www.spoo....php?id=42

Dit is een manier.
Offline Thomas - 19/01/2005 14:26
Avatar van Thomas Moderator Coole site .
Offline twopeak - 19/01/2005 14:30
Avatar van twopeak Gouden medaille

PHP ver gevorderde
lijkt me dat je base64_encode() moet gebruiken, weer iets bijgeleerd  
ik stel me wel een vraagje bij hun keuze van het veldtype, maar ik neem aan dat het werkt, en anders gebruik je maar een BLOB veld (zie tut strings in SQL van mij natuurlijk)


Heb'm in de externe tuts toegevoegd!
Offline Metalhead - 20/01/2005 11:21
Avatar van Metalhead HTML gevorderde Ik gebruik dus een BLOB veld, dus kan die manier niet...
(want ik gebruik die tabel dus ook voor andere dingen, dus die kan ik niet aanpassen)

Nou ja, dan is het waarschijnlijk toch makkelijker om het op Henri's manier te doen. De geüploade foto's gewoon in een map zetten en de link ernaar in de database zetten (moet ik alsnog weer een nieuwe tabel aanmaken ).
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.214s