Datei-Upload / Pfadangabe MySQL

Citral

Grünschnabel
Hallo Leute!

Ich weiß, dies ist ein leidiges Thema hier, aber vielleicht kann mir ja doch jemand bei folgendem Problem helfen: Ich versuch grad ein CMS zu erstellen und will da für den News-Bereich einen Bild-Upload mit Eintrag in eine MySQL-Datenbank einfügen. Klappt soweit auch ganz gut, NUR schreibt er mir in meine DB den tmp-Pfad (also z.B. "C:WINDOWSTEMPphpE5.tmp"), was natürlich nicht Sinn der Sache ist.

Hier mal mein (leider-chaotisches-weil-wie-ein-wilder-ausprobier-All-in-One) Script. Hoffe, ihr könnt mit dieser Darstellung was anfangen. Wenn nicht, dann stell ich´s reduziert nochmal bereit.

Danke schon mal im voraus für eure Hilfe!

Gruß, Citral

PHP:
<html>
<head>
<title> News eingeben </title>
</head>
<body>
<?php
if ($image_type == "image/pjpeg"
    or $image_type == "image/gif") {
	} else {
	    echo("<p>Bitte nur Dateien vom Typ " .
		"GIF oder JPEG hochladen.</p>\n");
	}
if ( "image/pjpeg" == $image_type )
    $extension =".jpg";
else $extension =".gif";

$filename = "../img/" .time() . $REMOTE_HOST .
$extension;
$upload_path = "../img/"; 
if (is_uploaded_file($image) &&
	move_uploaded_file("$image", "../img/$filename")) {
	
	echo("Datei erfolgreich als $filename gespeichert. </p>");
	} else {
	echo("<p>Datei $filename konnte nicht gespeichert werden!</p>");
	}

?>
<?php
  if ($submit): //ein neuer Event wurde mittels Formular eingetragen

     $dbcnx = mysql_connect("localhost", "user", "pw");
     mysql_select_db("pm");

     $sql = "INSERT INTO news SET
            datum='$datum',
            header='$header',
            text='$text',
            image='$image'";
     if (mysql_query($sql)) {
        echo("<p>News-Beitrag wurde hinzugefügt</p>");
     } else {
       echo("<p>Fehler beim Hinzufügen der News: " .
             mysql_error() . "</p>");
     }
     $jid = mysql_insert_id();

?>

<p><a href="<?=$PHP_SELF?>">Einen weiteren Newsbeitrag eingeben</a></p>
<p><a href="events.php">Zur&uuml;ck zur Newsübersicht</a></p>

<?php
  else:
       $dbcnx = mysql_connect("localhost", "user", "pw");
       mysql_select_db("pm");


?>

<table border="0">
  <tr>
    <th width="100"></th>
    <th>Eingabe</th>
  </tr><form action="<?=$PHP_SELF?>" method="post" enctype="multipart/form-data">
  <p>Newsbeitrag hinzufügen:<br />
  </p>
  <tr> 
    <td width="100" valign="top"> <p>Header:</td>
    <td valign="top"><input type="text" name="header" size="40" wrap></textarea></p></select></p>
    </td>
  </tr>
  <tr> 
    <td width="100"> <p>Text:</td>
	<td valign="top"><textarea name="text" cols="40" rows="4" wrap="wrap"></textarea>
      </textarea></p></select></p>
    </td>
  </tr>
  <tr> 
    <td width="100" valign="top"> <p>Datum: </td>
    <td valign="top"><input type="text" name="datum" size="10" wrap></textarea></p></select></p>
    </td>
  </tr>
  <tr> 
    <td width="100" valign="top"> <p>Photo: </td>
    <td valign="top">
	<p>Datei zum Hochladen auswählen: <input type="file"
	name="image" /></p>
	<p><input type="submit" name="submit" value="Hochladen" />
	</p>
	
	</form>

</table>

<?php endif; ?>



</body>
</html>
 
Zuletzt bearbeitet:
Mann, sorry Leute... Hab mir grad den Post bezüglich Forumregel angesehen und festgestellt, daß ich bei meinem Thread so ziemlich jede Formvorschrift verletzt habe... Werd mir das jetzt mal in Ruhe ansehen, damit mein nächster Post nicht mehr so chaotisch daherkommt. :(
 
Will mir denn niemand helfen? Irgendein Input in die richtige Richtung würde mir schon weiterhelfen.

Fakt ist, daß sich nichts ändert, wenn ich folgenden Part einfach weglasse:

PHP:
if (is_uploaded_file($image) &&
    move_uploaded_file("$image", "../img/$filename")) {
    
    echo("Datei erfolgreich als $filename gespeichert. </p>");
    } else {
    echo("<p>Datei $filename konnte nicht gespeichert werden!</p>");
    }

Da kann doch was nicht stimmen! Ich lerne PHP mit Kevin Yank´s "PHP und MySQL". Der Upload-Teil ist quasi 1:1 übernommen. Leider wird in dem Buch der DB-Eintrag zu diesem Script beinhart ignoriert.

Also nochmal zusammengefasst:

Der Upload mit meinem Script einwandfrei, sprich: Das gewünschte File wird mit dem gewünschten Namen ins gewünschte Verzeichnis kopiert. Es geht mir lediglich um das Problem, daß in die DB ein *.tmp-Pfad geschrieben wird, und nicht der gewünschte Dateiname/Pfad.

Bitte nochmals um Support - vielleicht fasst sich ja jemand ein Herz.

Danke.

Gruß, Citral
 
Zuletzt bearbeitet:
also das dein script hier mit ner PHP version ab 4.2.0 extreme fehler verursachen kann lass ich jetzt mal außer acht..
siehe kapitel "register_globals off mit php 4.2.0 und höher" im php handbuch

nun guck mal genau ;-)

PHP:
 $sql = "INSERT INTO news SET
            datum='$datum',
            header='$header',
            text='$text',
            image='$image'";


sollte es nicht viel eher
PHP:
 $sql = "INSERT INTO news SET
            datum='$datum',
            header='$header',
            text='$text',
            image='$filename'";
heißen?
 
Hey chibisuke!

Vielen Dank - das war der richtige Hinweis! Mann, echt peinlich, aber naja... Sitz wohl schon zu lange davor und will zu viele Dinge gleichzeitg lernen. :-)

Gruß, Citral
 
Zurück