blätterfunktion .txt

Okay, danke Dir :)


Hier gehts zur Box im neuen Fenster ohne Größenbeschränkung ...

wie gesagt das ganze Teil habe ich mir mal irgendwann von ner amerikanischen Scriptseite geladen, wuss aber bisher nicht so recht für was das gut ist, bis jetzt auf einmal alle welt von Shoutboxen labert und das cool findet, ich habe da jetzt auch schon verschiedene gesehen, aber ich möchte diesen ganzen smiliekram nicht, sondern den eigentlichen Zweck unterstützen - Das kurze prägnante Mitteilen einer vielleicht geistreichen Message, daher finde ich das ganz gut, dass es so kompakt und trotzdem mit mysql . Textumbruch Zeichenvorgabe Linkerkennung ist ja alles drinne nur halt die begrenzte Blätterei ... Ich glaube die Webseite des Autors ist tkai.com, aber irgendwie ist der nicht mehr an Bord ...
Cool wäre es ja, wenn anstatt der angezeigten zahl 10 ein >> und am Anfang dann ein << steht, dann könnte ma ja die Beschränkung aufheben, nur möchte ich nict dass eben immer mehr Zahlenangezeigt werden...

Was fehlt ist der refresh, um die anzeige zu aktualisieren, aber das könnte man ja im Anschluss ...

Ron

PS. warum musss ich hier eigentlich übelst weit horizontal scrollen?
ich habe 1024x768 und die Postseiten werden in die Breite gezogen... belastend ...
 
Zuletzt bearbeitet:
Hi Ronald,
egentlich musst du nur diese Zeilen in deinem code:
PHP:
echo "<b>goto:</b> ";
for ($i=1; $i<=intval($total/$max)+1; $i++) {
    if ($i != $page) {
        echo "<a href=\"$PHP_SELF?page=$i\">$i</a>";
    }
    else {
        echo "<span class=\"navizahl\">$i</span>";
    }
   print " ";
}
in diese
PHP:
echo "<a href=\"$PHP_SELF?page=".($page-1)."\"><<<</a>";
echo "<a href=\"$PHP_SELF?page=".($page+1)."\">>>></a>";
ändern, dann werden nur noch die Pfeile ausgegeben und nicht mehr die Zahlen.

tob
 
Zuletzt bearbeitet:
@melistik

habe eben das mal nach deinem Text geändert:

PHP:
//for ($i=1; $i<=intval($total/$max)+1; $i++) 
//ändern zu ->
$entries = 27 // deine maximale anzeige (so werden 30 angezeigt)
for ($i=1; ($eintries/$max)>= $i ; $i++) 
{ echo "<a href=\"$PHP_SELF?page=$i\">$i</a>";
//
kriege dann folgenden Fehler :
Parse error: parse error in /mnt/ls5/06/524/00000009/htdocs/interaktiv/shoutbox/shoutshow.php on line 46

Zeile 46 ist in Homesite die Zeile, die mit "for" beginnt

@Tob das test ich ach gleich mal danke ... CU in ten minuts oder so ... :)
 
Original geschrieben von Tob
Hi Ronald,
egentlich musst du nur diese Zeilen in deinem code:
PHP:
echo "<b>goto:</b> ";
for ($i=1; $i<=intval($total/$max)+1; $i++) {
    if ($i != $page) {
        echo "<a href=\"$PHP_SELF?page=$i\">$i</a>";
    }
    else {
        echo "<span class=\"navizahl\">$i</span>";
    }
   print " ";
}

in diese
PHP:
echo "<a href=\"$PHP_SELF?page=".($page-1)."\"><<<</a>";
echo "<a href=\"$PHP_SELF?page=".($page+1)."\">>>></a>";

ändern, dann werden nur noch die Pfeile ausgegeben und nicht mehr die Zahlen.

tob

achso jetzt seh isch, naja dann sind ja gar keine Zahlen mehr da, aber ich meinte das Prinzip eher so wie es bei Google funktioniert ... Das finde ich dann schon bissl attraktiver ;-)
 
ach so, na dann einfach beides zusammen so wie ich es geschrieben habe, hätte es sowieso Probleme gegeben, wenn die Seite dann kleiner als null wird :rolleyes: :

PHP:
if($page -1 > 0){
echo "<a href=\"$PHP_SELF?page=".($page-1)."\"><<<</a>";
}
for ($i=1; $i<=intval($total/$max)+1; $i++) {
    if ($i != $page) {
        echo "<a href=\"$PHP_SELF?page=$i\">$i</a>";
    }
    else {
        echo "<span class=\"navizahl\">$i</span>";
    }
   print " ";
} 
if ($page < intval($total/$max)){ 
echo "<a href=\"$PHP_SELF?page=".($page+1)."\">>>></a>";
}

gruß tob
 
Das hier klappt einwandfrei :
PHP:
<?php
$lines = file("edit.txt");
$total = count($lines);
$proseite = 3;
if (! isset($page)) // !isset wenn sie nicht gezetzt ist wird $page=1 
{ $page = 1;}

$seiten = ceil($total /$proseite); //ceil rundet auf wir wollen ja alles anzeigen lassen )


for ($i = ($total - ($proseite*($page-1))); $i >= ($total - (($proseite*$page)-1)) ;$i--)
{ 
    if (!isset($lines[$i-1])) {echo "";}  //wenn in den Zeilen nichts steht wird nichts ausgegeben
    else {
    $zeile = $lines[$i-1];
    list($user,$topic,$text,$datum,$icon,$link,$na2) = explode ("|--|", $zeile);
    echo $user;
    echo  "--";
    echo $topic;
    echo "<br><br>";
}
}
if ($page>1) {
    $i=$page-1;
    echo "<A HREF=\"$PHP_SELF?page=$i\">&lt;previous</A>";
}
for($i=1; $i<=$seiten; $i++) {
    if ($i==$page) {
        echo $i."&nbsp;";
    }
    else {
        echo "<A HREF=\"$PHP_SELF?page=$i\">$i</A>&nbsp;";
    }
}
if ($page<$seiten) {
    $i=$page+1;
    echo "<A HREF=\"$PHP_SELF?page=$i\">next&gt;</A>";
}

?>
 
Zuletzt bearbeitet:
Wow ....

Danke Danke Tob, suoer das schonmal genauso wie ichs wollte!

aaaaber eins is noch jettz habe ich die Variablen so abgeändert:
PHP:
$max = "3";
$total = "27";

wenn du das jetzt mal anguggst :

>>>>>> HIER <<<<<<<

siehst du das jetzt auf seite 10 nichts da ist, weil ja 9x3=27 oder so ...
wieso zeigts dann überhaupt die 10 an, wenn dort kein Eintrag da ist ...?
 
Ich denke das liegt an dieser Bedingung in der for Schleife:
$i <= intval($total/$max)+1
nämlich an der +1. Das wurde wahrscheinlich gemacht, weil intval() immer nach
unten rundet, wäre $total=29 und $max immer noch 3 kommt bei der division 9,666
heraus, intval sorgt aber dafür, dass 9 dabei herauskommt, also bleiben die
letzten beiden Beiträge in diesem Fall verborgen.
Mir fallen so spontan 2 Möglichkeiten ein das zu umgehen1.
for($i=1; $i<=$total/$max ; $i++)
wenn beid der division nun 9,66 herauskommt müsste die schleife eigentlich noch
1 mal durchlaufen werden und eine 10. Seite ausgeben.

Oder 2. man testet ob es einen Rest beim teilen durch 3 gibt:
Code:
if($total%$max > 0){
    $seitenzahl = intval($total/$max) +1;
}
else{
    $seitenzahl = intval($total/$max);
}
for($i=1; $i<=$seitenzahl; $i++) 
 usw.

naja wie auch immer, version eins scheint mir praktischer, wobei ich natürlich
nicht weiß welchen vorteil intval bringt...

@melistik, in deinem script kann übrigens auch diese lehrseite entstehen.

gruß tob
 
es geht voran ...

verstehen will ichs ja, aber leider sehe ich da immer noch nicht so durch, wo da was genau zu ändern ist :(

mal abgesehen von der jetzigen guten Lösung (siehe nachfolgender DateiCode) ...
Kann man das dann nicht auch so lösen, dass damit jetzt sagen wir mal maximal 99 Einträge aus der Datenbank abrufbar sind, diese aber nach diesem Muster angezeigt werden:

Anzeigezustand beim Aufrufen der Box mit angenommenen insgesamt 120 Einträgen, von denen aber nur die 99 aktuellsten angezeigt werden sollen:

goto: 1 2 3 4 5 6 7 8 9 >>>

Jetzt blätter ich weiter und angezeigt wird das:

goto: <<< 2 3 4 5 6 7 8 9 10 >>>

wenn ich am Ende bin siehts dann so aus:

goto: <<< 91 92 93 94 95 96 97 98 99

wow jetzt hab ich richtig Blut geleckt ;-) leider hab ich von der ganzen Materie soviel Ahnung wie eine Jungfrau vom OralB6 ;-)

Ich poste mal nochmal danach den gesamten momentanen Code der shoutshow.php seperat und lösche den obigen, um bissl Platz zu machen ... siehe unten ...

Hier der aktuelle Stand als Link
 
Zuletzt bearbeitet:
Zurück