iemand enig idee hoe je een image dat je heb upgeload naar een database met als atribute blob, weer terug krijgt naar een normale image nadat je ze uit de database hebt gehaald.
want als je dit niet doet krijg je allemaal rare tekens bij
dit is wat ik tot nu toe heb
<?php
include "bestanden/config.php";
$query="SELECT * FROM album WHERE id='1'";
$result=mysql_query($query);
$fetch=mysql_fetch_array($result);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo $fetch['title']; ?></title>
<?php
include "bestanden/style.css";
?>
</head>
<body class="pagina">
<?php
echo " title: ";
echo $fetch['title'];
echo " data: ";
echo $fetch['data'];
echo " tijd: ";
echo $fetch['image_time'];
echo " extensie: ";
echo $fetch['ext'];
?>
</body>
</html>
alvast bedankt
PS niet al te moeilijke uitleg ben nog een beetje php noob maar dat komt wel
1: Wanneer je een SELECT-query uitvoert, geen * gebruiken, maar de velden die je wilt hebben.
2: Bij een integer geen quotes gebruiken.
3: [php]mysql_fetch_assoc[/php]() is sneller dan Array.
@SanThe: dat is meestal een goede oplossing, alleen niet in alle gevallen de oplossing. Zo moest ik op een stage een 'desktop CRM/administratie pakket' uitlezen met PHP, zodat de externe verkopers er in konden. De gegevens die via dat CRM opgeslagen werden stonden in een Interbase database die op een server stond.
Daar kwam dus in principe geen internet bij kijken, dus het opslaan van een link naar een afbeelding (afbeeldingen van producten in dat geval) had echt geen zin. Die werden dus als BLOB in de database opgeslagen.
@TS
In principe moet je een apart PHP-bestand hebben die:
- kijkt of de afbeelding bestaat, en zo ja
- de goede header uitspuugt
- en dan de BLOB-data uitspuugt.
Dat bestand kan je dan als afbeelding linken in de HTML. Bijvoorbeeld <img src="/bestand.php?id=1" />.
?
Onbekende gebruiker
28-01-2009 16:03
Elwin schreef op 28.01.2009 15:54
@SanThe: dat is meestal een goede oplossing, alleen niet in alle gevallen de oplossing. Zo moest ik op een stage een 'desktop CRM/administratie pakket' uitlezen met PHP, zodat de externe verkopers er in konden. De gegevens die via dat CRM opgeslagen werden stonden in een Interbase database die op een server stond.
Daar kwam dus in principe geen internet bij kijken, dus het opslaan van een link naar een afbeelding (afbeeldingen van producten in dat geval) had echt geen zin. Die werden dus als BLOB in de database opgeslagen.
En waarom heeft het dan geen zin?
Een db is er niet voor bedoelt om er een plaatje in op te slaan, dit doe je lekker op het filesystem, dus een link naar het bestand op het filesystem.
Lees ook dit topic maar eens.
Een database kan slim genoeg zijn om blobs goed op te kunnen slaan, en volgens mij zijn ze dat ook wel (want waarom hadden ze anders de feature?) Het is lekker makkelijk bij het syncen, je hoeft alleen de database, met een beetje geluk 1 groot bestand, heen en weer te slepen.
Maar ik heb er al veel problemen in PHP mee meegemaakt, en echt lief voor de processor etc is het ook niet. Wil je je website een beetje snel houden, dan zorg je ervoor dat de plaatjes en andere statische content buiten PHP om lopen want dat scheelt enorm. Echt! :)
Maar als je het toch nog zou willen: Je moet aan de browser vertellen dat die rare tekens de inhoud van een plaatje zijn. En dat doe je door een content-type header mee te sturen. Bijvoorbeeld
<?php
header('Content-Type: image/jpeg');
?>
En inderdaad, je kan ze mixen. Je zal je HTML en je plaatje moeten scheiden. In je HTML plaats je een <img>-tag, en die laat je verwijzen naar de PHP pagina die het plaatje echo't.
<?php
header("Content-Type: image/jpeg");
include "bestanden/config.php";
$query="SELECT data FROM album WHERE id='1'";
$result=mysql_query($query);
echo $result;
?>