Hallo allemaal,

Ik heb een 3 php's gemaakt waar ik de pdf in beeld wil brengen. Het tonen van de tabel gaat. Echter mijn pdf's worden niet getoond (daar ging het om!)

Code connection.php


<?php

$conn = mysqli_connect("localhost", "root", "usbw", "upload");


?>


index,php


<?php

require 'connection.php';
if(isset($_POST["submit"]))
{
    $name = $_POST["name"];
    if(isset($_POST["submit"]))
        $name = $_POST["name"];
        if($_FILES["image"]["error"] === 4)
        {
            echo
            "<srcipt> alert('Image Does Not Exist'); </script>";
            ;
        }
        else
        {
            $fileName = $_FILES["image"]["name"];
            $fileSize = $_FILES["image"]["size"];
            $tmpName = $_FILES["image"]["tmp_name"];

            $validImageExtension = ['jpg','jpeg', 'png', 'pdf'];
            $imageExtension = explode('.', $fileName);
            $imageExtension = strtolower(end($imageExtension));
            if(!in_array($imageExtension, $validImageExtension))
            {
                //print_r($imageExtension);
                //print_r($validImageExtension);

                echo "<srcipt> alert('Invalid Image Extension'); </script>";
            }
            else if($fileSize > 10000000)
            {
                echo "<srcipt> alert('Image Size is too large'); </script>";
            }
                else
                {
                $newImageName = uniqid();
                $newImageName .= '.'. $imageExtension;
                }

        move_uploaded_file($tmpName, $newImageName);
        $query = "INSERT INTO tb_upload VALUES ('','$name', '$newImageName')";
        mysqli_query($conn, $query);
        echo
        "<srcipt> alert('Succesfully Added'); document.location.href = 'data.php';
        </script>";

        }
 
    }


?>


<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Upload Image File</title>
        <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
    </head>

    <body>
        <form class = "" action = ""method ="post" autocomplete = "off" enctype ="multipart/form-data">
            <label for = "name">Name: </label>
            <input type = text name = "name" id = "name" required value = ""> <br>
            <label for = "image">Image: </label>
            <input type = "file" name = "image" id = "image" accept = ".jpg, .jpeg, .png, .pdf" value =""><br><br>
            <button type = "submit" name = "submit">Submit</button>
        </fom>
        <br>
        <a href = "data.php">Data</a>
    </body>
</html>



data.php


<?php require 'connection.php'; ?>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Data</title>
        <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
    </head>

    <body>

        <table borader = 1 cellspacing = 0 cellpadding = 10>
            <tr>
                <td>#</td>
                <td>Name</td>
                <td>Image</td>
            </tr>
        <?php

        $i = 1;
        $rows = mysqli_query($conn, "SELECT * FROM tb_upload ORDER BY id ASC");
        ?>

        <?php foreach($rows as $row) : ?>
            <tr>
                <td><?php echo $i++ ?></td>
                <td><?php echo $row["name"]?></td>
                <td><img src ="<?php echo $row['image']; ?>" alt=""></td>
            </tr>
        <?php endforeach; ?>

    </table>

    <a href = "index.php">Index</a>
    </body>
</html>



Wie weet wat ik fout doe?
Lees graag even de voorgaande reacties, en doe wat met de gegeven adviezen.
Een database is wel leuk om te tonen, maar je hebt er niks aan als je code behoorlijk fout is.

Verder is een pdf geen afbeelding. Een pdf kan je nooit in een <img> bekijken.
Ed Jeurissen op 22/05/2022 22:10:56

De plaatjes staan er.


Lees de gegeven reacties. Probeer ook graag zo uitgebreid mogelijk te reageren.
Enkel met simpele reacties zoals: "Dit is de code", "De plaatjes staan er" kunnen we weinig.

Graan zien we een constructieve discussie in plaats dat we steeds alles moeten vragen. En zorg erook voor dat je zeker weet wat er gebeurt. Reacties als 'volgens mij', daar hebben we ook weinig aan.

Probeer ook bij een bericht aan de drie W's te denken:

Wat heb je aan code?
Wat doe je precies?
Wat gebeurt er precies?

Als je dit kan beantwoorden dan kan jij en kunnen ook wij beter inschatten wat er aan de hand is.
Enkel een lap code geven, en zeggen enkel dat het niet werkt, dat werkt best frustrerend voor iedereen die wilt helpen.

Ik heb dat we hiermee dit topic op een betere manier kunnen voortzetten.
Ik dat van de pdf een screenshot gemaakt en als .png opgeslagen op de plaats van de bestanden neergezet. Daar wordt ook de verwijzing neergezet. Dat is het probleem niet. Wat wel? (test.png > 628a99e4d7216.png)
Wat is nu het probleem? Je ziet geen afbeelding terwijl die wel zou moeten bestaan?
-> Check je HTML-source in je browser. En eventueel je Developers-tabblad om te kijken welke URL er opgeroepen wordt.

De items worden helemaal niet opgehaald? En er is geen herhalende <tr> in de table in je HTML-source.
-> Voeg een mysqli_fetch_assoc(....) toe.


Verder: Voeg goede foutafhandeling toe, check de genoemde SQL-Boilerplate voor de juiste structuur. Dat scheelt een hoop ellende en zoekwerk, omdat je dan al een hoop controles hebt die dan wel of niet gepasseerd worden.
Gewoon doen dus!
Dit stuk code:

        <?php foreach($rows as $row) : ?>
            <tr>
                <td><?php echo $i++ ?></td>
                <td><?php echo $row["name"]?></td>
                <td><img src ="<?php echo $row['image']; ?>" alt=""></td>
            </tr>
        <?php endforeach; ?>


levert een output die naar je browser gestuurd wordt.
In de bron van de html-pagina levert dat iets op.

Wat staat daar?
En ook: wat staat daar niet wat je wel verwacht had?

(en ik vraag me ook af of die spatie achter scr daar wel mag staan.)
- Ariën - op 22/05/2022 22:38:44

Wat is nu het probleem? Je ziet geen afbeelding terwijl die wel zou moeten bestaan?


Ja ik een plaatje zien dat er nu niet staat/ cq niet te zien is.

Stukje van de ontwikkelaarsoutput


<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Data</title>
        <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
    </head>

    <body>

        <table borader = 1 cellspacing = 0 cellpadding = 10>
            <tr>
                <td>#</td>
                <td>Name</td>
                <td>Image</td>
            </tr>
        mysqli_result Object
(
    [current_field] => 0
    [field_count] => 3
    [lengths] => 
    [num_rows] => 15
    [type] => 0
)

                    <tr>
                <td>1</td>
                <td>blad 1</td>
                <td><img src ="628a76cbc4816.pdfArray
(
    [id] => 1
    [name] => blad 1
    [image] => 628a76cbc4816.pdf
)
" alt=""></td>
            </tr>
                    <tr>
                <td>2</td>
                <td>Blad 2</td>
                <td><img src ="628a7c6aa51f6.pdfArray
(
    [id] => 10
    [name] => Blad 2
    [image] => 628a7c6aa51f6.pdf
)
" alt=""></td>
            </tr>
                    <tr>
                <td>3</td>
                <td>Blad 1</td>
                <td><img src ="628a7f0c03b6e.pngArray




-> Check je HTML-source in je browser. En eventueel je Developers-tabblad om te kijken welke URL er opgeroepen wordt. Gedaan! zie boven

De items worden helemaal niet opgehaald? En er is geen herhalende <tr> in de table in je HTML-source.
-> Voeg een mysqli_fetch_assoc(....) toe.


Verder: Voeg goede foutafhandeling toe, check de genoemde SQL-Boilerplate voor de juiste structuur. Dat scheelt een hoop ellende en zoekwerk, omdat je dan al een hoop controles hebt die dan wel of niet gepasseerd worden.
Gewoon doen dus!




Je data is toch zichtbaar tussen de flarden van de debug-output?
Wat is het probleem dan?

En nogmaals: ''628a76cbc4816.pdf' zal nooit in een <img> tag werken!
De dat wel maar het plaatje niet. VAn de pdf had ik een png gemaakt, maar zonder resultaat. Probleem is dat ik het plaatje niet kan zien!
Dit is geen plaatje:

<img src ="628a7c6aa51f6.pdf">


Je zult dan een extra veld in je database moeten aanmaken, die bijv. thumbnail heet.
Het huidige veld image zou ik dan voor het gemak bron of source noemen.

Reageren