Archivlink: javarea.de Forum > PHP, MySQL & CGI > image in mysql
Vollständigen Link anzeigen: javarea.de Forum > PHP, MySQL & CGI > image in mysql

Pages: [1]

geschrieben von rich am 22.03.2010 - 17:40
Hallo ich hab ein uploadscript was ein Bild in die Datenbank einfügen soll....

sql: (hier standart... hab ich bei mir natürlich angepasst)
Zitat
 CREATE TABLE images(

id INT( 11 ) AUTO_INCREMENT ,

imgdata LONGBLOB,

imgtype VARCHAR( 20 ) ,

PRIMARY KEY ( id )

);



in der addgame.php habe ich dann die zeile eingefügt
Zitat
 <input type="file" name="img" size="40">


das sieht dann so aus...
PHP-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 

<tr>
<td><fieldset><legend><A class=flyout href="<? echo $basedir?>images/icon/weblink.jpg"><img class=tmbright src="<? echo $basedir?>images/icon/weblink.jpg" height="15" border="0"></a>&nbsp;<font size="1">Hauptlogo</legend></fieldset></td>
<td><legend><font size="1">:</legend></td>
<td><fieldset><legend><img src="<? echo $basedir?>images/icon/cam3.png" height="15">&nbsp;<font size="1">Hauptlogo</font>&nbsp;</legend>
<input name="gamelogo" id="gamelogo" type="text" size="50" maxlength="255" value="images/icon/blank.png">
<input type="file" name="img" size="40">
</fieldset></td>
</tr>



mit dem wird das alles über Submit abgeschickt:
Zitat
 <form name="form1" method="post" action="addgame_ac.php" enctype="multipart/form-data">


hier wird das alles in der Datenbank eingetragen:
PHP-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 

<?
if (array_key_exists('img',$_FILES)) {

$tmpname $_FILES['img']['tmp_name'];

$type $_FILES['img']['type'];

$hndFile fopen($tmpname"r");

$data addslashes(fread($hndFilefilesize($tmpname)));





// Insert data into mysql
$sql="INSERT INTO ".$prefix."spiele(....
?>





und so mit wird das ganze angezeigt...
beisp... image.php?id=57
PHP-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 

<?php

// img_get.php: Bild abrufen

require_once 'config.php';

$id $_GET['spiele_id'];

$sql"select gal1,galtype1 from games_spiele where spiele_id=$_GET[id]";

$result=mysql_query($sql);
$row=mysql_fetch_assoc($result);

header("Content-type: {$row['galtype1']}");
echo 
$row['gal1'];

?>



alles soweit scheen und gut funtzt auch das Bild/Foto wird super angezeigt...
AAAAAber wenn ich das in meine seite einsetzten möchte dann wird diese nur noch als text angezeigt... also quelltextformat.

ich nehme mal an, dass dies am header("Content-type: {$row['galtype1']}"); liegt
kann man das umgehen oder gibt es noch ne bessere einfachere?!

mfg rich

geschrieben von Danny am 23.03.2010 - 12:19
Hallo rich,

du sagst es wird der "Quelltext" des Bildes angezeigt ? Weil du oben in der Tabelle ganz andere Tabellen- und Spaltenbezeichnungen verwendest als unten.

Aber wenn das Bild rauskommt scheint es ja zu gehen ;) Die Sache ist die, wenn du den Content-type Header auf z.B. image/png oder was auch immer setzt, dann denkt der Browser auch die Seite ist ein Bild. Du kannst also auch nichts anderes (Text, HTML, etc) mit auf dieser Seite ausgeben.

Wenn du aber auf einer anderen Seite das Bild laden möchtest, geht das wie jedes andere Bild auch über

HTML-Quelltext
1: 
<img src="image.php?id=57" alt="" />


Wenn alles über eine Seite laufen soll, musst du das erzeugte Bild nachdem du es aus der DB gelesen hast in eine Datei schreiben und die dann im <img> Tg einbinden.

Gruß Danny

geschrieben von rich am 23.03.2010 - 20:38
hallo danny,
hat soweit funktioniert =)
danke für die schnelle und einfache antwort ^^

nun stellt sich mir aber eine andere schwierigkeit wenn ich die images hochladen möchte...
ist das so in etwa richtig!?

addgame.php:
(alles was Blau gekennzeichnet ist war vorher, was Rot der momentane code)
PHP-Quelltext
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: 

<tr>
<td><fieldset><legend><A class=flyout href="<? echo $basedir?>images/icon/weblink.jpg"><img class=tmbright src="<? echo $basedir?>images/icon/weblink.jpg" height="15" border="0"></a>&nbsp;<font size="1">Gallerie</legend></fieldset></td>
<td><legend><font size="1">:</legend></td>
<td><fieldset><legend><img src="<? echo $basedir?>images/icon/cam4.png" height="15">&nbsp;<font size="1">Gallerie</font>&nbsp;</legend>

<input name="gal1" id="gal1" type="text" size="50" maxlength="255" value="images/icon/blank.png">
<input type="file" name="img" size="40">

<input name="gal2" id="gal2" type="text" size="50" maxlength="255" value="images/icon/blank.png">
<input type="file" name="gal2" size="40">

<input name="gal3" id="gal3" type="text" size="50" maxlength="255" value="images/icon/blank.png">
<input type="file" name="gal3" size="40">

<input name="gal4" id="gal4" type="text" size="50" maxlength="255" value="images/icon/blank.png">
<input type="file" name="gal4" size="40">

<input name="gal5" id="gal5" type="text" size="50" maxlength="255" value="images/icon/blank.png">
<input type="file" name="gal5" size="40">

<input name="gal6" id="gal6" type="text" size="50" maxlength="255" value="images/icon/blank.png">
<input type="file" name="gal6" size="40">

</fieldset></td>
</tr>



addgame_ac.php:
(hier geht es nur um den isert, ich hab den rest weggelassen deswegen die punkte... allerdings wird das wohl nicht so funktionieren und wenn was eingetragen wird dann sicherlich immer ein und das selbe bild richtig?...
aber es sollen ja die bilder hochgeladen bzw eingefügt werden die ich auswähle.)
PHP-Quelltext
1: 
2: 
3: 

<?
$sql
="INSERT INTO ".$prefix."spiele(spielname,... gamelogo, gal1,galtype1, gal2,galtype2, gal3,galtype3, gal4,galtype4, gal5,galtype5, gal6,galtype6,spielvideo...)VALUES('$spielname',...'$data', '$type','$data', '$type','$data', '$type','$data', '$type','$data', '$type','$data', '$type','$data', '$type','$data', '$type', '$spielvideo'...)";
?>



addgame_ac.php:
hier noch einmal der komplette... da hab ich die Gal1-6 ausgeklammer via //

PHP-Quelltext
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: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64: 
65: 
66: 
67: 

<?
include("include/logincheck.php");
include(
"include/config.php");
include(
"include/db.php");

// Get values from form
$spielname mysql_real_escape_string($_POST['spielname']);
$entwickler mysql_real_escape_string($_POST['entwickler']);
$kategorie mysql_real_escape_string($_POST['kategorie']);
$rel1 mysql_real_escape_string($_POST['rel1']);
$rel2 mysql_real_escape_string($_POST['rel2']);
$rel3 mysql_real_escape_string($_POST['rel3']);
$genre mysql_real_escape_string($_POST['genre']);
$sprache mysql_real_escape_string($_POST['sprache']);
$usk mysql_real_escape_string($_POST['usk']);
$system mysql_real_escape_string($_POST['system']);
$prozessor mysql_real_escape_string($_POST['prozessor']);
$prozessorbez mysql_real_escape_string($_POST['prozessorbez']);
$prozessorcore mysql_real_escape_string($_POST['prozessorcore']);
$prozessorbez_amd mysql_real_escape_string($_POST['prozessorbez_amd']);
$ram mysql_real_escape_string($_POST['ram']);
$grafikkarte mysql_real_escape_string($_POST['grafikkarte']);
$grafikram mysql_real_escape_string($_POST['grafikram']);
$speicherplatz mysql_real_escape_string($_POST['speicherplatz']);
$speicherbezeichnung mysql_real_escape_string($_POST['speicherbezeichnung']);
$spielbeschreibung mysql_real_escape_string($_POST['spielbeschreibung']);
$gamelogo mysql_real_escape_string($_POST['gamelogo']);
//$gal1 = mysql_real_escape_string($_POST['gal1']);
//$gal2 = mysql_real_escape_string($_POST['gal2']);
//$gal3 = mysql_real_escape_string($_POST['gal3']);
//$gal4 = mysql_real_escape_string($_POST['gal4']);
//$gal5 = mysql_real_escape_string($_POST['gal5']);
//$gal6 = mysql_real_escape_string($_POST['gal6']);
$spielvideo mysql_real_escape_string($_POST['spielvideo']);

if (
array_key_exists('img',$_FILES)) {

$tmpname $_FILES['img']['tmp_name'];

$type $_FILES['img']['type'];

$hndFile fopen($tmpname"r");

$data addslashes(fread($hndFilefilesize($tmpname)));


// Insert data into mysql
$sql="INSERT INTO ".$prefix."spiele(spielname, entwickler, kategorie, rel1, rel2, rel3, genre, sprache, usk, system, prozessor, prozessorbez, prozessorcore, prozessorbez_amd, ram, grafikkarte, grafikram, speicherplatz, speicherbezeichnung, spielbeschreibung, gamelogo, gal1,galtype1, gal2,galtype2, spielvideo, gameeinsteller, einsteller_date)VALUES('$spielname', '$entwickler', '$kategorie', '$rel1', '$rel2', '$rel3', '$genre', '$sprache', '$usk', '$system', '$prozessor', '$prozessorbez', '$prozessorcore', '$prozessorbez_amd', '$ram', '$grafikkarte', '$grafikram', '$speicherplatz', '$speicherbezeichnung', '$spielbeschreibung', '$gamelogo', '$data', '$type','$data', '$type', '$spielvideo', '$_SESSION[user_nickname]', '".time()."')";
$result=mysql_query($sql);

$query_user mysql_query("SELECT Nickname FROM ".$prefix."benutzerdaten");
while(
$fetch_user mysql_fetch_array($query_user))
{
$Nickname $fetch_user['Nickname']; // in Nickname steht in jedem Schleifendurchlauf der jeweilige Nutername
$sql="INSERT INTO ".$prefix."nachrichten (nachrichten_von, nachrichten_an, nachrichten_subject, nachrichten_text, Rang, Foto, nachrichten_zeit)VALUES('System', '".$Nickname."' ,'neues Game', 'es wurde ein neues Spiel: <font color=red>$spielname</font> eingetragen, <br /> in der Kategorie: <font color=red>$kategorie</font><br /><hr />schau es dir gleich mal an, vielleicht ist es ja was für dich...', 'System', 'images/system.png', '".time()."')";
$result=mysql_query($sql);
}
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
...



falls die Bilder doch alle unterschiedlich eingetragen werden gal1=bild1.jpg, gal2=bild2.jpg...
wie kann ich die denn anzeigen lassen denn der code von dir (der super klappt) greift dann ja nicht mehr

dieser ...
HTML-Quelltext
1: 
<img src="image.php?id=57" alt="" />

...zeigt ja immer über die id (was ja auch richtig ist) das erste bild an oder sehe ich das falsch?

wenn nicht könnte man die bider dann nicht so anzeigen:...
HTML-Quelltext
1: 
2: 
3: 
<img src="image.php?id=57#gal1" alt="" />
<img src="image.php?id=57#gal2" alt="" />
<img src="image.php?id=57#gal3" alt="" />

halt jeweils für die einzelnd über die id abgespeicherten bilder?

danke für die mühe =)

geschrieben von Danny am 25.03.2010 - 01:18
Hallo rich,

Mögliche Probleme die mit der Datenbankstruktur aufkommen können:
- Wennn es irgendwann mal mehr als 6 Bilder sein sollen wohin speicherst du die?
- Wenn zusätzliche Attribute den Bildern hinzugefügt werden sollen, z.B. ein Bildtitel ... dann must du alles umstellen und wird nur zunehmen unübersichtlicher

Deswegen zerteilt man die die Tabellen. Ein Bild, das ein eigenständiges Objekt ist (Entität), sollte in einer eigenen Tabelle stehen. Man kann das ganze theoretisch be dir noch weiterführen.
Als Beispiel: Bei Genre steht wahrscheinlich in etlichen Datensätzen "Action" oder ähnliches. Es kommen also doppelte Einträge in Spalten vor. Das sollte in Datenbanken wenn möglich vermieden werden.
Aber egal, darum geht es jetzt nicht ;)

Mein Vorschlag wäre das zumindest bei den Bildern umzusetzen.

Du machst eine neue Tabelle "bilder"

HTML-Quelltext
1: 
id (int, auto increment) | spiele_id (int, index) | image (LONGBLOB) | type (varchar)


in der Spalte spiele_id steht dann die id aus der Tabelle Spiele, je nachdem zu welchem Spiel das Bild gehört.

Dein Formular könnte dann auszugsweise so aussehen:

HTML-Quelltext
1: 
2: 
3: 
4: 
Bild 1: <input type="file" name="img[]" size="40"><br />
Bild 2: <input type="file" name="img[]" size="40"><br />
Bild 3: <input type="file" name="img[]" size="40"><br />
Bild 4: <input type="file" name="img[]" size="40"><br />


Wenn die input Felder alle den selben Namen haben und mit einem [] enden wird bei absenden ein Array aus allen ausgefüllten Feldern erzeugt. Dadurch kannst du auch ganz einfach 5,6 oder 100 Bilderuploads einfügen.


Im Quellcode des Hochladens speicherst du in der spiele Tabelle die Daten wie bisher, aber ohne die Bilder.
Ein Code für die Bilder könnte so aussehen

PHP-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 

<?
// oberhalb der Insert für die spiele Tabelle

$spiele_id mysql_insert_id();

if(
is_array($_FILES['img'])) {    
    foreach(
$_FILES['img']['name'] as $key=>$pic) {
        if(
$pic != "") {
            
$tmpname $_FILES['img']['tmp_name'][$key];
            
$type $_FILES['img']['type'][$key];            
            
$hndFile fopen($tmpname"r");            
            
$data addslashes(fread($hndFilefilesize($tmpname)));
        
            
mysql_query("INSERT INTO ".$prefix."bilder ('spiele_id', 'image', 'type') VALUES (".$spiele_id.", '".$data."', '".$type."')");
            
        
        }
    }
}


// folgend die Mitteilung an die Benutzer
?>





Gruß Danny


geschrieben von rich am 25.03.2010 - 11:06
Hallo Danny...

ich hab jetzt folgendes:
mysql-tabelle: games_spiele_bilder

HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
id | int(255) | auto_increment
spiele_id | int(11)
image | longeblob | binary
type | vachar(255)

PIMARY | id
INDEX | spiele_id


addgame.php:
HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
<tr>
<td><fieldset><legend><A class=flyout href="<? echo $basedir; ?>images/icon/weblink.jpg"><img class=tmbright src="<? echo $basedir; ?>images/icon/weblink.jpg" height="15" border="0"></a>&nbsp;<font size="1">Gallerie</legend></fieldset></td>
<td><legend><font size="1">:</legend></td>
<td><fieldset><legend><img src="<? echo $basedir; ?>images/icon/cam4.png" height="15">&nbsp;<font size="1">Gallerie</font>&nbsp;</legend>

<input type="file" name="img[]" size="40">
<input type="file" name="img[]" size="40">
<input type="file" name="img[]" size="40">
<input type="file" name="img[]" size="40">
<input type="file" name="img[]" size="40">
<input type="file" name="img[]" size="40">

</fieldset></td>
</tr>


addgame_ac.php:
PHP-Quelltext
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: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 

<?
// Insert data into mysql
$sql="INSERT INTO ".$prefix."spiele(spielname, entwickler, kategorie, rel1, rel2, rel3, genre, sprache, usk, system, prozessor, prozessorbez, prozessorcore, prozessorbez_amd, ram, grafikkarte, grafikram, speicherplatz, speicherbezeichnung, spielbeschreibung, gamelogo, gal1,galtype1, gal2,galtype2, spielvideo, gameeinsteller, einsteller_date)VALUES('$spielname', '$entwickler', '$kategorie', '$rel1', '$rel2', '$rel3', '$genre', '$sprache', '$usk', '$system', '$prozessor', '$prozessorbez', '$prozessorcore', '$prozessorbez_amd', '$ram', '$grafikkarte', '$grafikram', '$speicherplatz', '$speicherbezeichnung', '$spielbeschreibung', '$gamelogo', '$data', '$type','$data', '$type', '$spielvideo', '$_SESSION[user_nickname]', '".time()."')";
$result=mysql_query($sql);




// oberhalb der Insert für die spiele Tabelle

$spiele_id mysql_insert_id();

if(
is_array($_FILES['img'])) {
    foreach(
$_FILES['img']['name'] as $key=>$pic) {
        if(
$pic != "") {
            
$tmpname $_FILES['img']['tmp_name'][$key];
            
$type $_FILES['img']['type'][$key];
            
$hndFile fopen($tmpname"r");
            
$data addslashes(fread($hndFilefilesize($tmpname)));

            
mysql_query("INSERT INTO ".$prefix."spiele_bilder ('spiele_id', 'image', 'type') VALUES (".$spiele_id.", '".$data."', '".$type."')");


        }
    }
}


// folgend die Mitteilung an die Benutzer








$query_user mysql_query("SELECT Nickname FROM ".$prefix."benutzerdaten");
while(
$fetch_user mysql_fetch_array($query_user))
{
$Nickname $fetch_user['Nickname']; // in Nickname steht in jedem Schleifendurchlauf der jeweilige Nutername
$sql="INSERT INTO ".$prefix."nachrichten (nachrichten_von, nachrichten_an, nachrichten_subject, nachrichten_text, Rang, Foto, nachrichten_zeit)VALUES('System', '".$Nickname."' ,'neues Game', 'es wurde ein neues Spiel: <font color=red>$spielname</font> eingetragen, <br /> in der Kategorie: <font color=red>$kategorie</font><br /><hr />schau es dir gleich mal an, vielleicht ist es ja was für dich...', 'System', 'images/system.png', '".time()."')";
$result=mysql_query($sql);
}
?>



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
?>



Spiel wird eingetragen... an alle user geht auch eine nachricht....
game wird auch in der übersicht angezeigt allerdings werden die Bilder nicht gespeichert...
warum?

geschrieben von rich am 26.03.2010 - 11:09
wahrscheinlich wäre es einfacher, die Bilder in einen Ordner der angegeben wird hochzuladen...
und naja das der Pfad halt irgendwie mit dem Script und id usw. abgespeichert
denke mal wenn man die bilder in der DB speichert ist diese auch schnell voll oder?

gruß

geschrieben von Danny am 27.03.2010 - 00:24
Hallo rich,

ob du die Bilder in einer DB speicherst oder im Filesystem bleibt dir überlassen. Kenne deine Größenordnungen ja nicht, aber vermute dass es von der Performance keinen unterschied machen wird ... Weiß nicht ob dein Provider den DB Speicherplatz mit zu dem Normalen zählt, dann wäre es ja egal... wenn getrennt ist es natürlich eine andere Sache ... wo hast du dein Hosting Paket?


Zu dem Code von mir. Hast du mal versucht Debug Ausgaben zu machen um zu sehen, ob er überhaupt in die If Bedingung kommt ?

z.B. einfach mal ein var_dump($_FILES); die(); einfügen ... oder hinter das SQL Query ein

or die(mysql_error()); um mögliche SQL Fehler zu entdecken..

Gruß Danny

geschrieben von rich am 27.03.2010 - 11:38
Hallo Danny...
die errors haben kein ergebniss geliefert..
hab sogar mit error_reporting(E_ALL); versucht...

da hat er mir dann:
HTML-Quelltext
1: 
Warning: Invalid argument supplied for foreach() in ...\addgame_ac.php on line 46


PHP-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 

<?
// oberhalb der Insert für die spiele Tabelle

$spiele_id mysql_insert_id();

if(
is_array($_FILES['img'])) {
    foreach(
$_FILES['img']['name'] as $key=>$pic) {
        if(
$pic != "") {
            
$tmpname $_FILES['img']['tmp_name'][$key];
            
$type $_FILES['img']['type'][$key];
            
$hndFile fopen($tmpname"r");
            
$data addslashes(fread($hndFilefilesize($tmpname)));

            
mysql_query("INSERT INTO ".$prefix."spiele_bilder ('spiele_id', 'image', 'type') VALUES (".$spiele_id.", '".$data."', '".$type."')");


        }
    }
}


// folgend die Mitteilung an die Benutzer
?>



dies ist die betroffene zeile:
PHP-Quelltext
1: 
2: 
3: 

<?
foreach($_FILES['img']['name'] as $key=>$pic) {
?>

#

ich bin bei Systemweb... also kein Billiger Freehoster.
allerdings teste ich das immer alles erst auf meinem Xampp obs funktioniert, bevor ich es hochlade =)

lieben gruß

geschrieben von Danny am 29.03.2010 - 12:41
Hallo rich,

ungewöhnlich da der Code im Einzelnen funktionieren sollte. Kannst du noch einmal den gesamten Code posten ?
Und dein HTML Formular, besitzt es das Attribut enctype="multipart/form-data"
also so in etwa müsste dein <form> Tag aussehen:

HTML-Quelltext
1: 
<form action="deinedatei.php" method="post" enctype="multipart/form-data">



Gruß Danny

geschrieben von rich am 29.03.2010 - 21:01
moin Danny....
die dateien befinden sich im anhang


in der addgame.php folgende zeilen: Zeile:106 / Zeile: 390-405

in der addgame_ac.php: Zeile: 37-69


lg

geschrieben von Danny am 01.04.2010 - 20:22
Hallo rich,

sorry das ich mich erst so spät melde ..

In deinem Formular hast du mehrere

HTML-Quelltext
1: 
<input type="file" name="img" size="40">


Es muss aber

<input type="file" name="img[]" size="40">

heissen. Die [] sind hier entscheidend. Auch kann ich mir nicht so ganz erklären was die </input name="gal1" id="gal1" type="text" size="50" maxlength="255" value="images/icon/blank.png"> zu sagen haben ?

Gruß Danny

geschrieben von rich am 07.04.2010 - 12:51
hey danny...
hab ich gemacht:


HTML-Quelltext
1: 
<form name="form1" method="post" action="addgame_ac.php" enctype="multipart/form-data">


addgame.php:
HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
<tr>
<td><fieldset><legend><A class=flyout href="<? echo $basedir; ?>images/icon/weblink.jpg"><img class=tmbright src="<? echo $basedir; ?>images/icon/weblink.jpg" height="15" border="0"></a>&nbsp;<font size="1">Gallerie</legend></fieldset></td>
<td><legend><font size="1">:</legend></td>
<td><fieldset><legend><img src="<? echo $basedir; ?>images/icon/cam4.png" height="15">&nbsp;<font size="1">Gallerie</font>&nbsp;</legend>

<input type="file" name="img[]" size="40">
<input type="file" name="img[]" size="40">
<input type="file" name="img[]" size="40">
<input type="file" name="img[]" size="40">
<input type="file" name="img[]" size="40">
<input type="file" name="img[]" size="40">

</fieldset></td>
</tr>


addgame_ac.php:
PHP-Quelltext
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: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64: 
65: 
66: 
67: 
68: 
69: 
70: 
71: 
72: 
73: 

<?
include("include/logincheck.php");
include(
"include/config.php");
include(
"include/db.php");

// Get values from form
$spielname mysql_real_escape_string($_POST['spielname']);
$entwickler mysql_real_escape_string($_POST['entwickler']);
$kategorie mysql_real_escape_string($_POST['kategorie']);
$rel1 mysql_real_escape_string($_POST['rel1']);
$rel2 mysql_real_escape_string($_POST['rel2']);
$rel3 mysql_real_escape_string($_POST['rel3']);
$genre mysql_real_escape_string($_POST['genre']);
$sprache mysql_real_escape_string($_POST['sprache']);
$usk mysql_real_escape_string($_POST['usk']);
$system mysql_real_escape_string($_POST['system']);
$prozessor mysql_real_escape_string($_POST['prozessor']);
$prozessorbez mysql_real_escape_string($_POST['prozessorbez']);
$prozessorcore mysql_real_escape_string($_POST['prozessorcore']);
$prozessorbez_amd mysql_real_escape_string($_POST['prozessorbez_amd']);
$ram mysql_real_escape_string($_POST['ram']);
$grafikkarte mysql_real_escape_string($_POST['grafikkarte']);
$grafikram mysql_real_escape_string($_POST['grafikram']);
$speicherplatz mysql_real_escape_string($_POST['speicherplatz']);
$speicherbezeichnung mysql_real_escape_string($_POST['speicherbezeichnung']);
$spielbeschreibung mysql_real_escape_string($_POST['spielbeschreibung']);
$gamelogo mysql_real_escape_string($_POST['gamelogo']);
$spielvideo mysql_real_escape_string($_POST['spielvideo']);

// Insert data into mysql
//$sql="INSERT INTO ".$prefix."spiele(spielname, entwickler, kategorie, rel1, rel2, rel3, genre, sprache, usk, system, prozessor, prozessorbez, prozessorcore, prozessorbez_amd, ram, grafikkarte, grafikram, speicherplatz, speicherbezeichnung, spielbeschreibung, gamelogo, gal1,galtype1, gal2,galtype2, gal3,galtype3, gal4,galtype4, gal5,galtype5, gal6,galtype6, spielvideo, gameeinsteller, einsteller_date)VALUES('$spielname', '$entwickler', '$kategorie', '$rel1', '$rel2', '$rel3', '$genre', '$sprache', '$usk', '$system', '$prozessor', '$prozessorbez', '$prozessorcore', '$prozessorbez_amd', '$ram', '$grafikkarte', '$grafikram', '$speicherplatz', '$speicherbezeichnung', '$spielbeschreibung', '$gamelogo', '$data', '$type', '$data', '$type', '$data', '$type', '$data', '$type', '$data', '$type', '$data', '$type', '$spielvideo', '$_SESSION[user_nickname]', '".time()."')";
$sql="INSERT INTO ".$prefix."spiele(spielname, entwickler, kategorie, rel1, rel2, rel3, genre, sprache, usk, system, prozessor, prozessorbez, prozessorcore, prozessorbez_amd, ram, grafikkarte, grafikram, speicherplatz, speicherbezeichnung, spielbeschreibung, gamelogo, spielvideo, gameeinsteller, einsteller_date)VALUES('$spielname', '$entwickler', '$kategorie', '$rel1', '$rel2', '$rel3', '$genre', '$sprache', '$usk', '$system', '$prozessor', '$prozessorbez', '$prozessorcore', '$prozessorbez_amd', '$ram', '$grafikkarte', '$grafikram', '$speicherplatz', '$speicherbezeichnung', '$spielbeschreibung', '$gamelogo', '$spielvideo', '$_SESSION[user_nickname]', '".time()."')";
$result=mysql_query($sql);

// oberhalb der Insert für die spiele Tabelle

$spiele_id mysql_insert_id();

if(
is_array($_FILES['img'])) {
    foreach(
$_FILES['img']['name'] as $key=>$pic) {
        if(
$pic != "") {
            
$tmpname $_FILES['img']['tmp_name'][$key];
            
$type $_FILES['img']['type'][$key];
            
$hndFile fopen($tmpname"r");
            
$data addslashes(fread($hndFilefilesize($tmpname)));

            
mysql_query("INSERT INTO ".$prefix."spiele_bilder ('spiele_id', 'image', 'type') VALUES (".$spiele_id.", '".$data."', '".$type."')");


        }
    }
}


// folgend die Mitteilung an die Benutzer

$query_user mysql_query("SELECT Nickname FROM ".$prefix."benutzerdaten");
while(
$fetch_user mysql_fetch_array($query_user))
{
$Nickname $fetch_user['Nickname']; // in Nickname steht in jedem Schleifendurchlauf der jeweilige Nutername
$sql="INSERT INTO ".$prefix."nachrichten (nachrichten_von, nachrichten_an, nachrichten_subject, nachrichten_text, Rang, Foto, nachrichten_zeit)VALUES('System', '".$Nickname."' ,'neues Game', 'es wurde ein neues Spiel: <font color=red>$spielname</font> eingetragen, <br /> in der Kategorie: <font color=red>$kategorie</font><br /><hr />schau es dir gleich mal an, vielleicht ist es ja was für dich...', 'System', 'images/system.png', '".time()."')";
$result=mysql_query($sql);
}
?>



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>



wie gesagt alles funtzt... bis auf, dass die Bilder nicht mit in die DB. eingefügt werden.
vielleicht sollte man dich die bilder hochladen und den pfad abspeichern.
ich weiss es nicht ^^
lg

geschrieben von rich am 12.04.2010 - 14:16
hey...
ich denke mal per upload und db eintrag gehts einfacher ^^

hab hier was im netz gefunden.... mit dem upload funtzt des schon mal.
leider noch nicht so mit dem DB-eintrag.

hier erstmal das kleine script:

HTML-Quelltext
1: 
2: 
3: 
4: 
CREATE TABLE IF NOT EXISTS `image` (
  `bildername` varchar(255) NOT NULL,
  `name` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


index.php
PHP-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 

<?
<form action="send.php" name="file_name" id="upload" ENCTYPE="multipart/form-data" method="post">

<
tr>
<
td>Name:</td>
<
td><input name="name"></td>
</
tr><br>
<
tr>

Upload<input type="file" id="userfile" name="userfile">
<
input type="submit" name="upload" value="Upload">
</
form>
?>



send.php:
PHP-Quelltext
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: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64: 
65: 
66: 
67: 
68: 
69: 
70: 
71: 
72: 
73: 
74: 

<?

$site_name 
$_SERVER['HTTP_HOST'];
$url_dir "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);
$url_this "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];

$upload_dir "upload_files/";
$upload_url $url_dir."/upload_files/";
$message ="";

//create upload_files directory if not exist
//If it does not work, create on your own and change permission.
if (!is_dir("upload_files")) {
die (
"upload_files directory doesn't exist");
}

if (
$_FILES['userfile']) {
$message do_upload($upload_dir$upload_url);
}
else {
$message "Invalid File Specified.";
}

print 
$message;

function 
do_upload($upload_dir$upload_url) {

$temp_name $_FILES['userfile']['tmp_name'];
$file_name $_FILES['userfile']['name'];
$file_type $_FILES['userfile']['type'];
$file_size $_FILES['userfile']['size'];
$result $_FILES['userfile']['error'];
$file_url $upload_url.$file_name;
$file_path $upload_dir.$file_name;

//File Name Check
if ( $file_name =="") {
$message "Invalid File Name Specified";
return 
$message;
}
//File Size Check
else if ( $file_size 500000) {
$message "The file size is over 500K.";
return 
$message;
}
//File Type Check
else if ( $file_type == "text/plain" ) {
$message "Sorry, You cannot upload any script file" ;
return 
$message;
}

$result move_uploaded_file($temp_name$file_path);
$message = ($result)?"File url <a href=$file_url>$file_url</a>" :
"Somthing is wrong with uploading a file.";

return 
$message;

}
?>




<?
include('../include/config.php');

$bildername='$file_url';
$name=$_POST[name];
$query "INSERT INTO image (bildername,name) VALUES('$bildername','$name')";
mysql_query($query) OR DIE(mysql_error());

?>



also die Bilder werden hochgeladen... soweit so gut
aaaber der Db eintrag wird nur teils ausgeführt.

der name is klar der wird mit $name=$_POST[name]; übergeben
aber die $file_url nicht.... versteh ich nicht.

ausserdem kann man nur eine datei hochladen.
bei mir müssen des dann aber insgesamt 7 sein.

is schon schwierig was passendes im netz zu finden.
lg rich

geschrieben von rich am 17.04.2010 - 12:56
hey jungs ^^
also ich hab jeden tag geschaut und versucht auch aus irgendwelchen schnipseln und anderen
tuts schlau draus zu werden... wurde ich aber nicht.
ausserdem gibt es auch keine beispiele mit multiupload + mysqleintrag.
bin ich nur zu blöde zum suchen oder ist das wirklich nicht so leicht !?
lg


Powered by: JBB v.2.0.4 Copyright ©2000-2006, www.javarea.de.