Avatar billede sqren Nybegynder
27. august 2003 - 14:25 Der er 14 kommentarer og
1 løsning

Max 10 indlæg

Hej, jeg er igang med at tilføje den funktion så efter fx. 10 indlæg skal der stå Næste side.
Desværre sker der det at hvis man fx. sætter den til max. 10 indlæg og der kun er 3 så kommer der 3 indlæg på forsiden, men den laver links til side 1 2 3 4 5 6 (i arkivet). Disse sider er så tomme.
Avatar billede sqren Nybegynder
27. august 2003 - 14:26 #1
Glemte lige koden:

<?php

$prside = 20;
$visfra = $_GET['visfra'];
if(!$_GET['visfra']) $visfra = 0;

$ud = mysql_query("SELECT * FROM logbog WHERE brugerid='$_SESSION[id]' ORDER BY logid DESC limit $visfra, $prside");
while ($row = mysql_fetch_array($ud)) {
echo "<TABLE height=0% width=0% border=0>";
echo "<TR>";
echo "<TD><B>Skrevet:</B></TD>";
echo "<TD>$row[time]</TD></TR>";
echo "<TR>";
echo "<TD><B>Overskrift:</B></TD>";
echo "<TD>$row[overskrift]</TD></TR>";
echo "<TR>";
echo "<TD valign='top'><B><br>Tekst:</B></TD>";
echo "<TD width='100%'><br>".nl2br($row['besked'])."<br><hr></TD></TR></TABLE>";
    }
}



$antal = mysql_num_rows(mysql_query("SELECT * FROM logbog"));

if ($visfra > 0) {
    $bagud = $visfra-$prside;
    echo "<a href='$_SERVER[PHP_SELF]?visfra=$bagud'>Forrige</a> ";
}
$page = 1;
for ($start = 0; $antal > $start; $start = $start + $prside) {
    if($visfra != $page * $prside - $prside) {
        echo "<a href='$_SERVER[PHP_SELF]?visfra=$start'>$page</a> ";
    } else {
        echo $page." ";
    }
    $page++;
}
if ($visfra < $antal - $prside) {
    $naeste = $visfra + $prside;
    echo " <a href='$_SERVER[PHP_SELF]?visfra=$naeste'>Næste</a>";
}


?>
Avatar billede jakoba Nybegynder
27. august 2003 - 14:41 #2
der er en '}' formeget sidst i din while løkke, ellers kan jeg ikke se noget.
og den burde forårsage en fejlmeddelelse fra php.

indsæt evt en linie øverst i scriptet:
  error_reporting( E_ALL );
så du blliver informeret om de fejl du laver. Det hjælper enormt.

mvh JakobA
Avatar billede sqren Nybegynder
27. august 2003 - 14:46 #3
Har sat ind i toppen og den kan stadig godt vise siden, nu med denne fejlmeddelelse:

Notice: Undefined index: visfra in /customers/sjovert.dk/sjovert.dk/httpd.www/f97x/logbog/login.php on line 74

Notice: Undefined index: visfra in /customers/sjovert.dk/sjovert.dk/httpd.www/f97x/logbog/login.php on line 75

Det er altså disse to linier der er noget galt med:
$visfra = $_GET['visfra'];
if(!$_GET['visfra']) $visfra = 0;
Avatar billede sqren Nybegynder
27. august 2003 - 14:49 #4
Glemte at skrive at den sidste } skal være der, eller vises der bare en blank side med meddelelsen:

Parse error: parse error, unexpected $ in /customers/sjovert.dk/sjovert.dk/httpd.www/f97x/logbog/login.php on line 135
Avatar billede jakoba Nybegynder
27. august 2003 - 15:06 #5
de to linier
  $visfra = $_GET['visfra'];
  if(!$_GET['visfra']) $visfra = 0;
bør erstattes med:
  $visfra = isset( $_GET['visfra'] ) ? $_GET['visfra'] : 0;
se ?: operatoren i php manualen
  if( $variabel ) er en sjusket og nogengange ubrugelig måde at sige if ( isset($variabel) )

den sidste fejl ser jeg ingen årsag til. prøv evt med blot ovenstående rettelse, det kan være en fejl der opstår på grund af de tidligere fejl.

mvh JakobA
Avatar billede jakoba Nybegynder
27. august 2003 - 15:09 #6
men den '}' er forkert. der skal aldrig være flere } end { tegn nogetsteds. kik evt nærmere på dine strenge, om en af den ikke er korrekte strenge.
Avatar billede jakoba Nybegynder
27. august 2003 - 15:15 #7
en mulighed er at der er andre php-sektioner tidligere i din fil login.php som du ikke har vist og hvor det manglende { tegn så står.

Hvis det er tilfældet skal det } tegn ikke fjenes, men flyttes ned bagefter der su evt skriver dit 'næste' link. (der bruger du jo $visfra, som kun bliver sat til en værdi indeni den {} klamme.
Avatar billede sqren Nybegynder
27. august 2003 - 15:41 #8
Efter jeg udskiftede linierne som du sagde kommer der ingen fejlmeddelelse, men den viser stadig for mange links til arkivet.
Avatar billede jakoba Nybegynder
27. august 2003 - 15:45 #9
Når du har rette dine indrykninger må du gerne vise koden igen.
Avatar billede sqren Nybegynder
27. august 2003 - 15:46 #10
<?php
error_reporting( E_ALL );
$prside = 10;
$visfra = isset( $_GET['visfra'] ) ? $_GET['visfra'] : 0;

$ud = mysql_query("SELECT * FROM logbog WHERE brugerid='$_SESSION[id]' ORDER BY logid DESC limit $visfra, $prside");
while ($row = mysql_fetch_array($ud)) {
echo "<TABLE height=0% width=0% border=0>";
echo "<TR>";
echo "<TD><B>Skrevet:</B></TD>";
echo "<TD>$row[time]</TD></TR>";
echo "<TR>";
echo "<TD><B>Overskrift:</B></TD>";
echo "<TD>$row[overskrift]</TD></TR>";
echo "<TR>";
echo "<TD valign='top'><B><br>Tekst:</B></TD>";
echo "<TD width='100%'><br>".nl2br($row['besked'])."<br><hr></TD></TR></TABLE>";

}}

$antal = mysql_num_rows(mysql_query("SELECT * FROM logbog"));

if ($visfra > 0) {
    $bagud = $visfra-$prside;
    echo "<a href='$_SERVER[PHP_SELF]?visfra=$bagud'>Forrige</a> ";
}
$page = 1;
for ($start = 0; $antal > $start; $start = $start + $prside) {
    if($visfra != $page * $prside - $prside) {
        echo "<a href='$_SERVER[PHP_SELF]?visfra=$start'>$page</a> ";
    } else {
        echo $page." ";
    }
    $page++;
}
if ($visfra < $antal - $prside) {
    $naeste = $visfra + $prside;
    echo " <a href='$_SERVER[PHP_SELF]?visfra=$naeste'>Næste</a>";
}


?>
Avatar billede jakoba Nybegynder
27. august 2003 - 15:48 #11
"Når du har rette dine indrykninger".
Jeg gider ikke det gætteri.

PS såvidt jeg kan se har du ikke flyttet det } tegn som du ellers sagde. blot slået det sammen med det andet i een linie.
Avatar billede sqren Nybegynder
27. august 2003 - 15:50 #12
Jeg er ikke helt med på hvad du vil have mig til at gør. Og med hensyn til } så virker det ikke hvis jeg fjerner den.
Avatar billede jakoba Nybegynder
27. august 2003 - 16:04 #13
indryninger er en måde at gøre sin kode overskuelig. hvis du kikker forneden i din fil:

for ($start = 0; $antal > $start; $start = $start + $prside) {
    if($visfra != $page * $prside - $prside) {
        echo "<a href='$_SERVER[PHP_SELF]?visfra=$start'>$page</a> ";
    } else {
        echo $page." ";
    }
    $page++;
}

kan du se at der for hver eneste linie er stoppet blanktegn ind foran så man direkte kan se hvor mange sæt { og } der er udenom den linie. Det fortælle os hvordan strukturen i programmet er, gør det nemt at se hvad der er if-del og hvad der er else-del i if sætningen, osv.

Sådan pør din php kode være indrykket hele vejen igennem filen.

lav linien
  }}
om til
  }

og tilføj en linie efter
if ($visfra < $antal - $prside) {
    $naeste = $visfra + $prside;
    echo " <a href='$_SERVER[PHP_SELF]?visfra=$naeste'>Næste</a>";
}
hvor der blot står }

og lav så indrykningerne rigtige. efter den måde tuborgerne nu står.
Avatar billede sqren Nybegynder
27. august 2003 - 19:11 #14
Tak for din hjælp.
Kan du ikke lige smide et svar?
Avatar billede sqren Nybegynder
14. september 2003 - 20:53 #15
Lukket!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester