Image uit database halen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Enrico van der List

Enrico van der List

06/04/2014 15:23:40
Quote Anchor link
menteel ben ik bezig op een foto upload systeem aan het maken en ik heb de foto's wel in de database gekregen maar ik wil nu de foto's uit laten lezen en weergeven worden op de site. maar ik heb een tutorial gevold maar uiteindelijk werkt het niet. Misschien dat jullie het kunnen zien wat ik fout heb gedaan?

member.php
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
<div id="content">        
        <form action="" method="POST" enctype="multipart/form-data">
            <input type="file" name="image"><input type="submit" name="submit" value="Upload">
        </form>
      
        <?php
            if(isset($_POST['submit']))
            {

                include('mysql_connect.php');    
                
                $imageName = mysql_real_escape_string($_FILES["image"]["name"]);
                $imageData = mysql_real_escape_string(file_get_contents($_FILES["image"]["tmp_name"]));
                $imageType = mysql_real_escape_string($_FILES["image"]["type"]);
                
                if(substr($imageType,0,5) == "image")
                {
    
                    mysql_query("INSERT INTO `blob` VALUES('', '$imageName', '$imageData')");
                    echo "wordking code";
                }
else {
                    echo "only images are allowed!!";    
                }
            }

        ?>

</div>
<div id="imageread">
<img src="showimage.php?id=6>

</div>


showimage.php
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
<?php
include('mysql_connect.php');    
    
if(isset($_GET['id'])){
    $id = mysql_real_escape_string($_GET['id']);
    $query = mysql_query("SELECT * FROM `blob` WHERE `id`=$id");
    while($row = mysql_fetch_assoc($query))
    {

        $imageData = $row["image"];    
                
    }

    header("content-type: image/jpeg");
    echo $imageData;
        
    }
else{
        echo "Error!!";
}

    ?>


- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Alvast bedankt!
Gewijzigd op 06/04/2014 16:26:05 door - Ariën -
 
PHP hulp

PHP hulp

11/05/2024 07:27:11
 
Obelix Idefix

Obelix Idefix

06/04/2014 16:34:50
Quote Anchor link
Waar controleer je of er een file is ingegeven?
Waarom sla je een afbeelding op? Je kunt toch beter/makkelijker de file uploaden en het pad+naam wegschrijven in de database?
Waarom backticks in je query?
Waarom variabelen binnen quotes?
mysql_real_escape_string gebruik je bij voorkeur in de query.
Waar controleer je of de query is gelukt?
Waarom * in je query? Je hebt maar 1 item nodig: image. Dan kun je dat toch opgeven?!
Ik neem aan dat er maar 1 uitkomst is (id zal uniek zijn)? Dan heb je geen while nodig.
Mysql komt te vervallen. Gebruik mysqli of PDO.

Debuggen: bouw foutafhandeling in --> lukt de query wel?
Wat zit er in $imageData?
 
Enrico van der List

Enrico van der List

06/04/2014 16:43:39
Quote Anchor link
http://i296429.iris.fhict.nl/img/Knipsel2.PNG
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
<?php
            if(isset($_POST['submit']))
            {

                include('mysql_connect.php');    
                
                $imageName = mysql_real_escape_string($_FILES["image"]["name"]);
                $imageData = mysql_real_escape_string(file_get_contents($_FILES["image"]["tmp_name"]));
                $imageType = mysql_real_escape_string($_FILES["image"]["type"]);
                
                if(substr($imageType,0,5) == "image")
                {
    
                    mysql_query("INSERT INTO `blob` VALUES('', '$imageName', '$imageData')");
                    echo "wordking code";
                }
else {
                    echo "only images are allowed!!";    
                }
            }

        ?>


dit gedeelte werkt wel want ik heb al mijn afbeeldingen in een database staan maar het uitlezen wil niet echt meewerken. alleen zie ik misschien iets over het hoofd...

zou het dan in het script zitten van showimage.php?
Gewijzigd op 06/04/2014 16:55:10 door Enrico van der List
 
Obelix Idefix

Obelix Idefix

06/04/2014 17:02:02
Quote Anchor link
Als het tonen niet goed gaat, dan is de kans vrij groot dat het in showimage.php zit ;-)

Hoop dat je wat met mijn opmerkingen in mijn vorige post doet/hebt gedaan.Ben je al aan het debuggen geweest?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

06/04/2014 23:54:10
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
include('mysql_connect.php');    
    
header("content-type: image/jpeg");

if(isset($_GET['id']) && intval($_GET['id']) > 0){
    $result = mysql_query("SELECT image FROM `blob` WHERE id=" . intval($id)); // geef je tabel een andere naam!
    if($row = mysql_fetch_assoc($result))
        echo $row['image'];    
}

?>


Toevoeging op 06/04/2014 23:59:08:

- blob is een keyword?/fieldtype. noem je tabel gewoon images of zo.
- als het script een image moet uitspugen ga dan geen foutmeldingen in tekst weergeven.
- BELANGRIJK: je geeft als content-type op dat het om een JPG afbeelding gaat. zorg er dan ook voor dat de afbeelding in dat formaat is opgeslagen want anders gaat het ook niet (helemaal) goed. Het is beter om de content-type ook in de tabel op te slaan.
 



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.