PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   problem beim auslesen eines array (http://www.selfphp.de/forum/showthread.php?t=21196)

onomo 22.03.2009 10:00:41

problem beim auslesen eines array
 
Moin Moin,

hier erstmal mein code des Problems:

PHP-Code:

<html>
<
head>
<
titleBild upload direkt aus dem Browser </title>
</
head>
<
form action="http://127.0.0.1/upload.php" enctype="multipart/form-data" method="POST">
<
input type="hidden" name="MAX_FILE_SIZE" value="10000000">
Wählen Sie eine Datei
<input type="file" name="image[]"> <br>
<
input type="submit" value="hochladen">
</
form> <br><br>
</
body>
</
html

wenn ich nun versuche im upload.php die globale Variable $_FILES['image']['size'] auszulesen, bekomme ich immer nur Array als ausgabe Oo.

Ich möchte gern bilder in meiner mysql Datenbank in einem Blob Feld abspeichern.

Kann jemand den Fehler entdecken?

Grüsse
onomo

urvater 22.03.2009 11:09:21

AW: problem beim auslesen eines array
 
Ich sehe nur den HTML-Code aber keinen PHP Code, der irgend welche Werte ermitteln will bzw. anderweitig auf dieses Formular reagiert.

onomo 22.03.2009 15:28:18

AW: problem beim auslesen eines array
 
Zitat:

Zitat von urvater (Beitrag 126179)
Ich sehe nur den HTML-Code aber keinen PHP Code, der irgend welche Werte ermitteln will bzw. anderweitig auf dieses Formular reagiert.

ok, dachte der sei eher unwichtig, also hier der php code:
PHP-Code:

<?

/* Datenbankserver - In der Regel die IP */
$db_server = 'localhost';

/* Datenbankname */
$db_name = 'filmdatenbank';

/* Datenbankuser */
$db_user = 'xxxxx';

/* Datenbankpasswort */
$db_passwort = 'xxxxx';

/* Erstellt Connect zu Datenbank her */
$db = @ mysql_connect ( $db_server, $db_user, $db_passwort )
   or die ( 'Konnte keine Verbindung zur Datenbank herstellen' );

$db_check = @ mysql_select_db ( $db_name );

if ( $db )
{
  echo 'Verbindung zur Datenbank wurde hergestellt';
}

function upload()
{  $maxsize = $_POST['MAX_FILE_SIZE'];

         if(is_uploaded_file($_FILES['image']['tmp_name']))
        {

                 // check the file is less than the maximum file size
                 if($_FILES['image']['size'] < $maxsize)
                 {
                         // prepare the image for insertion
                          $imgData =addslashes (file_get_contents($_FILES['image']['tmp_name']));
                          // $imgData = addslashes($_FILES['image']);

                         // get the image info..
                         $size = getimagesize($_FILES['image']['tmp_name']);
                         echo '$size: '.$size.'<br>';
                         // our sql query
                         $sql = "INSERT INTO filmtitel
                         (idfilmtitel , Titel ,Original Titel, Genre, Soundtrack_idSoundtrack, Jahr, Cover)
                         VALUES
                         ('','','','','','','{$imgData}')";

                         // insert the image
                         if(!mysql_query($sql))
                         {
                                 echo 'Unable to upload file';
                         }
                 
        }

    else {
         // if the file is not less than the maximum allowed, print an error
              echo '<br>Bildgröße überschreitet das Limit<br>';
              echo 'Limit ist '.$maxsize.'<br>';
              echo 'Dateigröße vom '.$_FILES['image']['name'].' ist '.$_FILES['image']['size'].'<br>';
         }
}
}



if(!isset($_FILES['image']))
{
         echo '<p>Bitte eine Datei auswählen</p>';
}
else
{
         try
         {
                upload();
         }
         catch(Exception $e)
         {
                 
                 echo 'Fehler beim upload';
         }
}

mysql_close();
?>


urvater 23.03.2009 14:12:34

AW: problem beim auslesen eines array
 
Wenn ich das jetzt alles richtig interpretiere baust du durch deine Namensgebung im Formularfeld 'image' ein mehrdimensionales Array auf. In deinem PHP Script gibts du aber nicht an, welches Array du innerhalb von 'image' auslesen willst.

Da du eh nur 1 Formularfeld zum Hochladen besitzt würde ich das Formular umbenennen.
HTML-Code:

<input type="file" name="image">
So sollte es ohne Änderung in PHP funktionieren.

Du kannst ja mal bevor du den Upload weiter verarbeitest einen var_dump oder print_r auf $_FILE setzen, dann siehst du was dir übergeben wird.

onomo 23.03.2009 15:12:01

AW: problem beim auslesen eines array
 
Zitat:

Zitat von urvater (Beitrag 126214)
Wenn ich das jetzt alles richtig interpretiere baust du durch deine Namensgebung im Formularfeld 'image' ein mehrdimensionales Array auf. In deinem PHP Script gibts du aber nicht an, welches Array du innerhalb von 'image' auslesen willst.

Da du eh nur 1 Formularfeld zum Hochladen besitzt würde ich das Formular umbenennen.
HTML-Code:

<input type="file" name="image">
So sollte es ohne Änderung in PHP funktionieren.

Du kannst ja mal bevor du den Upload weiter verarbeitest einen var_dump oder print_r auf $_FILE setzen, dann siehst du was dir übergeben wird.

Danke, werde ich mal versuchen.

Ich hatte den Code von HIER und dachte ich muss das Feld image[] nennen um auf die verschiedenen Attribute, wie z.b. Name, Größe, Typ usw., des Images zugreifen zu können.

Edith fragt: Sind Daten vom Typ File grundsätzlich schon ein Array? Ein mehrdimensionales Array schaut in C nämlich so aus Arrayname[][]

onomo 23.03.2009 18:19:15

AW: problem beim auslesen eines array
 
es läuft jetzt :) super danke.

jetzt hätte ich allerdings noch eine frage. ich möchte mir die bilder natürlich auch anzeigen lassen. dazu habe ich folgenden code:

PHP-Code:

<?php
/* Datenbankserver - In der Regel die IP */
$db_server 'localhost';

/* Datenbankname */
$db_name 'filmdatenbank';

/* Datenbankuser */
$db_user 'root';

/* Datenbankpasswort */
$db_passwort 'lotus';

/* Erstellt Connect zu Datenbank her */
$db = @ mysql_connect $db_server$db_user$db_passwort )
   or die ( 
'Konnte keine Verbindung zur Datenbank herstellen' );

$db_check = @ mysql_select_db $db_name );

if ( 
$db )
{
    if(isset(
$_GET['filmid']) && is_numeric($_GET['filmid']))
    {

        
// get the image from the db
        
$sql "SELECT cover FROM filmtitel WHERE idfilmtitel = ".$_GET['filmid'];
        
// the result of the query
        
$result mysql_query("$sql") or die("Invalid query: " mysql_error());
        
// set the header for the image
        
header("Content-type: image/jpeg");
        echo 
$result['cover'];
        
// close the db link
        
mysql_close();
    }
    else {
        echo 
'Please use a real id number';
    }
}
?>

allerdings ist es so, dass hier nichts angezeigt wird. der browser erkennt zwar, dass ein typ grafik erwartet wird, aber er zeigt nichts an.

bzw. es wird angezeigt: http://127.0.0.1/getpic.php?filmid=38
wobei die 38 von mir übergeben wurde als id und dort auch daten liegen im blob feld

urvater 23.03.2009 19:13:20

AW: problem beim auslesen eines array
 
Also $_FILE ist von Hause aus ein Array. Wegen deinem Anzeigeproblem: Wenn das Bild nur angezeigt wird, wenn du die ID händisch übergibtst, dann ist der generierte Link zur Grafik falsch.
Zur Zeit sehe ich aber nur den Insert und Select aber nicht, wie die $_GET['filmid'] erstellt wird.

onomo 24.03.2009 06:27:12

AW: problem beim auslesen eines array
 
Zitat:

Zitat von urvater (Beitrag 126218)
Also $_FILE ist von Hause aus ein Array.

DANKE

Zitat:

Zitat von urvater (Beitrag 126218)
Wegen deinem Anzeigeproblem: Wenn das Bild nur angezeigt wird, wenn du die ID händisch übergibtst, dann ist der generierte Link zur Grafik falsch.
Zur Zeit sehe ich aber nur den Insert und Select aber nicht, wie die $_GET['filmid'] erstellt wird.

ich habe die upload.html um ein eingabefeld erweitert, in dem ich händisch die id eingebe.
den html code dazu kann ich erst nachher posten, bin am falschem pc.

edit:
HTML-Code:

<html>
<head>
<title> Bild upload direkt aus dem Browser </title>
</head>
<form action="http://127.0.0.1/upload.php" enctype="multipart/form-data" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="10000000">
Wählen Sie eine Datei
<input type="file" name="image"> <br>
<input type="submit" value="hochladen">
</form> <br><br>

<form action="http://127.0.0.1/getpic.php" enctype="multipart/form-data" method="GET">
Geben Sie die ID an
<input type="text" name="filmid"> <br>
<input type="submit" value="bild holen">
</form> <br><br>

</body>
</html>

das bild wird bisher garnicht angezeigt!

onomo 24.03.2009 12:00:27

AW: problem beim auslesen eines array
 
Problem gelöst.

Es musste lauten:

PHP-Code:

header("Content-type: image/jpeg");
echo 
mysql_result($result0); 

vielen dank für die kompetente hilfe an urvater.

mfg
onomo

urvater 24.03.2009 14:19:37

AW: problem beim auslesen eines array
 
Zitat:

Zitat von onomo (Beitrag 126222)
Problem gelöst.

Es musste lauten:

PHP-Code:

header("Content-type: image/jpeg");
echo 
mysql_result($result0); 

vielen dank für die kompetente hilfe an urvater.

mfg
onomo

Wobei ich gestehen muß, daß ich an den Content-type nicht gedacht habe. Egal hauptsache es funktioniert.


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:37:24 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.