Klaus Mock: Daten in Html ausgabe auf mehrere Seiten verteilen.

Beitrag lesen

Hallo,

Ich übergebe mit der Query noch andere Parameter.
Wie trenne ich die ?

Das erledigt, wenn alles richtig gemaicht wurde, das CGI-Modul.

Also ich habe im mom :

use CGI;
$params = new CGI;
$Index = $params->param('Index');
if ($Index eq ''){$Index = 0;}
$wochen = $params->param('wochen');
if ($wochen eq "1") {&viewentr1;}

fast richtig (ich steig nicht runter):

use strict;
use CGI;
my $params = new CGI; # $query wäre für micht klarer, aber bitte schön
my $Index = $params->param('Index');
if ($Index eq ''){$Index = 0;}
my $wochen = $params->param('wochen');
if ($wochen eq "1") {&viewentr1;} #der Stringvergleich ist auch nicht gerade schön

(Obwohl die Variablen nicht unbedingt benötigt werden würden. s.u.)

Ist jetzt der HTML Aufruf :

http://www.pbtoys.de/cgi-bin/newitemsneu.cgi?wochen=1,Index=70

z.B. in Ordnung ?

Grundsätzlich ja, aber es kommt nicht das raus was Du wahrscheinlich haben willst.
Hier steht nämlicht, daß der der CGI-Parameter 'wochen' auf '1,Index=70' gesetzt ist.

http://www.pbtoys.de/cgi-bin/newitemsneu.cgi?wochen=1&Index=70

ist, was Du willst. Warum das so ist, kannst Du beispielsweise unter http://selfhtml.teamone.de/cgiperl/intro/formularverarbeitung.htm#datenstrom nachlesen. [1]

und das zweite Problem ist das der jetzt wunderschön die thumbs teilt, aber auf der zweiten seite nicht mehr die Beschränkung von 70 Thumbs einhält.

Also wenn ich so aufrufe =
http://www.pbtoys.de/cgi-bin/newitemsneu.cgi?Index=30

Dann macht er mit 110 Thumbs

@lines = splice(@lines, $Index, $Index+70);
$Index = $indexBack;
foreach $line (@lines)
{
@fields=split(/\s*|\s*/,$line);
$thumb=$fields[5];
print <<HTMLF;
<blablabla>
HTMLF
$indexBack=$Index-70;
if ($indexBack < 1) { $indexBack=0 }

print "<a href="http://www.pbtoys.de/cgi-bin/newitemsneu.cgi?Index=$indexBack">70 Products back / zurück</a>";
}

??? Verstehe nicht woran das jetzt liegt ...

Hmm, nicht wirklich, aber Alternative (Du ersparst Dir das Splice)

use strict;
use CGI;

my $query = new CGI;
my $images_per_page = 70;

das hier

&viewentr1 if $query->param('wochen') == 1;

anstelle von:

#my $wochen = $params->param('wochen');
#if ($wochen eq "1") {&viewentr1;}

my @lines = &readImageIndex(); # iergendeine Funktion, die eben Deine Index-Datei ausliest.

my $linecount;
my $maxcount = $query->param('Index')+ $line_per_pages;
$maxcount = $#lines if $maxcount>$#lines;

my $nextIndex = $maxcount+1;
my $prevIndex = $query->param('Index') - $line_per_pages;
$prevIndex = 0 if $prevIndex <0;

for($linecount = $query->param('Index');$linecount <$maxcount;$linecount++)
  {
  chomp $lines[$linecount]; # den Zeilenumbruch weg, falls vorhanden;
  # hier die behandlung der Zeile $lines[$linecount]
  }

Da fehlt jetzt noch einiges an behandlung der vor- und zurück-Links, aber das machst Du schon.
Ach ja, das erste Element eines Arrays hat den Index 0.

Grüße
  Klaus

[1] Premiere, ich habe heute meinen ersten Link zu SelfHTML 8.0 gesetzt;-)