Afbeelding weergeven in HTML

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Raymond Laurman

Raymond Laurman

16/10/2020 09:39:27
Quote Anchor link
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.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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);
?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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']">
?>
Gewijzigd op 16/10/2020 10:08:57 door Raymond Laurman
 
PHP hulp

PHP hulp

27/11/2024 20:35:21
 

16/10/2020 10:23:34
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo '<img src="data:image/gif;base64,' . $data . '" />';?>
Gewijzigd op 16/10/2020 10:23:49 door
 
- Ariën  -
Beheerder

- Ariën -

16/10/2020 10:43:41
Quote Anchor link
Om in jouw stramien te blijven komt het op het volgende neer:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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'].'">';
?>


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 -
 
Raymond Laurman

Raymond Laurman

16/10/2020 10:46:58
Quote Anchor link
Super! Ik ga ermee aan de slag. Bedankt voor de snelle reactie
 
Ivo P

Ivo P

16/10/2020 13:17:50
Quote Anchor link
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.
 
Raymond Laurman

Raymond Laurman

16/10/2020 19:21:58
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?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 :).
 
- Ariën  -
Beheerder

- Ariën -

16/10/2020 19:41:49
Quote Anchor link
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.
Gewijzigd op 16/10/2020 19:43:59 door - Ariën -
 
Raymond Laurman

Raymond Laurman

16/10/2020 22:59:09
Quote Anchor link
Maar dan moet ik toch eerst naam uit de database halen? Of id nummer
 
- Ariën  -
Beheerder

- Ariën -

16/10/2020 23:16:34
Quote Anchor link
Ja, een ID-nummer in je WHERE voorwaarde lijkt mij wel praktisch.
Gewijzigd op 16/10/2020 23:16:43 door - Ariën -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.