Upload mit Datenbankeintrag verknüpfen

nordi

Erfahrenes Mitglied
Hallo, ich hab ein kleines Problem, an dem ich schon ein wenig verzweifle.. Ich habe eine Maske geschrieben, in der man Daten in eine MySQL-Datenbank abspeichert (Name, Text, Bildname, Filme). Nach absenden der Daten kommt man zum zweiten Schritt, an dem ich nicht genau weiß, wie ich das lösen soll.

Im zweiten Schritt ist ein Uploadskript, in dem man das Bild hochlädt, welches man vorher in der Maske bestimmt hat. Das Skript generiert einen automatischen Namen für die Bilder, damit es keine Doppelungen gibt. Ich würde jetzt gerne den Bildpfad mit in die Datenbank zu dem jeweiligen Namen einspeichern.. weiß aber nicht wie? Damit ihr vllt einen Einblick bekommt, wie das Uploadskript funktioniert:

PHP:
<?
if($_POST["senden"]==1){ 
	$filename = ""; 
	if ($_FILES['userfile']['tmp_name']<> 'none'){    
		$file = $_FILES['userfile']['name']; 
		$temp = $_FILES['userfile']['tmp_name']; 
		$path_parts = pathinfo($file); 
		if(!isset($path_parts["extension"])) $path_parts["extension"]=''; 
		if($_FILES['userfile']['type'] != 'image/gif' && $_FILES['userfile']['type'] != 'image/jpeg' && $_FILES['userfile']['type'] != 'image/png' && $_FILES['userfile']['type'] != 'image/jpeg') $ist_bild=0; else $ist_bild=1; 
		if($upload_erlaubnis == 0) $ist_bild=1;		
		if($ist_bild==0) {  
			echo '<div style="color:red;">Nur GIF, PNG, JPEG und JPG Dateien dürfen hochgeladen werden. <a href="'.$_SERVER['PHP_SELF'].'">Noch mal versuchen...</a><br><br></div>'; 
		} else {
			if($path_parts["extension"]!=""){
				$filename = "datei_" . time() . "." . $path_parts["extension"]; 
				if($_FILES['userfile']['size'] <= $groessemax*1024){
					if(decoct(fileperms($img_path_up))==40777){
						if(@copy($temp, $img_path_up.$filename)){ 
							echo 'Alle Daten wurden erfolgreich abgespeichert! Contentpicture ist auf den Server!<br>'; 
							echo 'Url der Datei: <a href="http://'.$_SERVER['HTTP_HOST'].$path.$filename.'" target="_blank">http://'.$_SERVER['HTTP_HOST'].$path.$filename.'</a><br><br><a href="'.$_SERVER['PHP_SELF'].'">Eine weitere Datei auf den Server laden...</a><br><br></div>'; 
						} else {
							echo '<div style="color:red;">Die Datei konnte nicht auf den Server geladen werden. <a href="'.$_SERVER['PHP_SELF'].'">Noch mal versuchen...</a><br><br></div>';
						}
					} else {
						echo '<div style="color:red;">Der Upload Ordner hat keine Schreibrechte! <a href="'.$_SERVER['PHP_SELF'].'">Noch mal versuchen...</a><br><br></div>';
					}
				} else {
					echo '<div style="color:red;">Die Datei ist zu groß! Die Datei darf nicht größer als '.$groessemax.' KB (KiloByte) sein. <a href="'.$_SERVER['PHP_SELF'].'">Noch mal versuchen...</a><br><br></div>';
				}
			} 
		}
	} 
} else { 
?>
    <? } ?>

Die Maskendaten werden wie folgt abgespeichert:

PHP:
<?
	
	if($Eintragen){
if ($artistname == "" OR $text == "" OR $film1 == "") {

echo "Bitte Pflichtfelder ausfüllen";
}

else

{

$connect = mysql_connect($dbhost, $dbuser, $dbpass) or die("Verbindung zum Server nicht hergestellt!<br>");   
$selectDB = mysql_select_db($dbtable) or die("Konnte die Datenbank <b>db_test</b> nicht auswählen");   


$eintrag = "INSERT INTO $artists (artistname,text,url,email,film1) VALUES ('$artistname', '$text', '$url', '$email', '$film1')";


$eintragen = mysql_query($eintrag);

echo "<strong>VIELEN DANK!</strong><br>Ihre Daten für $artistname wurden in die Datenbank eingeplegt.";
}}
?>

Vielen Dank schonmal für Antworten! Grüße

Marius
 
Ich verstehe nicht wo das Problem liegt.
Du hast doch den Pfad schon, den musst du doch nurnoch speichern?
PHP:
$url = $_SERVER['HTTP_HOST'].$path.$filename;
$eintrag = "INSERT INTO $artists (artistname,text,url,email,film1) VALUES ('$artistname', '$text', '$url', '$email', '$film1')";
 
Hi, öh.. hab wohl grad nen Brett vorm Kopf :) Die Einspeicherung der Daten erfolgt ja auf Seite 1 und der Upload auf Seite 2.. wie soll ich nun den Pfad in den richtigen Eintrag einspeichern? Steh wohl grad echt auf'm Schlauch!
 
//edit: Ok hab ich mich verlesen :D

Dann musst du die User ID auf die Seite 2 Übergeben und von dort aus dann ein Update ausführen.

Oder, du speicherst erst auf Seite 2.
 
Hi, danke für die schnellen Antworten! Wie würdest du denn die User-ID übergeben? Mit "id=$id" ? Ich verstehs grad garnicht :confused:
 
Kommt drauf an wie du von Seite 1 auf Seite 2 kommst. Am einfachsten gehts wohl wenn du die User Id an eine URL anhängst:
Code:
www.example.com/file.php?id=$userId

Oder Du speicherst nach dem Insert die User Id als Session:
PHP:
$_SESSION['userid'] = mysql_insert_id(); // Funktioniert nur, wenn die User Id ein auto_increment-Wert ist
 
Hi,

man gelangt von der ersten Seite zur zweiten mittels einem Submit-Button. Also :

HTML:
<form method="post" enctype="multipart/form-data" action="finish.php">
	<input type="hidden" value="1" name="senden">
	die Datei darf nicht gr&ouml;&szlig;er sein als <?php if((maximaledateiuploadgroesseermitteln()/1024)>$groessemax) echo $groessemax; else echo (maximaledateiuploadgroesseermitteln()/1024);?> KB (KiloByte).<br><br>
	<input name="userfile" type="file" size="40"><br><br>
	<input type="submit" name="action" value="Einspeichern und fertig!">
</form>

Zweite Seite ist der Code, den ich oben gepostet habe.. Hab noch nie mit Sessions gearbeitet.. füge in den einfach in den Code der zweiten Seite ein? Upaten der Datenbank würde ich dann so machen:

PHP:
<?php
  $url = $_SERVER['HTTP_HOST'].$path.$filename; 
  $aendern = "UPDATE $artists Set url = $url'";
  ?>
 
Also, ich schlage dir folgendes vor:
Das erste Formular, also Seite 1, leitest du ganz normal auf Seite 2 weiter.
Dort, in dem Upload Formular fügst du dann X hidden-Felder ein:
HTML:
<input type="hidden" name="feld1" value="<?=$_POST['feld1_aus_seite_1']?>" />
<input type="hidden" name="feld2" value="<?=$_POST['feld2_aus_seite_1']?>" />
<input type="hidden" name="feld3" value="<?=$_POST['feld3_aus_seite_1']?>" />
...usw.
Auf der dritten Seite, die wohl finish.php heisst, fügst du alle Daten dann in die Datenbank auf einmal ein.
 
Damit man nicht auf hunderte von versteckten Feldern kommen, habe ich etwas in dieser Art eingefügt.

PHP:
<?php

$page1 = serialize($_POST);

# [...]

?>

<!-- Formular -->
<input type="hidden" name="page1" value="<?php echo $page1; ?>" />

[phpf]serialize[/phpf]
[phpf]unserialize[/phpf]
 
Wunderbar.. hatte wohl echt nen Brett vorm Kopf :) Hab alle Abfragen zusammengepackt und auf der zweiten Seite abgespeichert! Man kann sich auch das Leben schwer machen..

Hab aber noch ne zusätzliche Frage. Momentan kann man ja GIF, PNG, JPEG und JPG hochladen. Es wäre super, wenn man auf SWFs hochladen könnte. Das mit dem Upload ist ja kein Problem, aber wie würdet ihr das mit der Darstellung lösen? Das Skript müsste also selbst erkennen, ob es ein Bild ist oder ein SWF, da die Einbindung ja ganz anders ist..

Momentan mit dem Bild hab ich es so gemacht

PHP:
<img src=\"http://".$row['pfad']."\" alt=\"1\" width=\"366\" height=\"206\" />
 

Neue Beiträge

Zurück