πρόβλημα στην προβολή εικόνας από mysql

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
saavedra29
Δημοσιεύσεις: 6
Εγγραφή: 10 Δεκ 2010 09:39

πρόβλημα στην προβολή εικόνας από mysql

Δημοσίευση από saavedra29 » 10 Δεκ 2010 09:46

Παιδιά έχω κάνει δύο αρχεία php για να διαλέγω και να προβάλλω εικόνες από τη database μου( mysql έχω ).
Στο πρώτο ( imageDisplay.php ) έχω φτιάξει έναν πίνακα που προβάλλει το περιεχόμενο του συγγεκριμένου table και links για προβολή των εικόνων.
Στο δέυτερο ( foto.php ) πέρνω το id της συγγεκριμένης εικόνας και την προβάλλω. Για την ακρίβεια θα ήθελα να την προβάλλω, αλλά δεν γίνεται.
Μου λέει "the image <path/της/εικόνας> cannot be displayed because it contains errors". Τις εικόνες τις έχω αποθηκευμένες με το phpmyadmin ως mediumblob και έχω δοκιμάσει τα πάντα. Εκεί που λέει mime types έχω βάλει όλες τις επιλογές( και κενό ) αλλά τίποτα. Έχω δοκιμάσει σε firefox, google-chrome, sea-monkey τίποτα....
Μήπως ξέρετε τί μπορεί να φταίει; Είναι 2 μέρες τώρα που προσπαθώ...παρακάτω έχω τον κώδικα των 2 αρχείων.

imageDisplay.php

Κώδικας: Επιλογή όλων

<?php
include "functions.php";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
</head>
<body>

<table border = "1px solid black;">
<tr>
<td>id</td>
<td>user</td>
<td>type</td>
<td>name</td>
<td>comment</td>
</tr>

<?php 

$result = mysql_query&#40; "SELECT * FROM uploaded_images" &#41;;
while &#40; $row = mysql_fetch_assoc&#40; $result &#41; &#41;
&#123;
                  echo "<tr>";
                  echo "<td>" . $row&#91; 'id' &#93; . "</td>";
                  $id = $row&#91; 'id' &#93;;
                  echo "<td>" . $row&#91; 'user' &#93; . "</td>";
                  echo "<td>" . $row&#91; 'type' &#93; . "</td>";
                  echo "<td>" . $row&#91; 'name' &#93; . "</td>";
                  echo "<td>" . $row&#91; 'text' &#93; . "</td>";
        echo "  <td> <a href='foto.php?id=$id'>download</a> </td>\n";
                  echo "</tr>";
&#125;
echo "</table>";

?>



</body>
</html>

foto.php


Κώδικας: Επιλογή όλων

<?php
include&#40; 'functions.php' &#41;;


$query = mysql_query&#40; "SELECT * FROM uploaded_images WHERE id = 1" &#41;;
$image = mysql_fetch_assoc&#40; $query &#41;;
$final = stripslashes&#40; $image&#91; 'image' &#93; &#41; ;
$name = stripslashes&#40; $image&#91; 'name' &#93; &#41;;
$type = stripslashes&#40; $image&#91; 'type' &#93; &#41;;
$id = $image&#91; 'id' &#93;;



  header&#40; 'Content-type&#58;image/png' &#41;;
  //header&#40; "Content-lenght&#58;$size" &#41;;
  //header&#40;'Content-Disposition&#58; attachment; filename=' . $name&#41;;
 // header&#40;'Content-Description&#58; PHP Generated Data'&#41;;
  //header&#40; 'Content-Transfer-Encoding&#58; binary' &#41;;

echo $final;
 
?>

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27626
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

πρόβλημα στην προβολή εικόνας από mysql

Δημοσίευση από cordis » 10 Δεκ 2010 10:36

γιατί κάνεις stripslashes στο image;
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

πρόβλημα στην προβολή εικόνας από mysql

Δημοσίευση από korgr » 10 Δεκ 2010 11:01

Και γιατί δεν αποθηκεύεις ξεχωριστα το image πχ ως jpg και στην mysql να καταχωρείς απλά το path της?
Ιδανικά τα paths θα πρέπει να αποθηκεύονται σε βοηθητικό πίνακα ώστε να μπορείς να κάνεις asset sharing (πχ την ίδια εικόνα να την μοιράζονται περισσότερα άρθρα), αποθηκεύοντας στον κυρίως πίνακά σου μόνο το id του path.

saavedra29
Δημοσιεύσεις: 6
Εγγραφή: 10 Δεκ 2010 09:39

πρόβλημα στην προβολή εικόνας από mysql

Δημοσίευση από saavedra29 » 10 Δεκ 2010 12:15

cordis έγραψε:γιατί κάνεις stripslashes στο image;
Είχα ενεργοποιημένο το magic_quotes_gpc. Tώρα βέβαια το απενεργοποίήσα και αφαίρεσα και τα
stripslashes αλλά και πάλι το αποτέλεσμα είναι ίδιο..

saavedra29
Δημοσιεύσεις: 6
Εγγραφή: 10 Δεκ 2010 09:39

πρόβλημα στην προβολή εικόνας από mysql

Δημοσίευση από saavedra29 » 10 Δεκ 2010 12:22

korgr έγραψε:Και γιατί δεν αποθηκεύεις ξεχωριστα το image πχ ως jpg και στην mysql να καταχωρείς απλά το path της?
Ιδανικά τα paths θα πρέπει να αποθηκεύονται σε βοηθητικό πίνακα ώστε να μπορείς να κάνεις asset sharing (πχ την ίδια εικόνα να την μοιράζονται περισσότερα άρθρα), αποθηκεύοντας στον κυρίως πίνακά σου μόνο το id του path.
korgr εννοείς να έχω το binary αρχείο σε άλλον πίνακα και τα χαρακτηρηστικά του αρχείου σε άλλον;
Και πες ότι το κάνω, πώς αυτό θα λύσει το πρόβλημα που έχω;

Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

πρόβλημα στην προβολή εικόνας από mysql

Δημοσίευση από Khronos » 10 Δεκ 2010 12:27

Ο korgr εννοεί να αποθηκεύεις μόνο το path του αρχείου, πχ. /images/test.jpg και να έχεις το image στο filesystem έτσι ώστε να το βρίσκεις ακολουθώντας το path που έχεις στη βάση.

saavedra29
Δημοσιεύσεις: 6
Εγγραφή: 10 Δεκ 2010 09:39

πρόβλημα στην προβολή εικόνας από mysql

Δημοσίευση από saavedra29 » 10 Δεκ 2010 13:16

Ναι, αυτή είναι καλή λύση, αλλά εγώ ήθελα να αποθηκέυω τις φωτογραφίες στη database, για να μην επιβαρύνω το filesystem, δεδομένου ότι τη database την έχω μεταφέρει στο home partition που είναι πολύ μεγάλο και δεν υπάρχει πρόβλημα χώρου.Ίσως να κάνω ένα ξεχωριστό /var partition ( αν τα καταφέρω χωρίς να χρειαστεί να ξαναεγκαταστήσω το slackware ), και έτσι να έχω πιο πολλές επιλογές.
off topic: Και με την ευκαιρία να ρωτήσω κάτι, αν και δεν το έψαξα ακόμα, γίνεται να ανεβάζω στο site φωτογραφίες που είναι αποθηκευμένες εκτός του φακέλου του server; π.χ. με κάποιο softlink;

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27626
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

πρόβλημα στην προβολή εικόνας από mysql

Δημοσίευση από cordis » 10 Δεκ 2010 14:04

άμα κάνεις soflink δε θα υπάρχει πρόβλημα.. φτάνει φυσικά να είναι κάτω από το www.

πάντως οι εικόνες στην database αντί στο filesystem θα σου καθυστερούν πολύ το σύστημα.. γιατί στο τέλος και ότι βάζεις στην database στο file system καταλήγει.. αλλά με διάμεσο την βάση..
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

πρόβλημα στην προβολή εικόνας από mysql

Δημοσίευση από fafos » 10 Δεκ 2010 15:36

Sto krasovarelo vazoume krasi.. an erthei katoxh isos krypsoume tis lires...
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

saavedra29
Δημοσιεύσεις: 6
Εγγραφή: 10 Δεκ 2010 09:39

πρόβλημα στην προβολή εικόνας από mysql

Δημοσίευση από saavedra29 » 11 Δεκ 2010 01:22

Τελικά έκανα ξεχωριστό /var partition καλού κακού.
Πάντως απ'ότι βλέπω όλοι είναι κατά του να αποθηκέυω φωτογραφίες στη database. Μου κάνει εντύπωση αυτό, πίστευα ότι όσο περισσότερα μπορούσα να αποθηκέυω στη database τόσο καλύτερα θα ήτανε ( τουλάχιστον από θέμα προσβασιμότητας και ευελιξίας σε συνεργασία με ένα site ).
Αλλά αρχίζω να αναθεωρώ..

Άβαταρ μέλους
dimsis
Reporter
Δημοσιεύσεις: 7994
Εγγραφή: 25 Ιούλ 2001 03:00

πρόβλημα στην προβολή εικόνας από mysql

Δημοσίευση από dimsis » 11 Δεκ 2010 08:50

Χωράει πολύ συζήτηση το θέμα. Και εγώ προτιμώ και χρησιμοποιώ το filesystem παρά την database πάντως. Και τα 2 έχουν τα θετικά τους και τα αρνητικά τους, με πιο συνηθισμένο αρνητικό της db images storage το γεγονός ότι πολλοί hosters στα πακέτα φιλοξενίας τους παρέχουν βάσεις δεδομένων που φτάνουν σε ένα συγκεκριμένο ανώτατο μέγεθος αρχείου. Αν είσαι σε shared hosting server δες στα χαρακτηριστικά του πακέτου σου μέχρι τι μέγεθος σου επιτρέπουν να είναι η βάση δεδομένων σου, οπότε κάνε και τους υπολογισμούς σου αν σε παίρνει να τις αποθηκεύεις στην db, βάση του πλήθους των εικόνων που υπολογίζεις πως θα έχεις.

Δες τι γράφει και η Microsoft:
Database or File System

Web applications often have graphics associated with tabular data. For example, real estate Web sites typically include photographs of homes for sale. On company intranet sites, client databases can contain image files of client products. For such applications, a common design question involves whether the images should be stored in the database or in a file system. In most cases, the best choice is to store the images in the database together with the other data.

Storing the images in a database is the better choice if the application in which the images will be used count on the benefits of a database system. The benefits of storing the images in the database include:

* Scalability. Although file systems are designed to handle a large number of objects of varying sizes, file systems usually are not optimized for a huge number (tens of millions) of small files. Database systems are optimized for such cases.

Availability. SQL Server has availability features that extend beyond those provided by the file system.
o SQL Server replication is a set of solutions that allow you to copy, distribute, and potentially modify data in a distributed environment.
o Log shipping provides a way of keeping a stand-by copy of a database in case the primary system fails.

Storing images in a file system would be a better choice if:

* The application in which the images will be used requires streaming performance, such as real-time video playback.
* BLOBs require frequentaccess by applications, such as Microsoft PhotoDraw&#174; or Adobe Photoshop, which only know how to access files.
* You want to use some specific feature in the NTFS file system such as Remote Storage.

As with most guidelines though, these points can assist in decision making only after a thorough research of the specific use, environment, and purpose of the application.
στην έκδοση του SQL Server 2008 μάλιστα η MS δίνει και το FILESTREAM ως άλλη μια πρόταση.

Διάβασε και εδώ για περισσότερες απόψεις: http://stackoverflow.com/questions/3748 ... yea-or-nay

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

πρόβλημα στην προβολή εικόνας από mysql

Δημοσίευση από cpulse » 11 Δεκ 2010 09:56

Σκέψου οτι και το file system, κι αυτό βάση δεδομένων είναι. Απλά αντί να δουλεύει με SQL και με database cursors, δουλεύει με file handles.

saavedra29
Δημοσιεύσεις: 6
Εγγραφή: 10 Δεκ 2010 09:39

πρόβλημα στην προβολή εικόνας από mysql

Δημοσίευση από saavedra29 » 12 Δεκ 2010 01:54

Βασικά είμαι πολύ καινούριος στο αντικείμενο, δεν είχα αντιλφθεί καν ότι τα αρχεία όταν αποθηκέυονται στη database αλλάζουν δομή. Αυτό και μόνο του προφανώς λέει πολλά αφού λογικά για να χρησιμοποιηθούν από μια εφαρμογή πρέπει να μετατραπούν στην προταρχική τους μορφή. Εκτός αν κάνω λάθος...
Τελικά έκανα έτσι την php ώστε να αποθηκέυετε μόνο το path και οι πληροφορίες στη mysql, και οι φωτογραφίες σε φάκελο.
Σας ευχαριστώ για τη βοήθεια :)

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

πρόβλημα στην προβολή εικόνας από mysql

Δημοσίευση από korgr » 12 Δεκ 2010 08:51

saavedra29 έγραψε: Τελικά έκανα έτσι την php ώστε να αποθηκέυετε μόνο το path και οι πληροφορίες στη mysql, και οι φωτογραφίες σε φάκελο.
Σας ευχαριστώ για τη βοήθεια :)
Μόλις έκανες ένα ξεκίνημα για το οποίο δεν θα μετανιώσεις ποτέ αργότερα. Ίσως κάποια στιγμή όταν θα έχεις αποκτήσει εμπειρία, να θυμάσαι αυτή σου την απόφαση και να συνειδητοποιείς πόσο σωστή ήταν...

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης