Nochmals Bilder

crashx

Erfahrenes Mitglied
Bilder die zweite

Ich habe nun herausgefunden wie das mit dem Bilder upload funktioniert.
nun möchte ich aber den link zum Bild in die mysql Datenbank einbinden so das ich das bild später mit echo $row->bild; ausgeben kann.
Im gleichem Atemzug möchte ich in die gleich Tabelle wie das Bild noch daten einfügen so das ich das alles ungefähr so ausgeben kann.

mein upload script:

PHP:
<?php 

$path     = "bilder/"; 
$tempname = $_FILES['file']['tmp_name']; 
$name     = $_FILES['file']['name']; 
$type     = $_FILES['file']['type']; 
$size     = $_FILES['file']['size']; 

echo $name; 
if ($type != "image/gif" && $type != "image/pjpeg") 
{  
    $err[] = "nur gif und jpeg Dateien dürfen hochgeladen werden."; 
} 

if ($size > 1536000) 
{ 
    $err[] = "Die Datei, welche du hochladen willst, ist zu groß!"; 
} 

If (empty($err)) { 
    // nachfolgender Code erstellt ein eindeutige ID
    $time = explode(" ",microtime()); 
    $neuer_name = str_replace(".","",$time[0] + $time[1]); 
    if ($type == "image/pjpeg") { 
        $neuer_name = $neuer_name . ".jpg"; 
    } elseif ($_FILES['bild_up']['type']=="image/gif") { 
        $neuer_name = $neuer_name . ".gif"; 
    } 

    copy($tempname, $path . $neuer_name); 
    echo "Die Datei " . $name . " wurde erfolgreich hochgeladen!"; 
} else { 
    foreach($err as $error) { 
        echo $error . "<br>"; 
    } 
} 

?>

so möchte ich das ganze dan ausgeben können. ps Die Darstellung ist noch nicht wichtig.

PHP:
<?
$abfrage = "SELECT * FROM auto";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo $row->marke;
echo $row->beschr;
echo $row->km;
echo $row->preis;
echo $row->bild1;
echo $row->bild2;
}
?>

wie muss ich vorgehen im upload script das ich mehr als 1 Bild auf einmal hochladen kann?
wie setze ich das upload script fort das es mir den eintrag in die tabelle in die gewünschte zelle schreibt?

Für die Hilfe die ich von euch bekomme bin ich sehr Dankbar.
 
wie muss ich vorgehen im upload script das ich mehr als 1 Bild auf einmal hochladen kann?
Um mehrere Dateien auf den Server hochladen zu können, benötigst du mehrere Dateiauswahl-Elemente.
Siehe dazu auch das Kapitel über die Steuerung von Dateiuploads sowie die PHP-FAQ-Antwort auf die Frage „Wie kann ich mehrere Dateien auf einmal uploaden?“.

wie setze ich das upload script fort das es mir den eintrag in die tabelle in die gewünschte zelle schreibt?
Allgemein ist es nicht empfehlenswert, die Grafiken direkt in der Datenbank zu speichern (vgl. PHP-FAQ-Antwort auf „Ist es sinnvoll, Bilder in einer Datenbank abzulegen?“). Besser ist es, lediglich den Grafiknamen oder den Pfad zur Grafik im Dateisystem zu speichern.


PS: Lies dir bitte mal meine Signatur durch und verhalte dich dementsprechend.
 
Ich weiss nicht ob Dir das was hilft , aber ich probier mich auch eben an einen Script wo man mehrere Datein uploaden kann.
Ob es funktioniert werd ich sehen wenn es fertig ist oder auch nicht , ist aber eine Ansatz Idee.

Im Prinzip sind es 5 Upload Felder und eine oblikatorische if(isset($_FILES) etc welche nun hier nicht sind da es woanders eingebunden wird

PHP:
 <?php
 // Uploadcheck für Bilder
 $uploaded = 0;
 for($i = 0 ; $i < count($_FILES);$i++)
 {
   if($_FILES["Bild$i"]["error"] == 0)
   {
    $x = 0;
    
 	foreach($_FILES["Bild$i"] as $key => $wert)
 	{
 	  $uploaded_files[10][$i][$x] = $wert; // $_FILES["NAME"]["EIGENSCHAFT"] in den Array speichern
 	  $x++;
 	}
 	$uploaded++;  // Anzahl der Datein die hochgeladen wurden
   }
 }
 
 // Files Verarbeiten und überprüfen
 
 for($i = 0 ; $i < $uploaded ; $i++)
 {
   for($x = 0 ; $x < 5 ;$x++)  // x < anzahl der Elemente von $_FILES["Bild"]
   {
 	echo $uploaded_files[10][$i][$x]."<br>"; 
    // Gibt die aktuellen hochgeladenen Datein aus 
    // $uploaded_files[10][0][0] = dateiname.jpg
    //  ...
    //  $uploaded_files[10][0][4]  = ehm Dateigrösse 
   }
 }
 ?>
 
ich habe nach langem testen eine lösung für mein 1 problem gefunden.

die daten werden erfasst:
erfassen.php

PHP:
<html>
<head><title>Erfassen</title></head>
<body>

<?
	if ($submit) {

	include("dbconnect.php");

    $data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));

    $result=MYSQL_QUERY("INSERT INTO auto (marke,preis,beschr,bin_data,filename,filesize,filetype) ".
        "VALUES ('$marke','$preis','$beschr','$data','$form_data_name','$form_data_size','$form_data_type')");

    $id= mysql_insert_id();
    print "<p>Upload Erfolgreich</p>";

    MYSQL_CLOSE();

	} else {

?>

<form method="post" action="<?php echo $PHP_SELF; ?>" enctype="multipart/form-data">   
<br>File to upload/store in database:<br>
<input type="file" name="form_data"  size="40">
<p>Marke<br>
<input type="text" name="marke" size="20"><br>
Preis<br>
<input type="text" name="preis" size="20"><br>
Beschreibung<br>
<input type="text" name="beschr" size="20"></p>
<p><input type="submit" name="submit" value="submit">
</form>

<?

	}

?>

</body>
</html>

das script welches mir das bild ausgibt:
getdata.php
PHP:
<?php
	{

	include("dbconnect.php");

    $query = "select bin_data,filetype from auto";
    $result = @MYSQL_QUERY($query);

    $data = @MYSQL_RESULT($result,0,"bin_data");
    $type = @MYSQL_RESULT($result,0,"filetype");

    Header( "Content-type: $type");
    echo $data;
    
	};
?>

die seite wo ich mir alles ausgeben lasse:
showdata.php
PHP:
<html>

<head>
</head>

<body>

<?
	include("dbconnect.php");

	$abfrage = "SELECT * FROM auto";
	$ergebnis = mysql_query($abfrage);
	while($row = mysql_fetch_object($ergebnis))
	{
?>
<img border="0" src="getdata.php?id=*" width="100" height="100">
<?
	echo $row->marke;
	echo $row->preis;
	echo $row->beschr;
	}
?>

</body>

</html>

ich danke euch für die hilfe!
 
ein weiteres problem ist aufgetaucht :-(

wieso kann ich das: <img border="0" src="getdata.php?id=*" width="100" height="100"> nicht in der while schleife ausgeben?

ich bekomme immer die fehler meldung : Parse error: parse error, unexpected T_LNUMBER, expecting ',' or ';' in /srv/www/htdocs/web36/html/showdata.php on line 19

showdata.php
PHP:
<html>

<head>
</head>

<body>

<?
	include("dbconnect.php");

	$abfrage = "SELECT * FROM auto";
	$ergebnis = mysql_query($abfrage);
	while($row = mysql_fetch_object($ergebnis))
	{
	echo $row->marke;
	echo $row->preis;
	echo $row->beschr;
	echo "<img border="0" src="getdata.php?id=*" width="100" height="100">";
	}
?>

	


</body>

</html>

line 19 ist bei mir: echo "<img border="0" src="getdata.php?id=*" width="100" height="100">";

danke schon jetzt für eure hilfe.
 
Ich habe inzwischen schon mein Bilder Upload fertig wo man mehere Bilder hochladen kann. Im Prinzip ist es besser die Bilder auf den Webserver zu schmeissen und nicht die Datenbank damit vollzustopfen da diese sonst recht gross werden kann auf Dauer.

PHP:
  <?php
  // Uploadcheck für Bilder
  
  $uploaded = 0;
  $upload_dir = "Bilder/".$_GET["dir"]."/";
  
  include ("includes/imagetype.inc.php");
  
  for($i = 0 ; $i < count($_FILES);$i++)
  //
  {
    if($_FILES["Bild$i"]["error"] == 0)
    // Wenn ein Upload stattfand $_FILES["Bild$i"]["error"] != 0
    {
     $x = 0;
     // Zähler für die File Eigenschaften
     
  	foreach($_FILES["Bild$i"] as $key => $wert)
  	{
  	  $uploaded_files[10][$i][$x] = $wert;
  	  // $_FILES["NAME"]["EIGENSCHAFT"] in den Array speichern
  	  $x++;
  	}
  	$uploaded++;  // Anzahl der Datein die hochgeladen wurden
    }
  }
  // Files Verarbeiten und überprüfen
  for($i = 0 ; $i < $uploaded ; $i++)
  {
    for($x = 0 ; $x < 5 ;$x++)
    {
  	// echo $uploaded_files[10][$i][$x]."<br>";
  	// Gibt die aktuellen hochgeladenen Datein aus
  	// $uploaded_files[10][0][0] = dateiname.jpg
 //						 = Datei Typ
 //						 = tmp_name
 //						 = Fehler
  	// $uploaded_files[10][0][4] = Dateigrösse
    }
  
  	if($uploaded_files[10][$i][4] != "0" || $uploaded_files[10][$i][4] <= 200000)
  	 {
  	   //Überprüfe die Dateigrösse muss grösser als 0 sein und kleiner als 200kb
  	   $datei = explode("." , $uploaded_files[10][$i][0]);
  	   //zerlegt die aktuelle Datei in Array
  	   $datei_end = count($datei);
  	   $datei_end--;
  	   //Anzahl der Array Elemente zählen und um 1 verringern
  
  	   foreach($imagetype as $key => $wert)
  	   {
  		 //laufe das array imagetype durch welches mit den Dateiendungen gefüttert ist
  		if(strtolower($datei[$datei_end]) == strtolower($wert))
 		// Überprüfe ob die Dateiendung eine zulässige Dateiendung ist mit dem Wert aus dem Array
  		{
  		   if(!empty($_FILES["Bild$i"]["name"])){
  			 // wenn der Dateiname nicht leer ist
 		 $uploaded_files[10][$i][0] = str_replace(" ", "_" , $uploaded_files[10][$i][0]);
 			// Freizeichen im Bild mit einen _ ersetzen sonst muckert die getimage_size rum
 		 if(copy($uploaded_files[10][$i][2],"Bilder/".$_GET["dir"]."/".$uploaded_files[10][$i][0])){
 			 // kopiere datei temp file nach Bilder/angewählte Directory und gib den File_namen
 			 if(move_uploaded_file($uploaded_files[10][$i][2],"Bilder/".$_GET["dir"]."/".$uploaded_files[10][$i][0])){
  		  } // moved_upload_file schliessen
  		 } // copy() schliessen
  		} // empty() schliessen
  	   } // if schliessen
  	  } //foreach schliessen
  	 } // If schliessen
  }
  
  ?>

Im Prinzip hab ich die ganzen Bilddaten in einen Mehrdimensionen Array eingespeichert
$uploaded_files[10][0] erstes Bild wird dann gefüttert mit den Array Elementen aus $_FILES["UploadFeldname"];

$uplaoded_files[10][1] zweites Bild etc wo dann wieder alle $_FILES["..."] Elemente reingeprügelt werden.

Die Bildnamen und ID dafür würde ich dann quasi unter move_uploaded_file() machen.

MfG

nachtrag , des str_replace hab ich genutzt da es sonst später bei einer ausgabe , geimagesize() Probleme gegeben hätte wenn ein Freizeichen innerhalb des Bildes gewesen wäre.

und
include ("includes/imagetype.inc.php");

PHP:
 <?php
 $imagetype = array("1" => "gif" , "jpg" , "png");
 ?>
 
crashx hat gesagt.:
ein weiteres problem ist aufgetaucht :-(

wieso kann ich das: <img border="0" src="getdata.php?id=*" width="100" height="100"> nicht in der while schleife ausgeben?

Code:
echo "<img border='0' src='getdata.php?id=*' width='100' height='100'>";

oder

Code:
echo '<img border="0" src="getdata.php?id=*" width="100" height="100">';

oder

Code:
echo "<img border=\"0\" src=\"getdata.php?id=*\" width=\"100\" height=\"100\">";
 
Zurück