PHP - Tabellenprob...



  • ok. thx. werde es mal ausprobieren



  • Nochmal zu meinen 2 Methoden - die erste (mit include) ist einfacher beim Einlesen und etwas umständlicher beim Schreiben, bei der zweiten ist beides wenig umständlich!
    Bei Methode 1 kannst du allerdings besser von Hand mal was in der Datei ändern (ist ja normales PHP)!



  • Also. Ich komme leider nicht ganz klar... ich poste hier mal den ganzen code meiner EXCHANGE.PHP:

    <html>
    <head>
    <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
    <meta http-equiv="Page-Enter" content="blendTrans(Duration=1)">
    </head><noscript><body></body></noscript>
    <body background=images/bg.jpg topMargin=10>
    <?php
    $filepath = $DOCUMENT_ROOT."/downloads/";
    $MAX_FILE_SIZE = 2097152;
    
    if(filesize($upfile)>$MAX_FILE_SIZE)
    {
    echo "Dateilimite überschritten! Transaktion abgebrochen!<BR><BR>";
    echo "Sie können durch Packen einer Datei, wenn diese das Limit von 2MB überschreitet, die grösse Verringern und halt per ZIP Archiv hochladen!<BR><HR>";
    echo "<a href=\"exchange.php\">Zurück...</A>";
    exit;
    }
    else
    {
    
    if ($upfile_name != "") {
    $des_file= strtolower($filepath.$_FILES['upfile']['name']);
      if (!file_exists($des_file)) {
        if(ereg("(\.jpg)|(\.jpeg)|(\.gif)|(\.png)|(\.3ds)|(\.obj)|(\.txt)|(\.doc)|(\.asc)|(\.mdw)|(\.mdb)|(\.wav)|(\.mid)|(.\midi)|(\.wma)|(\.exe)|(\.ace)|(\.tar)|(\.rar)|(\.ar)|(\.zip)|(\ .cpp)|(\.c)|(\.vbs)|(\.js)|(\.tga)|(\.dat)|(\.dot)|(\.rtf)$", $des_file)) {
    
        if (move_uploaded_file($upfile, $des_file)) {
        echo "<font color=green>Datei gespeichert</font>";
      } else {
        echo "<font color=red><B>Upload fehlgeschlagen!</font></B><BR>";
        echo "Dies kann folgende Gründe haben:";
        echo "<hr>";
        echo "1. Dateifehler<br>";
        echo "2. Dateilimite zu gross<br>";
        echo "3. Skriptfehler<br>";
        echo "4. Unerlaubte Zeichen im Dateinamen<br>";
        echo "<hr>";
        echo "<a href=\"exchange.php\">Zurück...</a>";
        exit;
      }
     } else {
       echo "<b><font color=\"red\">Diese Art von Datei ist nicht erlaubt!! Transaktion abgebrochen!</font></b><hr>";
    echo "<br><b>[Erlaubte Dateitypen]</b><hr>";
    echo ".jpg, ";
    echo ".jpeg, ";
    echo ".gif, ";
    echo ".png, ";
    echo ".3ds, ";
    echo ".obj, ";
    echo ".txt, ";
    echo ".doc, ";
    echo ".asc, ";
    echo ".mdw, ";
    echo ".mdb, ";
    echo ".wav, ";
    echo ".mid, ";
    echo ".midi, ";
    echo ".wma, ";
    echo ".ar, ";
    echo ".rar, ";
    echo ".tar, ";
    echo ".zip, ";
    echo ".exe, ";
    echo ".ace, ";
    echo ".c, ";
    echo ".cpp, ";
    echo ".js, ";
    echo ".vbs, ";
    echo ".tga, ";
    echo ".rtf, ";
    echo ".dot, ";
    echo ".dat ";
    echo "<hr>";
    echo "Der Webmaster übernimmt auf allfällige Fehler, Systemabstürze, Viren oder sonstige Schäden,<br>die durch Programme der DataExchange enstehen könnten, <b>keine Haftung!</B>";
    echo "<hr>";
    echo"<a href=\"exchange.php\">Zurück...</a>";
        exit;
     }
    }
    }
    }
    
    echo "<hr>";
    
    unset($files);
    if ($dh = opendir($filepath))
    {
      while($file = readdir($dh))
      {
        if (!ereg("^\.+$",$file))
        {
         $files[] = $file;
        }
      }
      closedir($dh);
    }
    
    $webpath = "downloads/";
    
    if (is_array($files)) {
     echo "<table border=\"0\" cellpadding=\"2\" cellspacing=\"0\" width=\"100%\">\r\n";
     echo "<tr bgcolor=\"#7FFFD4\">";
     echo "<th>Datei</th>";
     echo "<th>Beschreibung</th>";
     echo "<th>Grösse</th>";
     echo "<th>Datum</th>";
     echo "<th colspan=\"2\">Aktionen</th></tr>\r\n";
    
     sort($files);
     natcasesort($files);
     reset($files);
    
     foreach($files as $idx=>$file) {
       if ($idx % 2) {
          echo "<tr bgcolor=\"#EEEEFF\">";
       } else {
          echo "<tr bgcolor=\"#FFFFFF\">";
       }
       printf ("<td><a href=\"%s%s\" target=\"_blank\">%s</a></td>",
       $webpath, $file, $file);
       printf ("<td align=\"center\">$beschreibung</td>");
       printf ("<td align=\"right\">%s Bytes</td>",
       number_format(filesize($filepath.$file), 0, ",", "."));
       printf ("<td align=\"center\">%s</td>",
       date("d.m.Y H:i:s", filemtime($filepath.$file)));
       printf ("<td><a href=\"%s?file=%s\">Löschen</a></td>",
       "delete.php", $file);
       printf ("<td><a href=\"%s?file=%s\">Umbenennen</a></td>",
       "rename.php", $file);
       }
       echo "</table>";
     }
    echo "<hr>";
    $datum = date("d.m.Y");
    $uhrzeit = date("H:i:s");
    $ip = getenv("REMOTE_ADDR");
    echo ("<font color=\"blue\">Ihre IP-Adresse ist: $ip</font>");
    echo ("<br>Heute ist der $datum");
    echo (", $uhrzeit Uhr<BR>");
    
    ?>
    <TABLE width=100%>
    <TR>
    <TD><a href="exchange.html" target="_new">Anleitung / Dateiliste</A>
    <TD><a href="agb.html" target="_new">Allgemeine Bestimmungen</A>
    </TD></TR>
    </TABLE>
    <br>
    <?php
    function dirsize($dir) {
     $dh = opendir($dir);
     $size = 0;
     while (($file = readdir($dh)) !== false) {
      if ($file != "." and $file != "..") {
       $path = $dir."/".$file;
       if (is_dir($path))
        $size += dirsize($path);
       elseif (is_file($path))
        $size += filesize($path);
      }
     }
     closedir($dh);
     return $size;
    }
    
    function format_size($rawSize)
    {
     return round($rawSize/1048576, 2);
    }
    $mb_free = 40 - format_size(dirsize('./downloads'));
    if($mb_free > 0) // wenn mehr als 10 MB frei sind
    {
    echo "<form action=\"exchange.php\" method=\"POST\" enctype=\"multipart/form-data\">";
    echo "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"2097152\">";
    echo "<input type=\"file\" name=\"upfile\"><br>";
    echo "<textarea name=\"beschreibung\"></textarea><BR>";
    echo "<input type=\"submit\" name=\"Hochladen\">";
    echo "</form>";
    echo "<br>";
    echo "Es stehen noch ".$mb_free." MB zur Verfügung.";
    }
    else // es sind weniger als 10 MB frei
    {
    echo "Es steht kein Platz mehr zur Verfügung oder die DataExchange ist überlastet!<BR>Versuchen Sie es später noch einmal...";
    exit;
    }
    ?>
    <br><br><center><a href="jukebox.php" target="_new">Hier klicken, für eine Begleitmusik!</a><br>Achtung! Fenster nicht schliessen, sonst wird die Musik beendet!
    </center>
    </body>
    </html>
    

    Das ist das Formular:

    echo "<form action=\"exchange.php\" method=\"POST\" enctype=\"multipart/form-data\">";
    echo "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"2097152\">";
    echo "<input type=\"file\" name=\"upfile\"><br>";
    echo "<textarea name=\"beschreibung\"></textarea><BR>";
    echo "<input type=\"submit\" name=\"Hochladen\">";
    echo "</form>";
    

    UND NUN DAS PRINTF:

    printf ("<td><a href=\"%s%s\" target=\"_blank\">%s</a></td>",
       $webpath, $file, $file);
       printf ("<td align=\"center\">$beschreibung</td>");
       printf ("<td align=\"right\">%s Bytes</td>",
       number_format(filesize($filepath.$file), 0, ",", "."));
       printf ("<td align=\"center\">%s</td>",
       date("d.m.Y H:i:s", filemtime($filepath.$file)));
       printf ("<td><a href=\"%s?file=%s\">Löschen</a></td>",
       "delete.php", $file);
       printf ("<td><a href=\"%s?file=%s\">Umbenennen</a></td>",
       "rename.php", $file);
    

    könntest du mir eventuell deine Funktion, so wie du es denkst, einbauen und im Code posten? Das heisst, deine Eingebaute Codes FETT schreiben,

    Ich hab das von dir Probiert, doch es klappt irgendwie net.. du würdest mir ziemlich helfen!! Wenn das mit dieser Beschreibung geschafft ist, dann ist die Exchange wirklich komplett und ich muss dann nie mehr was in PHP wissen.. 😉



  • Wo genauer leigt dein Problem?
    Schreiben der include-Datei? (willst du jetzt eigentlich methode 1 oder methode 2)
    anzeige der passenden Beschreibung aufgrund der datei
    beides



  • mir ist eigentlich egal, was für eine Methode...
    ich komme irgendwie nicht nach..

    $desc['filename.exe'] = "Hehe"; Was SOLL die filename.exe??? Wo soll ich $ufpile_name hintun? zu filename.exe oder hehe?

    $desc['file.dat'] = "Auch was"; und da... soll ich $beschreibung nun anstatt file.dat oder auch was verwenden...

    Denn ich habe das gefühl, dass der mir dann bei der Beschreibung so was anzeigen wird:

    noname.jpg.Test

    anstatt nur Test....

    Das ist mein problem.
    Ich check das net... Bin ich zu dumm oder zu blöd?? PS: habe leider ja erst mit PHP angefangen... hab zwar ein Buch, doch dort steht nichts...



  • für jede Datei fügst du dem Array (assoziativ) ein neues Wertepaar hinzu.
    Dabei verwendest du den Dateinamen als Schlüssel.

    Willst du jetzt beispielsweise den Beschreibungstext für die Datei bild.jpg, so steht der in $desc['bild.jpg']. Angenommen du gehst in einer Schleife die ganzen Dateien durch, wobei in $filename immer der jeweilige Dateiname steht, so schreibst du an der Stelle, an der du die Beschreibung haben willst desc[filename]; - so einfach ist das!



  • Nach Methode1 steht in der Datei die du einbindest also z.B. folgendes:

    <?
     $desc['autoparking.jpg'] = "Ein sehr schönes Bild";
     $desc['netwatch.zip']    = "Hier alles gezippt";
     .
     .
     $desc['proton31de.zip'] = "Und nochmal ein Archiv";
    ?>
    

    Verstehst du jetz, wie ich es meine?



  • also. ich schreibe hier mal hin, was ich schreiben würde:

    $desc['$upfile'] = $file;
    $desc['file.dat'] = $beschreibung;
    
    //danach die Printf:
    
    printf("<td>"$desc[$file]"</td>");
    

    Ist das etwa das, wie du es meinst? Oder meinst du was in der art:

    if(is_array(desc[file])
    {
    printf("desc[file.dat].beschreibung");
    }
    else
    {
    }

    mfg
    Programmer



  • Jo, ich verstehe was du meinst, aber du ev. nicht, was ich meine:

    Ich habe ein Formular.
    Wie kann ich, die gerade durchsuchte Datei $upfile mit der AKTUELLEN beschreibung $beschreibung übergeben und speichern?

    denn wenn ich test.exe mit der Beschreibung Ein kleiner Test hochlade,
    sollte unter der Beschreibung einfach nur "Ein kleiner Test stehen".

    Und wenn die Datei hochgeladen ist, suche ich jetzt zB. AUTO.jpg aus, und das ist auch $upfile und mache die Beschreibung auto.

    Danach sollte es etwa so in der Tabelle stehen:

    Datei Beschreibung
    auto.jpg Auto
    test.exe Ein kleiner Test

    Die Datei wird mir ja schon aufgelsitet....
    nur die Beschreibung ist das prob...



  • [ Dieser Beitrag wurde am 03.01.2003 um 22:48 Uhr von flenders editiert. ]



  • du schreibst einfach direct nach dem Upload desc[upload] = $beschreibung;
    dann musst du das ganze in die Datei speichern, damit die Beschreibung erhalten bleibt

    in deiner Schleife durch die Dateien schreibst du einfach desc[file];



  • Ein leeres Posting? Hmm.

    Ne: Mal eine andere Frage: Bist du Profi in PHP??? Denn du kennst ziemlich vieles.... Kompliment!



  • ach so.

    $file = "file.dat";
    $desc[$upfile] = $beschreibung;
    foreach
    {
    $desc[$file]; //Wo kommt des schon wieder hin? in das Printf?
    }
    

    Ich komm der Sache schon näher und fange sie auch an zu verstehen... nur weiss ich irgendwie nicht recht, wo ich überhaupt des in das Skript einbauen soll?!



  • Kommt ganz darauf an, was man unter Profi versteht 😉
    Aber ich hab eigentlich auch nur ein einziges Buch durchgelesen und halt programmiert (für Werbeagenturen) - so als billige, flexible Arbeitskraft

    Zu dem leeren Posting: als ich es geschrieben habe, war nur dein erstes, der 2 vorhergehendes Postings da und ich dachte schon, du hättest meine 2 letzten Postings gar nicht gelesen!

    [ Dieser Beitrag wurde am 03.01.2003 um 22:56 Uhr von flenders editiert. ]



  • Das desc[file] enthält die Beschreibung zur jeweils aktuellen Datei der foreac-Schleife, es kommt also in deinen printf-Ausdruck an die Stelle von $beschreibung



  • okay.

    printf("foreach { desc[file] }");

    oder
    printf("desc[file]");

    aber woher nehm ich $file??



  • [cpp]foreach($files as idx=>idx=>file) {
    if (idx % 2) { echo ""; } else { echo ""; } printf ("%s", webpath, $file, file); printf ("**%s**",**desc[file]**); printf ("%s Bytes", number_format(filesize(filepath.file), 0, ",", ".")); printf ("%s", date("d.m.Y H:i:s", filemtime(filepath.$file)));
    printf ("<td><a href=\"%s?file=%s\">Löschen</a></td>",
    "delete.php", $file);
    printf ("<td><a href=\"%s?file=%s\">Umbenennen</a></td>",
    "rename.php", $file);
    echo "</tr>";
    }
    echo "</table>";[/cpp]

    [ Dieser Beitrag wurde am 03.01.2003 um 23:10 Uhr von flenders editiert. ]



  • Okay...

    Oben muss ich dann einfach noch

    desc[upfile] = beschreibung;beschreibung; file = desc[upfile];

    schreiben?

    [ Dieser Beitrag wurde am 03.01.2003 um 23:15 Uhr von Programmer85 editiert. ]



  • foreach($files as idx=>idx=>**file**)
    was ist file.dat? Falls du das meinst was ich früher mal gepostet habe war das ein fiktiver Name einer Datei, die jemand hochgeladen hat, so wie z.B. bild1.jpg



  • Doppelposting

    [ Dieser Beitrag wurde am 03.01.2003 um 23:19 Uhr von flenders editiert. ]


Anmelden zum Antworten