ich habe ja zuvor ^^ ein script geschrieben, mit dem artikel erstellt werden können. der inhalt des artikels wird als [timestamp]-[titel].txt im ordner events/ gespeichert.
nun möchte ich ein script schreiben, mit dem man bilder uploaden kann. der admin soll per scrolldownmenü auswählen können, zu welchem artiekl das bild gehört. (z.b. zur klassensprecherwahl). das script liest hierfür alle gespeicherten artikel aus und gibt sie als option aus.
wenn der admin nun die gewünschte zuordnung gewählt hat, soll das hochgeladene bild in einen unterordner verschoben werden, der als namen den timestamp des artikels trägt. (also: events/[timestamp]/bild.jpg).
hier ist zum besseren verständnis erstmal der fertige code.
der ordner wird angelgt, mit den nötigen rechten versehen, die datei in ihm gespeichert:
PHP-Code:
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p>
<div align="center">
<h2><font color="#FFFFFF">Bilder Upload</font></h2>
<p>
<?php if(empty($thefile)) { ?>
<form enctype="multipart/form-data" action="<?php echo $PHP_SELF;?>" method="post">
<p><font face="Geneva, Arial, Helvetica, san-serif">wähle das bild aus, das du hochladen möchtest</font></p>
<p><i><font face="Geneva, Arial, Helvetica, san-serif" size="-1">Datei (<b>.gif</b>
oder <b>.jpg/ max. 2MB</b>) auswählen:<br>
<br>
</font></i> <font face="Geneva, Arial, Helvetica, san-serif">
<input type="hidden" name="max_file_size" value="1000">
<input name="thefile" type="file" size="47">
<br>
<br>
<?php
$folder="events"; // Verzeichnis indem die dateien sind !
echo '<center><table width="90%" border="0" cellspacing="0" cellpadding="0"><tr><td>';
echo ("<select size=1 name=ordner>");
$dh=opendir($folder);
while (false !== $filename=readdir($dh)) {
if (substr($filename, -4)=='.txt') {
$timestamp=substr($filename, 0, 10);
$title=substr($filename, 11, -4);
while (isset($files[$timestamp])) {
$timestamp++;
}
$files[$timestamp]=array(
'filename' => $filename,
'timestamp' => $timestamp,
'title' => $title);
}
}
closedir($dh);
krsort($files);
foreach ($files as $k => $v) {
echo "<font face=tahoma size=1 color=#ffffff><option value=$files[$k]['timestamp']>";
echo $files[$k]['filename'];
echo "</option><br />n";
}
echo "<br><font size="1" color=#ffffff><a href="http://schuelgy.st-ursula.net/smv/admin.php?action=adminlogin" target="_top">[admin]</a></font>";
echo '</td></tr></table></center>';
?>
<input type="submit" value="Senden">
</font></p>
</form> <!--Bild-upload mit html-Funktion-->
<?php
} else {
if($thefile!="none"){ //File vorhanden??
if (file_exists("events/$ordner")) {
print "Dieser Name existiert bereits!";
} else {
mkdir("events/$ordner", 0777);
chmod("events/$ordner", 0777);
}
if(!file_exists("events/$ordner/$thefile_name")){ //Ueberschreiben soll verhindert werden
if($thefile_size<20000000){ //File nicht zu groß??
if(!copy ($thefile,"events/$ordner/$thefile_name")){ //Kopieren in Verzeichnis kann versucht werden
// Es passierte ein Fehler beim Kopieren
} else {
echo "<b><i>Das Bild wurde erfolgreich übertragen...</i> <a href="bilder/bilderauslesen.php">ansehen</a></b>";
}
} else {
echo "<b><i>Fehler beim Upload - Datei zu groß!</i></b>";
}
}else{
echo "<b><i>Fehler beim Upload - Dateiname existiert bereits!</i></b>";
}
}else{
echo "<b><i>Fehler beim Upload - Keine Datei ausgewählt!</i></b>";
}
echo "<br><br>";
}; // ende if empty(thefile)
?>
</p>
<p> </p>
</div>
</body>
</html>
das problem ist nun, dass der ordnername nicht der gewünschte timestamp ist, sondern immer:
Array['timestamp']
ich bin mir sicher, dass es an dieser zeile liegt:
PHP-Code:
echo "<font face=tahoma size=1 color=#ffffff><option value=$files[$k]['timestamp']>";
denn hier wird nicht der nötige timestamp zugewiesen. wie muss es richtig lauten?!
danke für eure hilfe