Bildupload mit PHP & MySQL

  • #1
W

walker45

Guest
Hallo zusammen...

Ich habe im Internet ein wirklich tolles PHP Upload Formular gefunden! Nun möchte ich es erweitern! Der Filename und ein Text, soll in eine Datenbank geschrieben werden.

Der Filename wird im folgendem Script bereits in die DB geschrieben. Jedoch nicht der dazugehörige Text!

upload.php
Code:
<?php
$num_of_uploads=3;
$file_types_array=array(JPG , jpg , GIF , gif , PNG , png);
$max_file_size=1048576;
$upload_dir=uploads/;

function uploaderFILES($num_of_uploads=1, $file_types_array=array(JPG), $max_file_size=1048576, $upload_dir=){
 if(!is_numeric($max_file_size)){
  $max_file_size = 1048576;
 }
 

 
 foreach($_FILES[file][error] as $key => $value)
 {
   if($_FILES[file][name][$key]!=)
   {
    if($value==UPLOAD_ERR_OK)
    {
     $origfilename = $_FILES[file][name][$key];
     $filename = explode(., $_FILES[file][name][$key]);
     $filenameext = $filename[count($filename)-1];
     unset($filename[count($filename)-1]);
     $filename = implode(., $filename);
     $filename = substr($filename, 0, 15)...$filenameext;
     $file_ext_allow = FALSE;
     for($x=0;$x<count($file_types_array);$x++){
      if($filenameext==$file_types_array[$x])
      {
       $file_ext_allow = TRUE;
      }
     } // for
     if($file_ext_allow){
      if($_FILES[file][size][$key]<$max_file_size){
       if(move_uploaded_file($_FILES[file][tmp_name][$key], $upload_dir.$filename)){
			 
			 
			 $sql = INSERT INTO `images` ( `id` , `img` , `text` ) 
VALUES (
'',->$filename',->$text');
;
mysql_query($sql);
			 
        echo(File uploaded successfully. - <a href='.$upload_dir.$filename.' target='_blank'>.$filename.</a><br />);
       }
       else { echo('<font color=#FF0000>'.$origfilename.<br /></font> was not successfully uploaded!<br />);}
      }
      else { echo('<font color=#FF0000>'.$origfilename.<br /></font> was too big, not uploaded!<br />); }
     } // if
     else{ echo('<font color=#FF0000>'.$origfilename.<br /></font>had an invalid file extension, not uploaded!<br />); }
    }
    else{ echo('<font color=#FF0000>'.$origfilename.<br /></font>was not successfully uploaded!<br />); } // else
   }
 }
} // funtion

/////////////////////////////////////////
?>
 <form action='<?=$PHP_SELF;?>' method='post' enctype='multipart/form-data'>Upload files:<br /><br /><input type='hidden' name='submitted' value='TRUE' id='<?=time();?>' >
 <input type='hidden' name='MAX_FILE_SIZE' value='<?=$max_file_size;?>' >
<?php for($x=0;$x<$num_of_uploads;$x++){
   $form .= <input type='file' name='file[]'> <input type='text' name='text[]'><br />;
  }
  $form .= <input type='submit' value='Upload'><br /><br />
  <font color='red'>*</font> Maximum file length (minus extension) is 15 characters.<br />
  <font color='red'>*</font> Anything over that will be cut to only 15 characters.<br>
  <font color='red'>*</font> Valid file types: JPG, GIF, PNG;
  
  echo($form);
?>  
 </form>
 


<?php
if(isset($_POST[submitted])){
  uploaderFILES($num_of_uploads, $file_types_array, $max_file_size, $upload_dir);
}
?>

Die Eingaben im folgenden Input werden noch nicht in die DB gespeichert:

Code:
<input type='text' name='text[]'>

Wie muss ich den Code vervollständigen damit, auch dieser Array (text[]) mit dem dazugehörigen filename in die DB gespeicher wird?

Danke für Eure Hilfe!!!
 
  • #2
Code:
<?php
$num_of_uploads=3;
$file_types_array=array(JPG , jpg , GIF , gif , PNG , png);
$max_file_size=1048576;
$upload_dir=uploads/;

function uploaderFILES($num_of_uploads=1, $file_types_array=array(JPG), $max_file_size=1048576, $upload_dir=){
 if(!is_numeric($max_file_size)){
  $max_file_size = 1048576;
 }
 

 $i = 0;
 foreach($_FILES[file][error] as $key => $value)
 {
   if($_FILES[file][name][$key]!=)
   {
    if($value==UPLOAD_ERR_OK)
    {
     $origfilename = $_FILES[file][name][$key];
     $filename = explode(., $_FILES[file][name][$key]);
     $filenameext = $filename[count($filename)-1];
     unset($filename[count($filename)-1]);
     $filename = implode(., $filename);
     $filename = substr($filename, 0, 15)...$filenameext;
     $file_ext_allow = FALSE;
     for($x=0;$x<count($file_types_array);$x++){
      if($filenameext==$file_types_array[$x])
      {
       $file_ext_allow = TRUE;
      }
     } // for
     if($file_ext_allow){
      if($_FILES[file][size][$key]<$max_file_size){
       if(move_uploaded_file($_FILES[file][tmp_name][$key], $upload_dir.$filename)){


							$sql = INSERT INTO images SET img='.$filename.', text='.$_POST[text][$i].';
							mysql_query($sql);

        echo(File uploaded successfully. - <a href='.$upload_dir.$filename.' target='_blank'>.$filename.</a><br />);
       }
       else { echo('<font color=#FF0000>'.$origfilename.<br /></font> was not successfully uploaded!<br />);}
      }
      else { echo('<font color=#FF0000>'.$origfilename.<br /></font> was too big, not uploaded!<br />); }
     } // if
     else{ echo('<font color=#FF0000>'.$origfilename.<br /></font>had an invalid file extension, not uploaded!<br />); }
    }
    else{ echo('<font color=#FF0000>'.$origfilename.<br /></font>was not successfully uploaded!<br />); } // else
   }
		 ++$i;
 }
} // funtion

/////////////////////////////////////////
?>
 <form action='<?=$PHP_SELF;?>' method='post' enctype='multipart/form-data'>Upload files:<br /><br /><input type='hidden' name='submitted' value='TRUE' id='<?=time();?>' >
 <input type='hidden' name='MAX_FILE_SIZE' value='<?=$max_file_size;?>' >
<?php for($x=0;$x<$num_of_uploads;$x++){
   $form .= <input type='file' name='file[]'> <input type='text' name='text[.$x.]'><br />;
  }
  $form .= <input type='submit' value='Upload'><br /><br />
  <font color='red'>*</font> Maximum file length (minus extension) is 15 characters.<br />
  <font color='red'>*</font> Anything over that will be cut to only 15 characters.<br>
  <font color='red'>*</font> Valid file types: JPG, GIF, PNG;
  
  echo($form);
?>  
 </form>



<?php
if(isset($_POST[submitted])){
  uploaderFILES($num_of_uploads, $file_types_array, $max_file_size, $upload_dir);
}
?>

:1 :°
 
  • #3
--> Das ist das perfekte Smilie für deine Leistung :T

DAAAAAAAAAAAANNNNKKKKKKKEEEEEE
 
  • #4
ups, so schnell getestet :2funny: :2funny:
 
  • #5
ne noch nicht! aber ich kenne dich langsam aber sicher! du bist da zuverlässig! und nur schon deine arbeit verdient ein lob!
 
  • #6
jetzt habe ich es getestet!

es funktioniert! man so geil!!!!!
 
  • #7
Neuer Tag neue Frage! ;)

Ich habe folgende DB:

idfiletext
1hallo1.jpglustiges bild 1
2hallo2.jpglustiges bild 2
3hallo3.jpglustiges bild 3
4hallo4.jpglustiges bild 4
5hallo5.jpglustiges bild 5
6hallo6.jpglustiges bild 6

Nun möchte ich mit php und mysql jeweils drei bilder nebeneinander darstellen und dann kommt die nächste zeile!

THX für eure Hilfe!
 
  • #8
Code:
<?php
$sql = SELECT * FROM images WHERE ............. ORDER by .......;
$resID = mysql_query($sql);
$i = 0;
?>
<table align=center width=100% cellpadding=0 cellspacing=0>
	<tr>
<?php
while($row = @mysql_fetch_array($resID, MYSQL_BOTH)) {
	if($i > 0 && $i % 3 == 0) echo </tr><tr>;
	$re =-><td width=33% align=center>';
	$re .=-><p align=center><img src='.$row[img].' alt=????></p>';
	$re .=-><p align=center>'.$row[text].'</p>';
	$re .=-></td>';
	echo $re;
    ++$i;
}
?>
	</tr>
</table>

:° :°
 
  • #9
hast du auch ein spendenkonto? --> :1
 
  • #10
Hallo...

Ich habe folgenden Code, welches mir die Formulardaten auswertet und anschliessend die Files hochlädt bzw. allfällige Fehlermeldungen ausgibt (Funktioniert toll)! Mein Problem ist es, dass wenn ein User eine Datei mit dem gleichen Filename hochlädt, das bereits existierende File überschreibt. Das möchte ich verhindern. Bzw soll er dann eine Fehler meldung ausgen z.b. -> Dateiname existiert bereits!

Glücklicher weise, habe ich alle Dateinamen in einder DB gespeichert man muss also nur noch die hochgeladenen Files mit den Einträgen in der DB prüfen doch genau da weiss ich nicht wie das geht!

Es wäre toll wenn mir jemand helfen könnte!

funtion.php
Code:
<table class=main2>
						<tr>
						<td>
					
							
								
						<?php
$num_of_uploads=3;
$file_types_array=array(JPG , jpg , GIF , gif , PNG , png);
$max_file_size=1048576;
$upload_dir=./thumbnails/images/;



function uploaderFILES($num_of_uploads=1, $file_types_array=array(JPG), $max_file_size=1048576, $upload_dir=){
 if(!is_numeric($max_file_size)){
  $max_file_size = 1048576;
 }
 

 $i = 0;
 foreach($_FILES[file][error] as $key => $value)
 {
   if($_FILES[file][name][$key]!=)
   {
    if($value==UPLOAD_ERR_OK)
    {
     $origfilename = $_FILES[file][name][$key];
     $filename = explode(., $_FILES[file][name][$key]);
     $filenameext = $filename[count($filename)-1];
     unset($filename[count($filename)-1]);
     $filename = implode(., $filename);
     $filename = substr($filename, 0, 15)...$filenameext;
     $file_ext_allow = FALSE;
     for($x=0;$x<count($file_types_array);$x++){
      if($filenameext==$file_types_array[$x])
      {
       $file_ext_allow = TRUE;
      }
     } // for
     if($file_ext_allow){
      if($_FILES[file][size][$key]<$max_file_size){
       if(move_uploaded_file($_FILES[file][tmp_name][$key], $upload_dir.$filename)){


$sql = INSERT INTO images SET img='.$filename.', text='.$_POST[text][$i].';
mysql_query($sql);


echo <p align=\center\>;

        echo(File uploaded successfully. - <a href='.$upload_dir.$filename.' target='_blank'>.$filename.</a><br />	  
			  
			  <br />);		  
			 
			  
	thumb($filename);
	
	echo <br /><br /></p>;
	
 
       }
       else { echo('<font color=#FF0000>'.$origfilename.<br /></font> was not successfully uploaded!<br />);}
      }
      else { echo('<font color=#FF0000>'.$origfilename.<br /></font> was too big, not uploaded!<br />); }
     } // if
     else{ echo('<font color=#FF0000>'.$origfilename.<br /></font>had an invalid file extension, not uploaded!<br />); }
    }
    else{ echo('<font color=#FF0000>'.$origfilename.<br /></font>was not successfully uploaded!<br />); } // else
   }
++$i;
 }
} // funtion

/////////////////////////////////////////
?>

<?php
if(isset($_POST[submitted])){

echo ;

}

else
{
include(form.php);
}

?>


<?php
if(isset($_POST[submitted])){


 echo<div id=\div_big\>;
  uploaderFILES($num_of_uploads, $file_types_array, $max_file_size, $upload_dir);
  
  echo </div>;
  
  }

?>	
		
</td>
</tr>
</table>


<p align=center class=copyright><a href=?cid=view.php>return to main page</a></p>

Hier das Formular:

form.php
Code:
 <form action='<?=$PHP_SELF;?>' method='post' enctype='multipart/form-data'>Upload files:<br /><br /><input type='hidden' name='submitted' value='TRUE' id='<?=time();?>' >
 <input type='hidden' name='MAX_FILE_SIZE' value='<?=$max_file_size;?>' >
<?php for($x=0;$x<$num_of_uploads;$x++){
   $form .= <input type='file' name='file[]'> <input type='text' name='text[.$x.]' style='width:300px;' value='Your text...'>;
  }
  $form .= <input type='submit' value='Upload'><br /><br />
  <font color='red'>*</font> Maximum file length (minus extension) is 15 characters.<br />
  <font color='red'>*</font> Anything over that will be cut to only 15 characters.<br>
  <font color='red'>*</font> Valid file types: JPG, GIF, PNG<br />
<font color='red'>*</font> The owner of this site does not take responsibility for uploaded pictures.<br /><br />;
  
  echo($form);
?>  
 </form>
 
  • #11
Ich stelle einer hochgeladenen Datei immer einen Timestamp voran, dann kommst du erst gar nicht in die Verlegenheit das du 2 gleiche Dateinamen hast :°

z.B.
Code:
<?php
....
$filename = time()._.substr($filename, 0, 15)...$filenameext;
....
?>

Einfache Lösung aber sehr wirksam :2funny:


* 3 Themen zusammengeführt da es sich ja um das gleiche Script handelt *
 
  • #12
Hmm... stimmt!

Also wo im code müsste ich das einbauen? Blicke eben bei der Datei function.php nicht ganz durch!

Danke!
 
  • #13
einfach time()._. vor das substr(.............) setzen

Code:
<?php
......
     $origfilename = $_FILES[file][name][$key];
     $filename = explode(., $_FILES[file][name][$key]);
     $filenameext = $filename[count($filename)-1];
     unset($filename[count($filename)-1]);
     $filename = implode(., $filename);
# HIER
     $filename = time()._.substr($filename, 0, 15)...$filenameext;
#     
     $file_ext_allow = FALSE;
......
?>
 
  • #14
sorry.... ich dummkopf ist ja klar! :|

aber das tolles ist, dass es jedesmal läuft! yes...
 
Thema:

Bildupload mit PHP & MySQL

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben