Avatar billede krydset Nybegynder
20. august 2003 - 22:45 Der er 46 kommentarer og
1 løsning

vise data fra en mysql db samt billede

hejsa eksperter.

jeg har en database "pc-dk" med flg tabel"guestbook" med disse felter "name, location, email, url, comments, id(primary, autoincrement), dato, ip, file_code, file_size, file_type" som er til en gæstebog, og jeg har lige lavet så ,am kan smide et billede(max 20kb) med op i db.


mit script jeg indsætter med ser sådan her ud og det virker perfekt....

-----------------------------------------------------------
include("../dbconnect.php");


if ($form_data && $form_data != "none") {
    $file_code = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));
    #$connect = mysql_connect("MYSQLSERVER","USERNAME","PASSWORD");
    #mysql_select_db("YOURDB",$connect);
    if (mysql_query("insert into guestbook (name, location, email, url, comments, dato, ip, file_code, file_size, file_type) values ('$name', '$location', '$email', '$url', '$comments', '$dato', '$ip', '$file_code', '$form_data_size', '$form_data_type')")) {
        echo "Your file is saved i the mysql-table 'files'";
    } else {
        echo "A problem occured, and the file hasn't been saved";
    }
}
echo '<br>Vælg et billede som skal i gøstebogen</br>';
echo '<form action="upload.php" method="post" enctype="multipart/form-data">';
echo '<form action="Filer_i_mysql.php" method="post" enctype="multipart/form-data">';
echo 'Select file: <input type="file" name="form_data">';
echo '<input type="hidden" name="MAX_FILE_SIZE" value="1000000"><br>'; //Defines max_file_size of files

echo '<br>name:</br>';
echo '<input type="text" name="name">';

echo '<br>location:</br>';
echo '<input type="text" name="location">';


echo '<br>email:</br>';
echo '<input type="text" name="email">';

echo '<br>url:</br>';
echo '<input type="text" name="url">';

echo '<br>Kommentar</br>';
echo '<textarea name="comments" cols="40" rows="4" wrap=virtual></textarea>';





echo '<input type="submit">';
echo '</form>';

?>
-----------------------------------------------------------
Men når jeg når til at skal hive noget ud kokser det for mig.

har det her som jeg normalt bruger til gæstebogen, og det virker fint uden billede.
-----------------------------------------------------------

<?PHP
include("../dbconnect.php");
?>

<h2>Se gæstebogen</h2>

<?PHP

$result = mysql_query("select * from guestbook order by id desc") or
    die(mysql_error());
while ($row = mysql_fetch_array($result))
{
    echo "<b>Navn:</b>";
    echo $row["name"];
    echo "<br>\n";
   
    echo "<b>Sted:</b>";
    echo $row["location"];
    echo "<br>\n";
   
    echo "<b>E-mail:</b>";
    echo $row["email"];
    echo "<br>\n";
   
    echo "<b>Hjemmeside:</b>";
    echo $row["url"];
    echo "<br>\n";
   
    echo "<b>Kommentar:</b>";
    echo nl2br($row["comments"]);
    echo "<br>\n";
   
    echo "<b>Dato:</b>";
    echo $row["dato"];
    echo "<br>\n";
   
   
    echo "<br>\n";
    echo "<br>\n";
}
mysql_free_result($result)
?>
-----------------------------------------------------------

men kan i fortælle hvad jeg skal ændre for at få billedet med ud???
Avatar billede krydset Nybegynder
20. august 2003 - 22:51 #1
billedet bliver gemt i file_code
Avatar billede detox Nybegynder
20. august 2003 - 23:37 #2
Du henter bare data'en og viser den. Fx:

$res = mysql_query("SELECT file_code FROM guestbook WHERE id=1");
$data = mysql_fetch_row($res);
echo $data[0];
Avatar billede krydset Nybegynder
20. august 2003 - 23:42 #3
funger ik :-(
Avatar billede detox Nybegynder
20. august 2003 - 23:53 #4
Det ser nu heller ikke ud til at du gemmer de rigtige data.
Du skal bruge noget i den her stil:

$size = $_FILES['form_data']['size'];
$type = $_FILES['form_data']['type'];
$file_code = addslashes(fread(fopen($_FILES['form_data']['tmp_name'], "r"), $size));
Avatar billede Slettet bruger
20. august 2003 - 23:56 #5
Du skal (hvis der er et billede) udskrive <img src="getimage.php?id=1"> hvor 1 altså er id'et på den entry i gæstebogen for hvilke du vil have vist billedet.

getimage.php skal så hente file_code, file_type fra databasen og gøre følgende:

// ... hent $file_code og $file_type fra databasen hvor id = $_GET['id']
header("Content-type: ".$file_type);
echo $file_content;
Avatar billede detox Nybegynder
21. august 2003 - 00:08 #6
mercur8 -> Dette virker fint:

$res = mysql_query("SELECT file_code FROM guestbook WHERE id=1");
$data = mysql_fetch_row($res);
echo $data[0];
Avatar billede Slettet bruger
21. august 2003 - 00:11 #7
detox: Så har du en særdeles taknemmelig browser.

Under alle omstændigheder er det ikke den korrekte måde at gøre det på.
Avatar billede krydset Nybegynder
21. august 2003 - 00:40 #8
har lige snakket med en kammerat om det og vi prøvede sådan her. desværre skulle han iseng så kunne ikke hjælpe mere i aften. men kig lige på det her engang.

//scriptet der propper i database

<?php
include("../dbconnect.php");

if ($form_data && $form_data != "none") {
    $file_code = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));
    #$connect = mysql_connect("MYSQLSERVER","USERNAME","PASSWORD");
    #mysql_select_db("YOURDB",$connect);
    if (mysql_query("insert into guestbook (name, location, email, url, comments, dato, ip, file_code, file_size, file_type) values ('$name', '$location', '$email', '$url', '$comments', '$dato', '$ip', '$file_code', '$form_data_size', '$form_data_type')")) {
        echo "Your file is saved i the mysql-table 'files'";
    } else {
        echo "A problem occured, and the file hasn't been saved";
    }
}
echo '<br>Vælg et billede som skal i gøstebogen</br>';
echo '<form action="upload.php" method="post" enctype="multipart/form-data">';
echo '<form action="Filer_i_mysql.php" method="post" enctype="multipart/form-data">';
echo 'Select file: <input type="file" name="form_data">';
echo '<input type="hidden" name="MAX_FILE_SIZE" value="1000000"><br>'; //Defines max_file_size of files

echo '<br>name:</br>';
echo '<input type="text" name="name">';

echo '<br>location:</br>';
echo '<input type="text" name="location">';


echo '<br>email:</br>';
echo '<input type="text" name="email">';

echo '<br>url:</br>';
echo '<input type="text" name="url">';

echo '<br>Kommentar</br>';
echo '<textarea name="comments" cols="40" rows="4" wrap=virtual></textarea>';





echo '<input type="submit">';
echo '</form>';

?>
-------------------------------------------------------------------------------

//scriptet der skulle hente billederne
<?PHP

include("../dbconnect.php");


$q = mysql_query("SELECT file_code,file_type FROM guestbook WHERE id='$_GET[id]'") or die(mysql_error());

$q = mysql_num_rows($q);
if($q){
extract(mysql_fetch_array($q));

header("Content-type: $file_type");
echo $file_code;
} else {
echo "404 - file not found!";
}
?>
-------------------------------------------------------------------------------
//scriptet der skulle vise poster + billederne

<?PHP
include("../dbconnect.php");
?>

<h2>Se gæstebogen</h2>

<?PHP

$result = mysql_query("select * from guestbook order by id desc") or
    die(mysql_error());
while ($row = mysql_fetch_array($result))
{
    echo "<b>Navn:</b>";
    echo $row["name"];
    echo "<br>\n";
   
    echo "<b>Sted:</b>";
    echo $row["location"];
    echo "<br>\n";
   
    echo "<b>E-mail:</b>";
    echo $row["email"];
    echo "<br>\n";
   
    echo "<b>Hjemmeside:</b>";
    echo $row["url"];
    echo "<br>\n";
   
    echo "<b>Kommentar:</b>";
    echo nl2br($row["comments"]);
    echo "<br>\n";
   
    echo "<b>Dato:</b>";
    echo $row["dato"];
    echo "<br>\n";
   
    echo "<img src=\"file.php?id=$data[id]\">";
   
   
   
   
    echo "<br>\n";
    echo "<br>\n";
}
mysql_free_result($result)
?>


kan i se nogen fejl i det her?
Avatar billede Slettet bruger
21. august 2003 - 00:47 #9
Du må checke en ting af gangen.

1) Virker din fil upload? Check at data kommer i databasen som forventet.

2) Kald file.php?id=1 direkte for at se, hvad der sker.

3) Check den øvrige udskrift af information.

4) Check det hele samlet.
Avatar billede detox Nybegynder
21. august 2003 - 00:51 #10
Når du modtager 'form_data' fra din form indeholder den et array lig dette:

Array ( [form_data] => Array ( [name] => billednavn.jpg [type] => image/pjpeg [tmp_name] => C:\tmp\phpBB.tmp [error] => 0 [size] => 92848 ) )

Ergo må du revidere din kode der skal gemme filen i databasen.
Avatar billede krydset Nybegynder
21. august 2003 - 00:59 #11
1 fil upload virker :-D

2 file.php?id=1 giver dette her output :-(

Warning: Supplied argument is not a valid MySQL result resource in /home/administrator/www/sider/guestbook/file.php on line 10

Warning: extract() expects first argument to be an array in /home/administrator/www/sider/guestbook/file.php on line 10

Warning: Cannot add header information - headers already sent by (output started at /home/administrator/www/sider/guestbook/file.php:10) in /home/administrator/www/sider/guestbook/file.php on line 12

3 alt andet udskrift virker fint, det er kun billederne der ikke funger :-/

4 kan ikke checke det hele samlet da file.php?id=1 giver fejl :-O
Avatar billede krydset Nybegynder
21. august 2003 - 01:00 #12
detox >>>> jeg forstår ikke rigtigt :-/
Avatar billede detox Nybegynder
21. august 2003 - 01:07 #13
Prøv dette, så ser du hvad jeg mener:
test.php:
--------

<?php
include("../dbconnect.php");
if ($form_data && $form_data != "none") {
print_r ($form_data);
}
echo '<br>Vælg et billede som skal i gøstebogen</br>';
echo '<form action="test.php" method="post" enctype="multipart/form-data">';
echo '<form action="Filer_i_mysql.php" method="post" enctype="multipart/form-data">';
echo 'Select file: <input type="file" name="form_data">';
echo '<input type="hidden" name="MAX_FILE_SIZE" value="1000000"><br>'; //Defines max_file_size of files
echo '<input type="submit">';
echo '</form>';
?>
Avatar billede detox Nybegynder
21. august 2003 - 01:11 #14
Du får et array der indeholder:

$form_data[name] => billednavn.jpg
$form_data[type] => image/pjpeg
$form_data[tmp_name] => C:\tmp\phpBB.tmp
$form_data[error] => 0
$form_data[size] => 92848

Altså er det $form_data[tmp_name] du skal indlæse i din database.
Avatar billede Slettet bruger
21. august 2003 - 01:12 #15
krydset: Fint. Så har du konstateret at du har en fejl i file.php.

Fejlen er at du overskriver $q. Ret den til noget i denne stil:

<?
include("../dbconnect.php");
$result = mysql_query("SELECT file_code,file_type FROM guestbook WHERE id='".$_GET['id']."'") or die(mysql_error());
if (mysql_num_rows($result) > 0) {
    extract(mysql_fetch_array($result));
    header("Content-type: ".$file_type);
    echo $file_code;
    exit();
} else {
    header("HTTP/1.0 404 Not Found");
    exit();
}
?>
Avatar billede krydset Nybegynder
21. august 2003 - 01:13 #16
det funger ik detox. :-(
Avatar billede detox Nybegynder
21. august 2003 - 01:16 #17
Hmm, anyway. Hvis du siger, du får de rigtige data i databasen, så er det jo et vildspor.
Avatar billede Slettet bruger
21. august 2003 - 01:17 #18
detox : Manden siger jo at hans upload script fungerer. Så det må vi jo stole på. Hvis han har register_globals ON, tror jeg også på det gør.
Avatar billede krydset Nybegynder
21. august 2003 - 01:25 #19
nu er der billede på http://www.pc-dk.dk/sider/guestbook/file.php?id=1
men kun røde krydser på www.pc-dk.dk/sider/guestbook/wiev.php.

lidt af vejen kom vi nu :-O
Avatar billede krydset Nybegynder
21. august 2003 - 01:27 #20
upload scripte virker perfekt :-) ingen probs der. det er kun problemet med at vide billederne på www.pc-dk.dk/sider/guestbook/wiev.php
Avatar billede krydset Nybegynder
21. august 2003 - 01:28 #21
på www.pc-dk.dk/sider/guestbook/wiev.php får de ikke noget id tildelt.

her er adresse for billedet http://www.pc-dk.dk/sider/guestbook/file.php?id=
Avatar billede detox Nybegynder
21. august 2003 - 01:33 #22
echo "<img src=\"file.php?id=$data[id]\">";

skal måske være:

echo "<img src=\"file.php?id=$row[id]\">";
Avatar billede tipsen Nybegynder
21. august 2003 - 01:34 #23
...det hedder "view" og ikke "wiev" - hvis det svarer til "Vis"
Avatar billede Slettet bruger
21. august 2003 - 01:35 #24
Avatar billede krydset Nybegynder
21. august 2003 - 01:35 #25
jaja stavefejl er vi ikke ude efter nu :-)
Avatar billede krydset Nybegynder
21. august 2003 - 01:37 #26
:-D :-D :-D :-D :-D :-D :-D :-D :-D :-D :-D :-D :-D :-D :-D :-D :-D :-D :-D :-D
nu er den der. kan i ikke lige skrive i den her på www.pc-dk.dk
Avatar billede Slettet bruger
21. august 2003 - 01:39 #27
Jow jeg uploadede en tekst fil og skrev ingen tekst.
Avatar billede detox Nybegynder
21. august 2003 - 01:42 #28
Jo, den er god fin. Tillykke med den!
Avatar billede krydset Nybegynder
21. august 2003 - 01:42 #29
hmmm en fejl i db

Warning: unable to parse url (tbl_change.php?lang=da-iso-8859-1&server=1&db=pc-dk&table=guestbook&pos=0&session_max_rows=30&disp_direction=horizontal&repeat_cells=100&dontlimitchars=0&primary_key=+%60name%60+%3D+%27detox%27+AND+%60location%60+%3D+%27dk%27+AND+%60email%60+%3D+%27%27+AND+%60url%60+%3D+%27%27+AND+%60comments%60+%3D+%27Bodypainting+er+en+kunst%21%27+AND+%60id%60+%3D+%273%27+AND+%60dato%60+%3D+%27%27+AND+%60ip%60+%3D+%27%27+AND+%60file_code%60+LIKE+0xffd8ffe000104a46494600010100000100010000ffdb0043000a07070807060a0808080b0a0a0b0e18100e0d0d0e1d15161118231f2524221f2221262b372f26293429212230413134393b3e3e3e252e4449433c48373d3e3bffdb0043010a0b0b0e0d0e1c10101c3b2822283b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3bffc0001108014000d803012200021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b5100002010303020403050504040000017d01020300041105122131410613516107227114328191a1082342b1c11552d1f024 in /home/administrator/www/phpmyadmin/libraries/common.lib.php on line 1768

kender i noget til det??
Avatar billede krydset Nybegynder
21. august 2003 - 01:45 #30
hvor meget må der gemmes i en datatype "blob" og skal det mon være "longblob" istedet??
Avatar billede detox Nybegynder
21. august 2003 - 01:49 #31
blob kan kun gemme ca 65 kb
du skal nok ha' fat i mediumblob der holder ca 16 MB
Avatar billede detox Nybegynder
21. august 2003 - 01:50 #32
longblob kan gemme 4 GB, det vil nok være overkill! ;-)
Avatar billede krydset Nybegynder
21. august 2003 - 01:52 #33
der sker nogle underlige ting i databasen

og je´g kan ikke rette posterne
Avatar billede Slettet bruger
21. august 2003 - 01:52 #34
Og du løber ind i en masse andre begrænsninger ved upload af _store_ filer udover lige kolonne typen. mediumblob er fint.

Og nu skal du igang med inputvalidering.

Men luk det her spørgsmål nu, det er besvaret.
Avatar billede krydset Nybegynder
21. august 2003 - 01:53 #35
jo deeeettt går sq ik??
Avatar billede Slettet bruger
21. august 2003 - 01:53 #36
krydset: Hvis phpmyadmin forsøger at vise indholdet af blob feltet som ren tekst, så er det nok derfor. Det gør nyere version af phpmyadmin ikke.
Avatar billede krydset Nybegynder
21. august 2003 - 01:54 #37
det er vers 2.5.2 pl1 jeg har
Avatar billede krydset Nybegynder
21. august 2003 - 02:05 #38
har hentet 2.5.3 rc2 men kan stadig ikke rette.
Avatar billede Slettet bruger
21. august 2003 - 02:06 #39
Se om det er en option i config filen?
Avatar billede krydset Nybegynder
21. august 2003 - 02:08 #40
jeg har altid kunne rette i dem. men efter billeder er kommet til går det skævt :-/
Avatar billede Slettet bruger
21. august 2003 - 02:09 #41
Ja som sagt, fordi den sikkert forsøger at vise indholdet af feltet som ren tekst. Billedet som ren tekst altså.
Avatar billede krydset Nybegynder
21. august 2003 - 02:15 #42
mercur8>>>>hmmm kan man lave det om?
Avatar billede krydset Nybegynder
21. august 2003 - 02:23 #43
svar mig helt ærligt.

er mysql ikke ret dårlig til at håndtere filer.

ville det ille være bedre at lave et upload script som lægger billederne i en mappe på servern og et link i db og så den henter pic ud fra link i db???
Avatar billede Slettet bruger
21. august 2003 - 02:46 #44
Nej det er mysql ikke dårlig til. Og til det du skal bruge det til, er det fint.

Men det kræver at du index'erer dine tabeller korrekt. Læs om INDEX på MySQL's hjemmeside.

Og at phpmyadmin laver ballade, hvis det er tilfældet, har jo ikke noget med mysql at gøre.
Avatar billede krydset Nybegynder
21. august 2003 - 09:30 #45
okay, jeg ville bare gerne kunne rette i poster hvis det skulle være tilfældet en dag at det blev nødvendigt
Avatar billede Slettet bruger
25. august 2003 - 18:49 #46
Luk spørgsmålet.
Avatar billede krydset Nybegynder
25. august 2003 - 18:57 #47
sorry selvfølgelig skal det lukkes :-D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester