Problem beim Upload

drabbit

Mitglied
Hallo leute,

ich habe ein Problem bei einem Formular - ich lese Daten aus meiner Datenbank welche ich mit dem Formular bearbeiten möchte - es soll auch die Möglichkeit geben nachträglich Bilder zu den Beiträgen zu laden und genau dabei habe ich Probleme...

Mein Problem ist, dass ich keinen Übergabewert an die Datenbank schicken kann - ich arbeite mit 2 Datein. Kann es sein dass da meine Methode mit $_REQUEST nicht funktioniert?

Hier der Code für das Formular (für die Änderungen der Beiträge und auch das Bild soll hier geladen werden)...
PHP:
<div id="center">


<?

if(isset($_POST['header'])){
	
	#Überprüfen ob im Feld header was steht
	if(strlen($_POST['header'])<1){$error['header']=1;}
	
	#Überprüfen ob im Feld text was steht
	if(strlen($_POST['text'])<1){$error['text']=1;}
	
	
$userfilename = "bild"; // name das datei-input-felds in der form
$zielverzeichnis = "../upload"; // hierhin wirds gespeichert

if(isset($_FILES[$userfilename])){
    switch($_FILES[$userfilename]['error']){
        case 1: die("Datei ist zu groß.");
        case 2: die("Datei wurde nicht vollständig hochgeladen.");
        case 3: die("Es wurde keine Datei hochgeladen.");
    }
    
    // ist es ein bild?
    // if(substr($_FILES[$userfilename]['type'], 0, 5) != 'image')
    //    die("Datei ist kein Bild!");
    
    // umbennenen, falls datei existiert
    $i = 1;
    $newname = $_FILES[$userfilename]['name'];
    while(is_file("$zielverzeichnis/$newname")){
        $ext = strrchr($_FILES[$userfilename]['name'], '.');
        $newname = substr($_FILES[$userfilename]['name'], 0, -(strlen($ext)+1)) . "_$i.$ext";
        $i++;
    }
    
    // verschieben
    echo move_uploaded_file($_FILES[$userfilename]['tmp_name'], "$zielverzeichnis/$newname") ? "Datei wurde erfolgreich hochgeladen." : "Kein Bild ausgew&auml;hlt bzw. schlug das Speichern der Datei schlug fehl.";
}
	
	
}



# Formular nur anzeigen, wenn noch nicht abgeschickt oder Fehler
if(!isset($_POST['header']) || isset($error)){ 
	

?>



<?
// Hier werden die Daten in die Datenbank gespeichert
	

echo "<h2>Angezeigte Artikel</h2><br />";
	
		$result = mysqli_query($dblink, "Select * FROM artikel WHERE ansicht = '1'");

		while($row = mysqli_fetch_object($result)){
        
		$text = $row -> text;
		
		echo "<form enctype='multipart/form-data' method='post' action='index2.php?page=edit'>";
		echo "<strong>&Uuml;berschrift:</strong><input name='header' type='text' value='" . $header  = $row -> header  . "'/>" . "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" . $autor = $row -> autor;
		echo "<input name='aid' type='text' value='" . $artikelid = $row -> artikelid ."' style='visibility:hidden;'/>";    

		echo "<textarea name='text' cols='60' rows='20'>" .$text. "</textarea><br /><br />";  
		echo "<img src=../" . $pic = $row -> pic . " /><br />";
	
		
		echo "<input type='submit' name='update' value='Artikel updaten' />";
		echo "<input type='submit' name='verbergen' value='Artikel verbergen' />";
		echo "<input type='submit' name='imgdelete' value='Bild loeschen' />";
		
		echo "Bild:<input name='bild' type='file'><input type='submit' name='bild' value='hochladen'>";
		
		echo "<input name='pic' type='text' value='" . $pic = $row -> pic ."'style='visibility:hidden;' />";    
		echo "<input name='newname' type='text' value='" . $newname ."'style='visibility:hidden;' />";    
		
		echo "</form>";	
		
		echo "<br /><hr><br /><br />";
				
		

		
		}
	
		if ( !$result ) {
			die('Ups, Fehler: '.mysqli_error($dblink));
		}



echo "<br /><br /><br /><br />";





echo "<h2>Nicht angezeigte Artikel</h2><br />";
	
		$result = mysqli_query($dblink, "Select * FROM artikel WHERE ansicht = '0'");

		while($row = mysqli_fetch_object($result)){
        
		$text = $row -> text;
		
		echo "<form enctype='multipart/form-data' method='post' action='index2.php?page=edit'>";
		echo "<strong>&Uuml;berschrift:</strong><input name='header' type='text' value='" . $header  = $row -> header  . "'/>" . "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" . $autor = $row -> autor;
		echo "<input name='aid' type='text' value='" . $artikelid = $row -> artikelid ."' style='visibility:hidden;'/>";    
		
		
		echo "<textarea name='text' cols='60' rows='20'>" .$text. "</textarea><br /><br />";  
		echo "<img src=../" . $pic = $row -> pic . " /><br />";
		
	
		
		echo "<input type='submit' name='update' value='Artikel updaten' />";
		echo "<input type='submit' name='anzeigen' value='Artikel anzeigen' />";
		echo "<input type='submit' name='imgdelete' value='Bild loeschen' />";
		
		echo "Bild:<input name='bild' type='file'><input type='submit' value='hochladen'>";

		echo "<input name='pic' type='text' value='" . $pic = $row -> pic ."' style='visibility:hidden;' />";    

		echo "</form>";	
	
		echo "<br /><hr><br /><br />";
				
		

		
		}
	
		if ( !$result ) {
			die('Ups, Fehler: '.mysqli_error($dblink));
		}


?>

<?
	}
?>

</div>

Die zuvor bearbeiteten Datein werden hier in die Datenbank eingegeben...
PHP:
<div id="center">

<? 


	$artikelid = $_REQUEST['aid'];
	$header = $_REQUEST['header'];
	$text = $_REQUEST['text'];
	$pic = $_REQUEST['pic'];
	$bild = $_REQUEST['bild'];
	$newname = $_REQUEST['newname'];
	$pic = "upload/" . $newname;

	
if ($_REQUEST['update']=='Artikel updaten'){		
	$sql = "UPDATE missile.artikel SET header = '$header', text = '$text' WHERE artikel.artikelid = '$artikelid' LIMIT 1 ;";
	$result = mysqli_query($dblink,$sql);
	
	echo "Der Artikel wurde erfolgreich bearbeitet!";
}


if ($_REQUEST['verbergen']=='Artikel verbergen'){		
	$sql = "UPDATE missile.artikel SET ansicht = '0' WHERE artikel.artikelid = '$artikelid' LIMIT 1 ;";
	$result = mysqli_query($dblink,$sql);
	
	echo "Der Artikel wird jetzt nicht mehr angezeigt!";
}

if ($_REQUEST['anzeigen']=='Artikel anzeigen'){		
	$sql = "UPDATE missile.artikel SET ansicht = '1' WHERE artikel.artikelid = '$artikelid' LIMIT 1 ;";
	$result = mysqli_query($dblink,$sql);
	
	echo "Der Artikel wird jetzt angezeigt!";
}

if ($_REQUEST['imgdelete']=='Bild loeschen'){		

	unlink('../' . $pic);

	$sql = "UPDATE missile.artikel SET pic = '' WHERE artikel.artikelid = '$artikelid' LIMIT 1 ;";
	$result = mysqli_query($dblink,$sql);
	
	echo "Das Bild wurde nun gel&ouml;scht!";
}


if ($_REQUEST['bild']=='hochladen'){		
	$sql = "UPDATE missile.artikel SET pic = '$pic' WHERE artikel.artikelid = '$artikelid' LIMIT 1 ;";
	$result = mysqli_query($dblink,$sql);
	
	echo "Der Artikel wird jetzt angezeigt!";
}


?>



</div>
 
Moin,

hast du dir denn $_REQUEST schon mal testhalber ausgeben lassen, ob es den erwarteten Inhalt hat?

Was mir auf den 1. Blick auffällt, ist , dass $pic 2x definiert wird.
 
Der Request war immer leer - hab schon einiges herumprobiert... Jetzt hab ich mir mal gedacht ich frag mal hier nach, ob es so überhaupt funktioniert wie ich mir das gedacht habe... Naja werd mir das nochmal genau ansehen...
 
Verwende doch $_POST und $_GET. Das ist ohnehin viel übersichtlicher für dich. Weil du dann direkt weißt, überwelchen Weg eine Variable ihren Weg in Script gefunden hat. Problematisch ist dann nämlich auch das:

Du hast ein Form, welches mittels POST-Methode Daten an den Server schickt, die in die Datenbank geschrieben werden sollen. Jemand benutzt aber statt dem Formular dann doch lieber die Adress-Leiste dafür. Das ist in diesem Falle dann möglich, weil $_REQUEST sowohl POST als auch GET einschließt.
 
Du hast dort 2x den selben Namen für ein Formularfeld vergebe, ich würde mal diesen Umstand verdächtigen:
Code:
<input name='bild' type='file'><input type='submit' name='bild' value='hochladen'>
 
Zurück