Hallo allemaal,

Ik heb een vraag waar ik niet uitkom.
Er zijn heel veel berichten te vinden op google over hoe je via PHP script een afbeelding upload naar en Mysql server.

Helaas vind ik niks van hoe ik deze kan weergeven in een gewone HTML.

Ik heb verschillende opties geprobeerd, maar kom er niet uit.

Zie mijn index.PHP en een Index.HTML.


<?php
// Create database connection
$db = mysqli_connect("localhost", "", "", "Test");

// Initialize message variable
$msg = "load picture";

// If upload button is clicked ...
if (isset($_POST['upload'])) {
// Get image name
$image = $_FILES['image']['name'];
// Get text
$image_text = mysqli_real_escape_string($db, $_POST['image_text']);
//
// image file directory
$target = "images/".basename($image);

$sql = "INSERT INTO fotos (image, image_text) VALUES ('$image', '$image_text')";
// execute query
mysqli_query($db, $sql);

if (move_uploaded_file($_FILES['image']['tmp_name'], $target)) {
$msg = "Image uploaded successfully";
}else{
$msg = "Failed to upload image";
}
}
$result = mysqli_query($db, "SELECT * FROM fotos");
$row = mysqli_fetch_array($result);
?>

<?php
HTML code:

<form method="POST" action="index.php" enctype="multipart/form-data">
<input type="hidden" name="size" value="1000000">
<input type="hidden" name="size1" value="1000000">
<div>
<input type="file" name="image">
</div>
<div>
<textarea
id="text"
cols="40"
rows="4"
name="image_text"
placeholder="Say something about this image..."></textarea>
</div>

<div>
<button type="submit" name="upload">upload</button>

</div>
</form>

<!-- Weergeven Afbeelding-->

<img src='images/".$row['image']">

<!-- Weergaven afbeelding 2 -->

<img src=index.php?'images/".$row['image']">
?>
Voor het weergeven van plaatjes is het meestal handig om een eigen PHP bestand te maken.
Je kiest dan bijvoorbeeld via GET-variabelen het plaatje vanuit het href-attribuut van een src-tag.
Je stuurt dan vanuit PHP een query naar MySQL om de binaire data op te halen, en je gooit dat linea recta naar de browser, voorafgegaan door de juiste headers. Die headers zijn nodig zodat de browser weet om wat voor plaatje het gaat, zodat die het kan laten zien. Je moet dus het juiste MIME-type meegeven.
Bijvoorbeeld:
<?php header("Content-type: image/gif"); ?>


Een alternatieve manier (handig voor kleine plaatjes om HTTP-requests te reduceren) is om de binaire data van het plaatje te encoderen via base64 mee te geven in de src tag, op de plek in PHP waar je te img-tag aanmaakt, bijvoorbeeld:
<?php echo '<img src="data:image/gif;base64,' . $data . '" />';?>
Om in jouw stramien te blijven komt het op het volgende neer:

<?php
// simpele vorm van queriering. Voeg zelf wel foutafhandeling toe.
$result = mysqli_query($db, "SELECT image FROM fotos WHERE user=42");
$row = mysqli_fetch_array($result);

// echo hier de afbeelding...
echo '<img src="images/'.$row['image'].'">';
?>

Je vergat mogelijk nog wel een WHERE voorwaarde. Of gaat het erop dat je meerdere/alles wilt ophalen?
Super! Ik ga ermee aan de slag. Bedankt voor de snelle reactie
Ad geeft wel het antwoord op de vraag, maar de vraag sluit niet aan bij de code.

Hier wordt niet de afbeelding in de database opgeslagen, maar alleen de naam van het bestand.
Ik denk dat ik iets vergeet of dat ik het idee verkeerd begrijp. Want in de index.php komt u wel de afbeelding naar voren. Maar dit had ik als door onderstaande te gebruiken.

<?php
while ($row = mysqli_fetch_array($result)) {
echo "<div id='img_div'>";
echo "<img src='images/".$row['image']."' >";
echo "<p>".$row['image_text']."</p>";
echo "</div>";
}
?>

Ik ben dus een totale leek wat betreft PHP. Maar als ik alleen een HTML pagina heb zonder enige PHP.
Kan ik dan een afbeelding weergeven in src="" door te verwijzen naar het $row ook al is dit dus WHERE id=?.

Ik dacht als ik bijv. <img src="index.php?.$row("image")"> zal hij verwijzen naar index.php script en result van $row als source zien. Maar blijkbaar heb ik dit fout :).

Wat heeft een index.php volgens jou te maken in een src-attribuut in je img-tag?
Die afbeelding staat gewoon in de map, dus daar roep je hem dan ook op.
Maar dan moet ik toch eerst naam uit de database halen? Of id nummer
Ja, een ID-nummer in je WHERE voorwaarde lijkt mij wel praktisch.

Reageren