Ανεβασμα εικονας σε database χρησιμοποιωντας PHP

Βοήθεια λύσεις και νέα από τον χώρο των open source ή έτοιμων εφαρμογών που έχουν φτιαχτεί με την PHP όπως oscommerce, κ.α.

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

Απάντηση
KingOfSorrow
Δημοσιεύσεις: 2
Εγγραφή: 10 Ιαν 2008 01:32

Ανεβασμα εικονας σε database χρησιμοποιωντας PHP

Δημοσίευση από KingOfSorrow » 04 Μάιος 2008 21:19

Γεια χαρα σε ολους!
Εχω το εξης προβλημα στη βαση test που εχω φτιαξει οπου θελω να αποθηκευονται οι εικονες που θα κανω upload στον πινακα upload κ μετα να μπορω να τις εμφανιζω.
Ομως απο οτι φαινεται μαλλον δεν συνδεω σωστα τον κωδικα html στο index του site με τον πινακα η κατι αλλο δεν κανω καλα κ οταν παταω το κουμπι για την καταχωρηση της εικονας μου βγαζει κενη οθονη.
Επειδη δεν εχω κ πολλες γνωσεις php (αυτο διαπιστωνεται ανετα!)αν εχει καποιος ιδεα για το/τα λαθη που κανω ας μου απαντησει.
Παρακατω παραθετω τον κωδικα του html αρχειου index:

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


<?php

// Connect to database

$errmsg = "";
if &#40;! @mysql_connect&#40;"localhost","root",""&#41;&#41; &#123;
        $errmsg = "Cannot connect to database";
        &#125;
@mysql_select_db&#40;"test"&#41;;
?>



<form action="download.php" method="post" 

enctype="multipart/form-data">
<table width="350" border="0" cellpadding="1" cellspacing="1" 

class="box">
<tr> 
<td width="246">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000">
<input name="userfile" type="file" id="userfile"> 
</td>
<td width="80"><input name="upload" type="submit" class="box" 

id="upload" value=" Upload "></td>
</tr>
</table>
</form>
<?php
if&#40;isset&#40;$_POST&#91;'upload'&#93;&#41; && $_FILES&#91;'userfile'&#93;&#91;'size'&#93; > 

0&#41;
&#123;
$fileName = $_FILES&#91;'userfile'&#93;&#91;'name'&#93;;
$tmpName  = $_FILES&#91;'userfile'&#93;&#91;'tmp_name'&#93;;
$fileSize = $_FILES&#91;'userfile'&#93;&#91;'size'&#93;;
$fileType = $_FILES&#91;'userfile'&#93;&#91;'type'&#93;;

$fp      = fopen&#40;$tmpName, 'r'&#41;;
$content = fread&#40;$fp, filesize&#40;$tmpName&#41;&#41;;
$content = addslashes&#40;$content&#41;;
fclose&#40;$fp&#41;;

if&#40;!get_magic_quotes_gpc&#40;&#41;&#41;
&#123;
    $fileName = addslashes&#40;$fileName&#41;;
&#125;

include 'library/config.php';
include 'library/opendb.php';

$query = "INSERT INTO upload &#40;name, size, type, content &#41; ".
"VALUES &#40;'$fileName', '$fileSize', '$fileType', '$content'&#41;";

mysql_query&#40;$query&#41; or die&#40;'Error, query failed'&#41;; 
include 'library/closedb.php';

echo "<br>File $fileName uploaded<br>";
&#125; 


?>

και ακομη τον κωδικα απο το download script που χρησιμοποιω για να εμφανισω τις εικονες:

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


<html>
<head>
<title>Download File From MySQL</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
include 'library/config.php';
include 'library/opendb.php';

$query = "SELECT id, name FROM upload";
$result = mysql_query&#40;$query&#41; or die&#40;'Error, query failed'&#41;;
if&#40;mysql_num_rows&#40;$result&#41; == 0&#41;
&#123;
echo "Database is empty <br>";
&#125; 
else
&#123;
while&#40;list&#40;$id, $name&#41; = mysql_fetch_array&#40;$result&#41;&#41;
&#123;
?>
<a href="download.php?id=<?php=$id;?>"><?php=$name;?></a> <br>
<?php 
&#125;
&#125;
include 'library/closedb.php';
?>
</body>
</html>

<?php
if&#40;isset&#40;$_GET&#91;'id'&#93;&#41;&#41; 
&#123;
// if id is set then get the file with the id from database

include 'library/config.php';
include 'library/opendb.php'; 
$id    = $_GET&#91;'id'&#93;;
$query = "SELECT name, type, size, content " .
         "FROM upload WHERE id = '$id'";

$result = mysql_query&#40;$query&#41; or die&#40;'Error, query failed'&#41;;
list&#40;$name, $type, $size, $content&#41; =                                  

mysql_fetch_array&#40;$result&#41;;

header&#40;"Content-length&#58; $size"&#41;;
header&#40;"Content-type&#58; $type"&#41;;
header&#40;"Content-Disposition&#58; attachment; filename=$name"&#41;;
echo $content;

include 'library/closedb.php'; 
exit;
&#125;
// Find out about latest image

$gotten = @mysql_query&#40;"select * from upload order by id desc limit 1"&#41;;
if &#40;$row = @mysql_fetch_assoc&#40;$gotten&#41;&#41; &#123;
        $name = htmlspecialchars&#40;$row&#91;name&#93;&#41;;
        $bytes = $row&#91;content&#93;;
&#125; else &#123;
        $errmsg = "There is no image in the database yet";
        $name = "no database image available";
        // Put up a picture of our training centre
        $instr = fopen&#40;"../wellimg/ctco.jpg","rb"&#41;;
        $bytes = fread&#40;$instr,filesize&#40;"../wellimg/ctco.jpg"&#41;&#41;;
&#125;

// If this is the image request, send out the image

if &#40;$_REQUEST&#91;gim&#93; == 1&#41; &#123;
        header&#40;"Content-type&#58; image/jpeg"&#41;;
        print $bytes;
        exit &#40;&#41;;
        &#125;
?>
οποιαδηποτε βοηθεια ειναι δεκτη.
Ευχαριστω προκαταβολικα!! 8)

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Ανεβασμα εικονας σε database χρησιμοποιωντας PHP

Δημοσίευση από cherouvim » 05 Μάιος 2008 09:14

Γιατί δεν κρατάς τη τοποθεσία του αρχείου στη βάση, και το αρχείο στο δίσκο;

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Ανεβασμα εικονας σε database χρησιμοποιωντας PHP

Δημοσίευση από Banavas » 05 Μάιος 2008 09:36

Φίλε μου καλώς όρισες στο freestuff.
Μιας και όπως λες είσαι αρκετά αρχάριος θα σου πω μερικά tips για την php.

1. Όταν η εκτέλεση του κώδικα εμφανίζει λευκή σελίδα, αν δεν εμπίπτει στην σπάνια περίπτωση του να μην έχει τίποτα να εμφανίσει, τότε υπάρχει λάθος στην σύνταξη της PHP. Ψάξε για έλλειψη ( ; ) στο τέλος κάποιας εντολής ή για διαφορετικό πλήθος παρενθέσεων ανοίγματος και κλεισίματος π.χ. (μπλα (μπλα (μπλα )) ή για έλλειψη του $ πρίν από το όνομα μιας μεταβλητής (πολλά ακόμη λάθη μπορούν να γίνουν στην σύνταξη, ανέφερα τα πιο συνήθη). Αν αναβαθμιστείς σε τελευταίες version της PHP σου βγάζει μύνημα λάθους όπου αναφέρει τη σειρά στον κώδικα που έχει το λάθος και τι λάθος υπάρχει.

2. Ο PHP κώδικας για να εκτελεστεί πρέπει να βρίσκεται σε σελίδες που έχουν κατάληξη .php.

3. στους server σε περιβάλλον linux τα directories και τα αρχεία έχουν δικαιώματα πρόσβασης συνήθως από default 644 δηλαδή δεν είναι εγγράψιμα. Για να ανεβάσεις ένα αρχείο σε ένα direcroty (μόνο για linux) πρέπει να ορίσεις δικαιώματα για το directory 777

Έλεγξέ τα αυτά που σου γράφω και αν δεν λυθεί το πρόβλημά σου ξαναποστάρισε.
Happy coding....
Μάρκος
http://lasernet.gr

Απάντηση

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

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

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