Bildwechsel mit Zeitangabe

MJRENNER

Mitglied
Morgen Leute bzw Mahlzeit! ;)

habe ein kleines anliegen.
ich will ein script brauen wo leute bilder hochladen können .. soweit ist es noch einfach zu lösen ..
nächsterschritt: ich will ein Bild dann für ca 36 Stunden online lassen und danach soll es aufs nächste wechseln... denke bis dahin bekomm ich es auch noch hin ..

mein eigentliches problem liegt darin das ich will das er die Bilder nicht wilkürlich aus der DB oder dem Ordner rausfischen soll sondern nacheinander ... Wenn praktisch 5 Bilder im Ordner sind soll er bei dem anfangen das zuerst hochgeladen wurde und dann das nächste .. wenn er keine mehr hat fängt er wieder unten an .. so das ich praktisch jedes bild von unten nach oben abarbeite aber keines doppelt auftraucht ..

ist das machbar? -- falsch.. dumme frage ... nochmal .. WIE ist das machbat? :)

Habe schon in foren und bei den Jungs von Googel gefragt aber bisher war es immer so das er die bilder zufällig genommen hat oder immer das oberste .. und ich will ja nacheinander und unten nach oben ..

meint ihr hier kann mir jemand helfen? :)




MFG MJRENNER
 
Mein problem ist das ich nicht weiß ich ich das realisiere das er mir die bilder richtig aus der DB fischt .. -- Gugg ma hier --

Dort können Leute Bilder hochladen (db oder ordner weiß ich jetzt nicht) und dann wird nach ca 36 Stunden kommt ein anderes Bild .. mit nem anderen kommentar ..

momentan wird das noch manuel gemacht aber ich will das automatisieren .. also mein problem ist: Wie stelle ich es an das die bilder nacheinander nach datum aus der DB gefischt werden ..
 
Hab mir schon überlegt die bildbeschreibung und den pfad und eben den timestamp wie du sagst zu speichern.
die frage ist wie ich das alles verschachtel .. das er es mir hochläd, alles abspeichert und mir dann das richtige bild ausgibt ..

im moment hab ich noch abartig matsch ihm hirn und kann mir das noch nicht richtig vorstellen *gg
 
Servus,
habe es nun geschafft mit dem Upload und das es mir immer das Letze anzeigt. Wie mach ich das nun aber das er mir nach 36 Stunden das nächste Bild zeigt

uebersicht.php

PHP:
<?
require_once('verbindung.php'); 
if(isset($_GET['id'])) {
$sql = "delete from xxxxx where id=".$_GET['id'];
  $rs = mysql_query($sql);
  if (file_exists("files/".$_GET['d'])) {
                  unlink("files/".$_GET['d']); 
                } 
  }


$query = "SELECT * FROM xxxxx ORDER by datum ASC LIMIT 0, 1"; 
$result = mysql_query($query); ?>
<html>
<head>
<title>Übersicht</title>
<body>
<a href="uploadeinfach.php">Einen neuen Datensatz einfügen</a><hr/>
<?php 
     while($row=mysql_fetch_array($result)) {

          echo '<center><img src="/files/'.$row['dateiname'].'"><br><i>'.$row['kommentar'].'</i></center><br><br>';
           }
           
   
mysql_free_result($result);
mysql_close($verbindung);
?>
</body>
</head>


upload.php
PHP:
<?php 
error_reporting(E_ALL);
require_once('verbindung.php'); 
    
// Maximale Dateigröße in MB 
$maxfilesize = 1; 

// Datei-Feldname im Formular 
$fieldname = 'bild'; 

// Wo soll die Datei hingeladen werden (Ordner)? 
$uploaddir = 'files'; 

// erlaubte Endungen
 
$allowedfiletype = array('png','GIF','gif','jpg','jpeg','JPG','JPEG','txt');  

/*####################################################################*/

$dateiname     = '';
$endung        = '';
$orgname       = '';
$allesok     = ''; 
$fehler     = ''; 
$komm        = '';
$bildrs     = "noch keines geladen";
$table        = 'bfgames';

// Variablen absichern
function quote_smart($value)
{
   // Ueberfluessige Maskierungen entfernen
   if (get_magic_quotes_gpc()) {
       $value = stripslashes($value);
   }
   // In Anfuehrungszeichen setzen, sofern keine Zahl
   // oder ein numerischer String vorliegt
   if (!is_numeric($value)) {
       $value = "'" . mysql_real_escape_string($value) . "'";
   }
   return $value;
}

// Wenn id übergeben wird, dann laden des Datensatzes

$id = isset($_REQUEST['id']) ? $_REQUEST['id'] : '';
if(!empty($id)) {
 $asql=mysql_query("SELECT kommentar,dateiname FROM $table WHERE id=$id") or die(mysql_error()); 
 $komm  = mysql_result($asql,0,'kommentar');
 $bildrs = $uploaddir."/".mysql_result($asql,0,'dateiname');
}

$ausgabe = "Maximale Größe: $maxfilesize MB<br />Erlaubte Endungen: <b>";
if(count($allowedfiletype) > 1){ 
  $last = array_pop($allowedfiletype); 
$ausgabe .= implode(', ', $allowedfiletype); 
$ausgabe .= ' und '.$last; 
}elseif(count($allowedfiletype) == 1) $ausgabe .= $allowedfiletype[0]; 
$ausgabe .= "</b>";


// Einfache Funktion zum Eintrag in die Tabelle "bfgames" 

function uploaddb($kommentar,$dateiname,$table,$id,$file){ 
   
    if(!empty($id)) {
    
     if (file_exists($file)) {
                  unlink($file); 
                } 
                
    $sql = sprintf("update $table set kommentar=%s, dateiname='$dateiname', datum=now()
            where id=$id",$kommentar) or die ("SQL-Fehler = ".mysql_error());
            
            } else {    
            
     $sql = sprintf("insert into $table (kommentar,dateiname,datum)  
            Values (%s,'$dateiname',now())",$kommentar) or die ("SQL-Fehler = ".mysql_error());
                }          
           
    $rs = mysql_query($sql); 
      if($rs){ 
        return "<br/>Daten sind gespeichert<br/>"; 
        
        } else { 
       return "<br/>Speicherung nicht möglich<br/>"; 
        }         
} 


// Fehlerüberprüfung 
// Splitten des Dateinamens Überprüfung der Endung

// Abfrage, ob Formular abgeschickt und splitten des Dateinamens

if(isset($_POST['send'])){ 
$allesok = 1; 
 $darray = explode('.', str_replace('/', '.', $_FILES[$fieldname]['name']));
 if (count($darray) == 2) {
 
   $orgname = trim($darray[0])."_".time();
   $endung  = trim(strtolower($darray[1]));
 }
 

// Feldüberprüfung 
 
 
 if($_FILES[$fieldname]['error'] == 1){$allesok=0;  
      $fehler='Datei überschreitet die Uploadgröße in der php.ini ('.ini_get('upload_max_filesize').')!'; 
    } 
     elseif($_FILES[$fieldname]['error'] == 3) {$allesok=0; 
       $fehler = 'Datei nur teilweise hochgeladen!'; 
               } 
    elseif($_FILES[$fieldname]['error'] != 0) {$allesok=0; 
         $fehler ='Keine Datei ausgewählt!'; 
                  } 
    elseif(!in_array($endung, $allowedfiletype)) {$allesok=0;           
      $fehler = 'Endung nicht erlaubt!'; 
              } 
    elseif(filesize($_FILES[$fieldname]['tmp_name'])/1024/1024 >= $maxfilesize) {$allesok=0; 
      $fehler = 'Datei zu groß!'; 
          } 
} 
?> 
<html><head><title>Upload</title>
</head><body> 
<?php 
   
// wenn alles ok dann Upload des Bildes 
  
if($allesok){

// Dateiname prüfen und Zeichen ersetzen
 
$neuname = '';
 for ($i=0; $i<strlen($orgname); $i++) {
 
   $zz = substr($orgname, $i, 1);
   if (!preg_match("/^[A-Za-z0-9-_]+$/i", $zz)) $zz = '_';
 

   $neuname.= $zz;
}

// Monage des Dateinamens
 
$dateiname = $neuname.'.'.$endung;

// Upload
 
    move_uploaded_file($_FILES[$fieldname]['tmp_name'], $uploaddir.'/'.$dateiname); 
    $dirname = dirname($_SERVER['PHP_SELF']); 
    $fileurl = 'http://'.$_SERVER['SERVER_NAME'].(substr($dirname, 0, 1) == '\\' ? substr($dirname, 1):$dirname).'/'.$uploaddir.'/'; 
    $href = $fileurl.urlencode($dateiname); 
    $anzeigen = $fileurl.$dateiname; 
     
// Formularwerte in der Datenbank speichern und Meldung ausgeben.  

echo uploaddb(quote_smart($_POST['kommentar']),$dateiname,"bfgames",$id,$bildrs); 
echo "<b>Datei wurde erfolgreich hochgeladen</b><br /> 
        <a href=\"".$href."\">$anzeigen</a><br>"; 
}else{ 

// Ausgabe des Formulars

?> 
<div style="color:red;"><?php echo $fehler; ?></div> 

<?php print $ausgabe;?>
  <br />
  <h1>Formular</h1>

<form action="<?php echo $_SERVER['PHP_SELF']?>" enctype="multipart/form-data" method="post"> 
<input name="<?php echo $fieldname?>" type="file" size="40" />  
<input type="hidden" name="send" value="send" /><br/>
 
Kommentar<br /> 
<textarea name="kommentar" cols="50" rows="10" id="kommentar"><? echo $komm;?></textarea> 
<input type="hidden" name="id" value="<?php echo $id;?>" /> 
<br /> Bild: <? echo $bildrs;?><br>
<input type="submit" name="submit" value="Hochladen" /> 
</form> 
<?php 
} 
?> 
 <br/><a href="uebersicht.php">Anzeige der &Uuml;bersicht </a><br />
</body></html>

verbindung.php
PHP:
<?php echo 'Ich denke diese Datei wird zur erklärung nicht benötigt! ;)'; ?>
 
Naja, du könntest bspw. noch ein Feld erzeugen, in dem du einträgst, ob ein Bild schon an der Reihe war, und wenn ja, ab wann.

Dann könntest du selektieren danach, ob der Wert dieses Feldes entweder nicht älter ist als 36h oder ob er leer(NULL) ist.

Ist der Wert des Ergebnisfeldes NULL, trägst du die aktuelle Zeit ein.
 
Also die Tabelle:
  1. datum1
    Hochladedatum
  2. datum2
    Datum der 1. Anzeige(Standard NULL)


Pseudocode:
Phase 1: aktuelles Bild Suchen
Code:
  SELECT * FROM tabelle 
    WHERE 
      datum2>(jetzt-36 Stunden) 
    OR 
      ISNULL(datum2) 
        ORDER BY datum1 DESC
        LIMIT 1

Das liefert dir das nächste zu Zeigende Bild.
Sollte die Spalte datum2 dort NULL sein, musst du den Datensatz noch UPDATEN
Code:
UPDATE tabelle 
    SET 
      datum2=NOW() 
    WHERE id=idDesZuvorAusgelesenenDatensatzes
 
Zurück