Afbeelding weergeven in HTML
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.
Code (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
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
<?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);
?>
// 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);
?>
Code (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
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
<?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']">
?>
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']">
?>
Gewijzigd op 16/10/2020 10:08:57 door Raymond Laurman
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:
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:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?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'].'">';
?>
// 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?
Gewijzigd op 16/10/2020 10:44:20 door - Ariën -
Super! Ik ga ermee aan de slag. Bedankt voor de snelle reactie
Hier wordt niet de afbeelding in de database opgeslagen, maar alleen de naam van het bestand.
Code (php)
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 :).
Die afbeelding staat gewoon in de map, dus daar roep je hem dan ook op.
Gewijzigd op 16/10/2020 19:43:59 door - Ariën -
Maar dan moet ik toch eerst naam uit de database halen? Of id nummer
Gewijzigd op 16/10/2020 23:16:43 door - Ariën -