Στόχος η εμφάνιση της εικόνας από τη ΒΔ, πώς ;

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

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

Απάντηση
ritsoni
Δημοσιεύσεις: 27
Εγγραφή: 15 Δεκ 2010 01:51

Στόχος η εμφάνιση της εικόνας από τη ΒΔ, πώς ;

Δημοσίευση από ritsoni » 16 Δεκ 2010 02:31

Σε συνέχεια της ερώτησης μου Να μην ανεβαίνει η εικόνα υποχρεωτικά, πως ; η οποία λύθηκε με τη πολύτιμη βοήθεια σας, θα ήθελα να με βοηθήσετε λίγο και σχετικά με την εμφάνιση των εικόνων που έχω ανεβάσει στη ΒΔ μου .

Το άρχισα ως εξής ,

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

<?php
$username = "root";
$password = "";
$host = "localhost";
$database = "mydb";

mysql_connect&#40;$host, $username, $password&#41; or die&#40;"Αδυναμία σύνδεσης &#58; ".mysql_error&#40;&#41;&#41;;

mysql_select_db&#40;$database&#41; or die&#40;"Αδυναμία επιλογής ΒΔ&#58; ".mysql_error&#40;&#41;&#41;;

$query = mysql_query&#40;"SELECT * FROM thiki WHERE photocategory='holidays'"&#41;;
$row = mysql_fetch_array&#40;$query&#41;;
$i_eikona = $row&#91;'imgData'&#93;;
$o_titlos = $row&#91;'titlos'&#93;;

header&#40;'Content-type&#58; image/jpg'&#41;;
echo $i_eikona;
echo $o_titlos;

&#125;

?>
Άλλαξα και το πινακάκι μου στη ΒΔ προσθέτοντας του ένα πεδίο κατηγορίας και

από

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

CREATE TABLE IF NOT EXISTS `thiki` &#40;
  `id` int&#40;11&#41; NOT NULL,
  `titlos` varchar&#40;200&#41; NOT NULL,
  `imgData` blob NOT NULL
&#41;  
έγινε

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

CREATE TABLE IF NOT EXISTS `thiki` &#40;
  `id` int&#40;11&#41; NOT NULL,
  `titlos` varchar&#40;200&#41; NOT NULL,
  `imgData` blob NOT NULL,
   `photocategory` varchar&#40;100&#41; NOT NULL
&#41;
* Το id το έχω auto-increment !

Όπως θα έχετε καταλάβει θέλω να εμφανίσω ΜΟΝΟ τις εικόνες τύπου BLOB που έχουν καταχωρηθεί στην κατηγορία holidays, όμως με τον κώδικα που ανέπτυξα ως τώρα το μόνο που κατάφερα είναι να βλέπω μια άθλια λευκή σελίδα που αναγράφει απλά τη διεύθυνση του αρχείου php μου δηλαδή http://localhost/display.php

Βοήθεια, Plz :roll: :crash:

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Στόχος η εμφάνιση της εικόνας από τη ΒΔ, πώς ;

Δημοσίευση από Apostolis_38 » 16 Δεκ 2010 12:24

ritsoni έγραψε: $query = mysql_query("SELECT * FROM thiki WHERE photocategory='holidays'");
$row = mysql_fetch_array($query);
$i_eikona = $row['imgData'];
$o_titlos = $row['titlos'];

header('Content-type: image/jpg');
echo $i_eikona;
echo $o_titlos;

}

?>
Κατά πρώτον βάλε ένα while

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

while $row = mysql_fetch_array&#40;$query&#41;
Επιμένω όμως οτι καλύτερα να γυρίσεις το πεδίο στη βάση σου σε varchar και να αποθηκεύεις εκεί το όνομα (ή έστω το path) της εικόνας και την ίδια την εικόνα σε ένα folder.
Ψάξε στο forum έχει πολλά topics.

Επίσης δεν θυμάμαι αν έτσι εμφανίζονται οι εικόνες από blob ή θέλουν και το <img> tag.
Εχω πολλά χρόνια να το χρησιμοποιήσω.

ritsoni
Δημοσιεύσεις: 27
Εγγραφή: 15 Δεκ 2010 01:51

Στόχος η εμφάνιση της εικόνας από τη ΒΔ, πώς ;

Δημοσίευση από ritsoni » 16 Δεκ 2010 15:16

Ορίστε και με το while fetch,

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

<?php
$username = "root";
$password = "";
$host = "localhost";
$database = "mydb";

mysql_connect&#40;$host, $username, $password&#41; or die&#40;"Αδυναμία σύνδεσης &#58; ".mysql_error&#40;&#41;&#41;;

mysql_select_db&#40;$database&#41; or die&#40;"Αδυναμία επιλογής ΒΔ&#58; ".mysql_error&#40;&#41;&#41;;

$query = mysql_query&#40;"SELECT * FROM thiki WHERE photocategory='holidays'"&#41;;
while &#40;$row = mysql_fetch_array&#40;$query&#41;&#41; &#123;
$row = mysql_fetch_array&#40;$query&#41;;
$i_eikona = $row&#91;'imgData'&#93;;
$o_titlos = $row&#91;'titlos'&#93;;

header&#40;'Content-type&#58; image/jpg'&#41;;
echo $i_eikona;
echo $o_titlos;

&#125;
?>
αλλά το ίδιο πρόβλημα με τη λευκή σελίδα παραμένει .
Επιμένω όμως οτι καλύτερα να γυρίσεις το πεδίο στη βάση σου σε varchar και να αποθηκεύεις εκεί το όνομα (ή έστω το path) της εικόνας και την ίδια την εικόνα σε ένα folder.
Ψάξε στο forum έχει πολλά topics.
To ψάχνω, αν και θα επιθυμούσα πρώτα να καταλάβω πως εμφανίζουμε μια blob εικόνα, δεν μπορώ να το αφήσω έτσι αφού έμαθα να τις ανεβάζω τώρα να μη μπορώ και να τις δώ :oops: :)

Δηλαδή πως εμφανίζουμε μια εικόνα Blob από τη ΒΔ ;

Υποχρεωτικά πρέπει να κάνουμε χρήση του IMG tag, γιατί ;

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Στόχος η εμφάνιση της εικόνας από τη ΒΔ, πώς ;

Δημοσίευση από Apostolis_38 » 16 Δεκ 2010 15:33

- αν έχεις πρόσβαση στο php.ini βρές το dispay_errors και γύρνα το σε display_errors = On;
Θα σου βγάλει, λογικά, κάποιο μήνυμα.
Πόσταρέ το να δούμε γιατί βγάζει λευκή σελίδα.

- επίσης κάνε το query

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

WHERE photocategory like '%".$holidays."%'
μήπως τυχόν δεν μπορεί να "βρεί" την συγκεκριμένη κατηγορία

- οι εικόνες για να εμφανιστούν θέλουν το <img> tag.
Αυτό είναι html, όχι php.
Δεν θυμάμαι όμως να σου πω αν έτσι εμφανίζονται και όταν είναι καταχωρημένες σαν blob στη βάση.
Αν βρω κάτι θα σου πω.

ritsoni
Δημοσιεύσεις: 27
Εγγραφή: 15 Δεκ 2010 01:51

Στόχος η εμφάνιση της εικόνας από τη ΒΔ, πώς ;

Δημοσίευση από ritsoni » 16 Δεκ 2010 16:01

Αποστολή τελικά ο κώδικας δουλεύει,

αλλά το περίεργο είναι οτι εμφανίζει ΜΟΝΟ μία εικόνα από την κατηγορία holidays, αν και έχω ανεβάσει 3 εικόνες στη ΒΔ !

Πως δείχνει μόνο την 1 ?

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

Στόχος η εμφάνιση της εικόνας από τη ΒΔ, πώς ;

Δημοσίευση από korgr » 16 Δεκ 2010 17:41

Μα είναι δυνατόν να δουλέψει όταν έχεις την header() μέσα σε loop?
Προφανώς η κάθε header('Content-type: image/jpg') κάνει overwrite την προηγούμενη και θα σου μένει η τελευταία (που είναι και αυτή η μία που βλέπεις)

ritsoni
Δημοσιεύσεις: 27
Εγγραφή: 15 Δεκ 2010 01:51

Στόχος η εμφάνιση της εικόνας από τη ΒΔ, πώς ;

Δημοσίευση από ritsoni » 16 Δεκ 2010 20:52

korgr έγραψε:Μα είναι δυνατόν να δουλέψει όταν έχεις την header() μέσα σε loop?
Προφανώς η κάθε header('Content-type: image/jpg') κάνει overwrite την προηγούμενη και θα σου μένει η τελευταία (που είναι και αυτή η μία που βλέπεις)
μα όταν βγάζω το header('..') έξω από το loop του while,

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

<?php
$username = "root";
$password = "";
$host = "localhost";
$database = "mydb";

mysql_connect&#40;$host, $username, $password&#41; or die&#40;"Αδυναμία σύνδεσης &#58; ".mysql_error&#40;&#41;&#41;;

mysql_select_db&#40;$database&#41; or die&#40;"Αδυναμία επιλογής ΒΔ&#58; ".mysql_error&#40;&#41;&#41;;

$query = mysql_query&#40;"SELECT * FROM thiki WHERE photocategory='holidays'"&#41;;
while &#40;$row = mysql_fetch_array&#40;$query&#41;&#41; &#123;
$row = mysql_fetch_array&#40;$query&#41;;
$i_eikona = $row&#91;'imgData'&#93;;
$o_titlos = $row&#91;'titlos'&#93;;

&#125;
header&#40;'Content-type&#58; image/jpg'&#41;;
echo $i_eikona;
echo $o_titlos;
?>
Παίρνω λευκή σελίδα στην οποία απλά αναγράφεται η διεύθυνση του εγγράφου, ενώ αν είναι μέσα στο loop εμφανίζεται 1 εικόνα .

Εσύ πως θα το έκανες korg ;

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Στόχος η εμφάνιση της εικόνας από τη ΒΔ, πώς ;

Δημοσίευση από Apostolis_38 » 16 Δεκ 2010 21:20

Κάνε αυτό που σου λέω με το php.ini και μετά δοκίμασε αυτό που σου λέει ο korgr.
Να δούμε γιατί βγάζει λευκή σελίδα.

ritsoni
Δημοσιεύσεις: 27
Εγγραφή: 15 Δεκ 2010 01:51

Στόχος η εμφάνιση της εικόνας από τη ΒΔ, πώς ;

Δημοσίευση από ritsoni » 16 Δεκ 2010 21:48

Apostolis_38 έγραψε:Κάνε αυτό που σου λέω με το php.ini και μετά δοκίμασε αυτό που σου λέει ο korgr.
Να δούμε γιατί βγάζει λευκή σελίδα.
Απόστολε έχω βγάλει εκτός τo header εκτός του while loop έτσι,

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

<?php
$username = "root";
$password = "";
$host = "localhost";
$database = "mydb";

mysql_connect&#40;$host, $username, $password&#41; or die&#40;"Αδυναμία σύνδεσης &#58; ".mysql_error&#40;&#41;&#41;;

mysql_select_db&#40;$database&#41; or die&#40;"Αδυναμία επιλογής ΒΔ&#58; ".mysql_error&#40;&#41;&#41;;

$query = mysql_query&#40;"SELECT * FROM thiki WHERE photocategory='holidays'"&#41;;
while &#40;$row = mysql_fetch_array&#40;$query&#41;&#41; &#123;
$row = mysql_fetch_array&#40;$query&#41;;
$i_eikona = $row&#91;'imgData'&#93;;
$o_titlos = $row&#91;'titlos'&#93;;

echo $i_eikona;
echo $o_titlos;
&#125;

header&#40;'Content-type&#58; image/jpg'&#41;;

?>
με το αυτόν τον κώδικα λοιπόν το αποτέλεσμα είναι να εμφανίζεται πάλι 1 μόνο εικόνα !

Έκανα to display_errors = On; δεν μου εμφανίζει κάποιο σφάλμα.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Στόχος η εμφάνιση της εικόνας από τη ΒΔ, πώς ;

Δημοσίευση από Apostolis_38 » 16 Δεκ 2010 23:07

ritsoni έγραψε: $row = mysql_fetch_array($query);
Σβήστο. Το while κ.λ.π. φτάνει
ritsoni έγραψε: echo $row['imgData'];
echo $row['titlos'];
Κάντο έτσι να ξεμπερδεύουμε
ritsoni έγραψε:echo $i_eikona;
echo $o_titlos;
Σβήστα

Ενα tutorial που βρήκα έχει όντως το header μέσα στο loop. Δυστυχώς δεν μπορώ να ελέγξω ποιός τρόπος είναι ο σωστός.
Κάνε όμως το εξής.
βάλε μπροστά από το echo $row['imgData']; αυτά //
δηλαδή

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

// echo $row&#91;'imgData'&#93;;
ώστε να τυπώνει μόνο τον τίτλο και να δούμε πόσες εγγραφές θα φέρει. Μήπως το πρόβλημα δεν είναι στην εικόνα αλλά κάπου αλλού.

Επίσης κάνε αυτό

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

WHERE photocategory like '%".$holidays."%'

ritsoni
Δημοσιεύσεις: 27
Εγγραφή: 15 Δεκ 2010 01:51

Στόχος η εμφάνιση της εικόνας από τη ΒΔ, πώς ;

Δημοσίευση από ritsoni » 16 Δεκ 2010 23:33

Αποστόλη τα έκανα όλα τα βήματα που μου είπες, όμως οι τίτλοι εμφανίζονται κανονικά μονάχα αν διαγράψω(ή προσθέσω //) το jpeg header και αν προσθέσω κανονικά το while loop, χωρίς το while loop πάλι δουλεύει αλλά εκτυπώνει ένα μονάχα τίτλο, ΕΙΚΟΝΑ πάντως έτσι καμία !

Ο μόνος τρόπος που μου εκτυπώνει έστω 1 εικόνα είναι με τον κώδικα που σου έγραψα τελευταία !

Δοκίμασα και το

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

WHERE photocategory like '%".$holidays."%' 

αλλά δεν υπάρχει πρόβλημα εκεί και το παλιό και αυτό δουλεύουν το ίδιο,

Το ΠΡΟΒΛΗΜΑ είναι η εικόνα δεν εκτυπώνει τις εικόνες με while loop ή χωρός while loop, μονάχα αν βγάλω το jpeg header εκτός του while loop εμφανίζεται 1 ΜΟΝΟ εικόνα .

Εάν δε δοκιμάσω το εξής,

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

<?php
$username = "root";
$password = "";
$host = "localhost";
$database = "mydb";

mysql_connect&#40;$host, $username, $password&#41; or die&#40;"Αδυναμία σύνδεσης &#58; ".mysql_error&#40;&#41;&#41;;

mysql_select_db&#40;$database&#41; or die&#40;"Αδυναμία επιλογής ΒΔ&#58; ".mysql_error&#40;&#41;&#41;;

$holidays = 'holidays';

$query = mysql_query&#40;"SELECT * FROM thiki WHERE photocategory like '%".$holidays."%'"&#41;;
$row = mysql_fetch_array&#40;$query&#41;;
$i_eikona = $row&#91;'imgData'&#93;;
$o_titlos = $row&#91;'titlos'&#93;;

echo $i_eikona;
echo $o_titlos;

header&#40;'Content-type&#58; image/jpg'&#41;;

?>
παίρνω ξανά λευκή σελίδα στην οποία αναγράφεται απλά http://localhost/display.php, η διεύθυνση του εγγράφου μου δηλαδή

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Στόχος η εμφάνιση της εικόνας από τη ΒΔ, πώς ;

Δημοσίευση από Apostolis_38 » 17 Δεκ 2010 00:05

Το while χρειάζεται ώστε να σου εμφανίσει όλες τις γραμμές του πίνακα που πληρούν τα κριτήρια του query.
Αν βάλεις if($row = mysql_fetch_array($query); θα σου φέρει μια εγγραφή κι αν δεν βάλεις τίποτα όπως εσύ, δεν θα σου φέρει τίποτα.
Οπότε αυτό δεν το ξανασυζητάμε.


Αυτό που σκέφτομαι είναι μήπως υπάρχει πρόβλημα με τους headers και σου βγάζει κανένα headers already sent, αλλά για κάποιο λόγο δεν στο εμφανίζει στην σελίδα.

Στο πάνω πάνω μέρος της σελίδας, πρίν το $username βάλε αυτό:

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

<?php ob_start&#40;&#41;;
και στο τέλος της σελίδας αυτό:

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

ob_flush&#40;&#41;;?>

ritsoni
Δημοσιεύσεις: 27
Εγγραφή: 15 Δεκ 2010 01:51

Στόχος η εμφάνιση της εικόνας από τη ΒΔ, πώς ;

Δημοσίευση από ritsoni » 17 Δεκ 2010 00:21

ξέρω τι κάνει το while loop αλλά το πολυ αναφέραμε σωστά δε το ξανασυζητάμε !

Έκανα ότι είπες, όμως καμία αλλαγή πάλι λευκή σελίδα στη οποία αναγράφεται η διεύθυνση http://localhost/display.php και στο όνομα του tab του browser γράφει display.php (JPG Εικόνα)

Καμία εικόνα πάντως, λευκή σελίδα όπως πρώτα !

Μήπως δεν εμφανίζουμε με τον τρόπο αυτό τελικά εικόνες blob αν όχι με ποιόν ;

Τι κάνω λάθος ;

Θα ΤρΕλΑθΏ θα ********* απο το παράθυρο !!! :myeye: :banana:

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

Στόχος η εμφάνιση της εικόνας από τη ΒΔ, πώς ;

Δημοσίευση από fafos » 17 Δεκ 2010 00:29

psit... pinete kati? exei pesei tipota neo sthn agora? prospathite na typosete multiple images se ena?

h logikh einai:

image.php

aplo query... bla bla bla where id ="$_GET[id]"..klp klp

header("Content-type: image/jpeg");

echo blob...


kai kaleis sthn selida poy thes na deixeis to image me aplh html:

<img src="image.php?id=to_id_tou_image_sthn_vash"/>
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

ritsoni
Δημοσιεύσεις: 27
Εγγραφή: 15 Δεκ 2010 01:51

Στόχος η εμφάνιση της εικόνας από τη ΒΔ, πώς ;

Δημοσίευση από ritsoni » 17 Δεκ 2010 01:01

Γεια σου fafo,

γιατί λες multiple images σε ένα ;

αφού δοκιμάσαμε και με while loop + mysql_fecth_array

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

$query = mysql_query&#40;"SELECT * FROM thiki WHERE photocategory='holidays'"&#41;;
while &#40;$row = mysql_fetch_array&#40;$query&#41;&#41; &#123;
$row = mysql_fetch_array&#40;$query&#41;;
$i_eikona = $row&#91;'imgData'&#93;;
$o_titlos = $row&#91;'titlos'&#93;;

echo $i_eikona;
echo $o_titlos;
&#125;

header&#40;'Content-type&#58; image/jpg'&#41;; 

Απάντηση

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

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

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