"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Frage zu PHP-Script für Bilderupload - Hilfe erbeten

nitschi 23.01.2003 - 19:00 981 13 Thread rating
Posts

nitschi

miau!
Avatar
Registered: Oct 2002
Location: Wien
Posts: 1737
Aloha! zu allererst: bin ein totaler PHP-Neuling, und habe momentan leider keine Zeit mich da einzuarbeiten. Deshalb möchte ich hier um Hilfe bitten.

Habe hier ein PHP-Script (Fremd-Script) in Verwendung, über das Besucher einer Homepage Bilder (in ein vorher bestimmtes Verzeichnis) uploaden können. Das hochgeladene Bild wird dann gleich auf der Seite angezeigt.

Funktioniert alles ohne Probleme. Allerdings stört es mich ein wenig, dass ein neues Bild auf der letzten Seite angezeigt werden. Mir wäre es lieber, wenn das neue Bild gleich auf der ersten Seite zu sehen ist.

Hier ist der (soweit ich das erkennen konnte) relevante Teil des PHP-Codes:

Code: PHP
<?
include ("config.inc.php");

        $tag=opendir("./" . $show);

        while (false != ($datei = readdir($tag))) {
                if($datei != "." && $datei != "..") {

                        foreach ($dateiendungen as $endung) {
                        $endung_datei = last(strlen($endung),$datei);
                        if (strtolower($endung) == strtolower($endung_datei)) {
                                $temp = $temp . "|" . $datei;
                        }
                        }
                }
        }

$te = explode("|",$temp);
$temp = array();

foreach ($te as $tem) {
if ($tem) {
        array_push($temp,$tem);
}
}


if (!$seite) $seite = 1;

$view = $show . " Seite " . $seite;

include ("header.inc.php");


$anfang = 0;

$seiten_links = "Seite ";

$seitex = $seite - 1;
        if ($seitex > $anfang) {
                $seiten_links = $seiten_links . " <a href='$haupt_url?show=$show&seite=$seitex'>&#171</a> ";
        }

        $ende = count($temp) / $pics_seite;

        while ($anfang < $ende) {
        $wert = $anfang+1;
        if ($wert == $seite) {
                $seiten_links = $seiten_links . "$wert ";
                }
                else
                {
                        $seiten_links = $seiten_links . "<a href='$haupt_url?show=$show&seite=$wert'>" . $wert . "</a> ";
                }
        $anfang++;
        }

        $seitey = $seite+1;
        if ($seite < $ende) {
                $seiten_links = $seiten_links . " <a href='$haupt_url?show=$show&seite=$seitey'>&#187</a>";
        }

        if ($picture_upload == "true") echo picture_upload_form($show) . "<br>";

        echo "$seiten_links<br>";

        $anfang = $pics_seite * $seite - $pics_seite;
        $ende = $pics_seite * $seite;

        echo "<table align='center' border='$border'>";
        $counter=0;
        while ($anfang < $ende) {
                $line = $temp[$anfang];

                if ($line) {

                    $bild = $show . "/" . $line;
                    $info = getimagesize($bild);
                    $groesse = round (filesize($bild) / 1000,2);

                        if ($counter == 0) echo "<tr>";
                        echo "<td align='center'><img src='$show/" . $line . "'><br>";
                        if ($mit_infos == "true") {
                                echo "<font size='1'>#" . ($anfang+1) . ", ". $line . "<br>" . $info[0] . "x" . $info[1] . "<br>" . $groesse . " kb</font>";
                        }
                        echo "</td>";

                    $counter++;
                    if ($counter == $pics_reihe) {
                        $counter = 0;
                        echo "</tr>";
                    }
                }
                $anfang++;
        }
        if ($counter != 0) {
        while ($counter < $pics_reihe) {
        echo "<td align='center'>-</td>";
        $counter++;
        }
        }

        echo "</tr></table>";
echo "$seiten_links<br>";

footer ("footer.inc.php");
exit;

?>

Weiß zufällig jemand, wie man dieses "Problem" lösen könnte?
Würd mich freuen :)

h4de5

-
Avatar
Registered: Sep 2001
Location: bgld
Posts: 1112
mach bei:
Code: PHP
...
echo "<table align='center' border='$border'>";
$counter=0;

*) also hier!

while ($anfang < $ende) {
...

*) ein
$temp = rsort($temp);

habs mir nur ganz schnell durchgschaut und leider uach ned probiert. mit viel glück gehts aber trotzdem :D

/edit zur besseren verständlichung
Bearbeitet von h4de5 am 23.01.2003, 19:15

nitschi

miau!
Avatar
Registered: Oct 2002
Location: Wien
Posts: 1737
Danke erstmal für die Antwort! Hat (bis jetzt) aber nicht wirklich funktioniert.
Zwar wird jetzt die letzte Seite geladen, allerdings zeigt er die Bilder nicht an. Aber der Ansatz ist sicher richtig, vielleicht komm ich ja irgendwann selber drauf :) Eventuell $anfang und $ende austauschen?

Argl. ich sollte bald PHP lernen...

Phobos

&#10013;
Avatar
Registered: Jan 2003
Location: 1050
Posts: 2111
is das script total selbst geschireben oder tw kopiert?

bzw proggst du noch andere sprachen?

nitschi

miau!
Avatar
Registered: Oct 2002
Location: Wien
Posts: 1737
Hehe. wie gesagt: bin totaler PHP-Neuling. Auf gut deutsch: ich kann einen Dreck!

Das Script ist natürlich nicht selber geschrieben, sonst hätt ich diese Ausgabe-Funktion schon im Vorhinein "umgekehrt" geschrieben.

Die einzige Sprache die ich sonst noch programmiere ist HTML ;)
Werd mich aber, sobald ich mal mehr Zeit habe, mich in PHP einarbeiten.

Phobos

&#10013;
Avatar
Registered: Jan 2003
Location: 1050
Posts: 2111
ok ich war nur irgendwie verwirrt weil du gsagt hast "ich bin php neuling" und der source von dem script hat mich echt beeindruckt, und ich proggs schon _RECHT_ gut :)

aber sry, keine lösung :(

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
@phobos: es steht net zufällig im ersten post "fremd-script" :rolleyes:

@thema: ich hab das script jetzt mal überflogen, so wie ich es einschätze wird... wah ich habs mir jetzt doch genauer angschaut :D - die ersten ~25 zeilen sind der reinste schmarrn und blödsinn pur :rolleyes:

ersetz das (das is am anfang):
Code: PHP
        $tag=opendir("./" . $show);

        while (false != ($datei = readdir($tag))) {
                if($datei != "." && $datei != "..") {

                        foreach ($dateiendungen as $endung) {
                        $endung_datei = last(strlen($endung),$datei);
                        if (strtolower($endung) == strtolower($endung_datei)) {
                                $temp = $temp . "|" . $datei;
                        }
                        }
                }
        }

$te = explode("|",$temp);
$temp = array();

foreach ($te as $tem) {
if ($tem) {
        array_push($temp,$tem);
}
}
durch das:
Code: PHP
$tag=opendir('./' . $show);

$temp = array();
while ($datei = readdir($tag))
{
	if($datei != '.' && $datei != '..')
	{
		foreach ($dateiendungen as $endung)
		{
			$endung_datei = last(strlen($endung),$datei);
			if (strtolower($endung) == strtolower($endung_datei))
			{
				$temp[filemtime($datei)]=$datei;
			}
		}
	}
}

ksort($temp);
//krsort($temp);

$temparray = array();
foreach ($temp as $tempvalue)
{
	array_push($temparray,$tempvalue);
}
$temp = $temparray;
dazu muss ich sagen, dass das bei weitem keine optimale lösung ist! vor allem performancemässig is die eher suboptimal! leider musste ich aus rücksicht auf einen möglichen folgenden code, diese variante nehmen...

but i hth :)

ps: ich weiss nicht ob die sortierrichtung passt, wenn nicht -> die betreffende zeile ist die wo ksort($temp); steht - wenn du die darunter liegende nimmst, die sortiert genau andersrum ;)

nitschi

miau!
Avatar
Registered: Oct 2002
Location: Wien
Posts: 1737
Danke erstmal für die Mühe. Hat aber irgendwie nicht wirklich hingehaut.
Er zeigt jetzt gar keine Bilder und keinen Seiten-Index an.

Falls sich noch jemand damit spielen will, hier ist der gesamte Code als Text: pictureview_php.txt

nitschi

miau!
Avatar
Registered: Oct 2002
Location: Wien
Posts: 1737
Gibt es vielleicht eine Möglichkeit, über die Browser Adress-Zeile die letzte Seite aufzurufen?
Wenn ich zum Bleistift die zweite Seite aufrufen will, dann lautet die URL
http://www.nitschi.at/pictureviewer...der&seite=2

Kann man eventuell mit einer Variable oder einem bestimmten Befehl die letzte Seite aufrufen? Sowas wie
http://www.nitschi.at/pictureviewer...amp;letzteseite (Link funktioniert natürlich nicht)

Hab da wie gesagt leider keine Ahnung :)

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
ja, geht - nur das script muss umgeproggt werden... sag mal welche version von php hat dein server?

nitschi

miau!
Avatar
Registered: Oct 2002
Location: Wien
Posts: 1737
Ist das Umschreiben des Scripts sehr aufwendig?

Und zu deiner Frage: PHP 4

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
ja, wäre imho besser es gleich neu zu schreiben

nitschi

miau!
Avatar
Registered: Oct 2002
Location: Wien
Posts: 1737
OK, ich geb dir 3 Tage Zeit!

.... ;) Nein, Spaß beiseite. Dann lass ichs vorrübergehend wohl so, denn so ein Script zu schreiben übersteigt meine zeitlichen und geistigen Ressourcen momentan.

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
Zitat von nitschi
Aloha! zu allererst: bin ein totaler PHP-Neuling, und habe momentan leider keine Zeit mich da einzuarbeiten. Deshalb möchte ich hier um Hilfe bitten.
Wenn du keine Zeit hast, heuer einen Programmierer an. Für "ich poste Source! Schauts ihn an" ist dieses Forum nicht gedacht.

Flames -> PM
vorher http://o.v.e.r.clockers.at/showthre...;threadid=52088 lesen.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz