Avatar billede Calle5463 Forsker
10. august 2011 - 12:08 Der er 11 kommentarer og
1 løsning

Frem og Tilbage

Jeg har en side hvor jeg viser indholdet af txt-filer navngivet info-1.txt info-2.txt .... info-10.txt i en tabel-celle.
Har forsøgt at lave frem- og tilbageknapper med en tæller, men det virker ikke.
Der må være en anden smart og KISS måde at gøre det på!
(Det behøver ikke være fine knapper - skal bare være funktionelt. Jeg er teoretisk ikke særlig velbevandret i php m.m., så henvisninger til funktioner er nødt til at være med (let)forståelige eksempler :-) )
Avatar billede micma18_ Nybegynder
10. august 2011 - 14:54 #1
if ($_GET[id] == null){ //Hvis id mangler åbnes første side
$aabnfil = 'info-1.txt';
}
else if (ctype_digit($_GET[id])){ //Hvis id feltet er et tal
$aabnfil = 'info-'.$_GET[id]'.txt';
if (file_exists('$aabnfil')){ //Findes filen på serveren
  include('$aabnfil'); //inkluderer filens indhold på siden
}
else {
  echo "Fejl: Filen blev ikke fundet!";
}
}
else {
echo "Fejl i id!";
}


//Frem og tilbage
if (ctype_digit($_GET[id])){
$back = $_GET[id] - 1;
if ($back > 1){
  echo "<A HREF='?id=$back'>Tilbage</A>
}

$next = $_GET[id] + 1;
if ($next <= 10){ //maks antal sider
  echo "<A HREF='?id=$next'>Frem</A>
}
}
Avatar billede micma18_ Nybegynder
10. august 2011 - 14:59 #2
Ændre lige linje 2 til:

include('info-1.txt');


my bad ;-)
Avatar billede micma18_ Nybegynder
10. august 2011 - 15:17 #3
Og linje 5 til:

$aabnfil = 'info-'.$_GET[id].'.txt';


Der manglede lige et punktum.... Det går godt i dag ;-)
Avatar billede Calle5463 Forsker
10. august 2011 - 15:41 #4
- er du sikker på {}-parenteserne? Jeg kan ikke rigtigt få dem til at passe sammen (i mit hoved :-) )
Avatar billede micma18_ Nybegynder
10. august 2011 - 15:49 #5
Lige umiddelbart ser det rigtig ud, men hvis du prøver at kører det, så skal den nok brokke sig hvis det ikke passer ;-)
Avatar billede Calle5463 Forsker
10. august 2011 - 16:04 #6
Jeg har included i en test-page.php. Skal der noget "echo" omkring eller ...?

Der kommer kun "Hvad sker der?" - ingen fejl!

<html>
<head>
</head>

<body>

<table border=1>
  <tr>
    <td> Hvad sker der? </td>
    <td> <?PHP include ("fremogtilbage.php"); ?> </td>
    <td> Skete der noget? </td>
  </tr>
</table>

</body>
</html>
Avatar billede Calle5463 Forsker
10. august 2011 - 18:22 #7
Jeg har fået nedenstående til at virke - er der noget i den kode der er fatalt?

<html>
<head>
</head>

<body>

<table border=1>
  <tr>
    <td> Hvad sker der? </td>
    <td>
      <?PHP
        if ($_GET[id]==null) {
          $fil='info-1.txt';
          include("$fil");
          $_GET[id]=1;
          } else {
          if (ctype_digit($_GET[id])) {
            $filnr=$_GET[id];
            $fil='info-'.$filnr.'.txt';
            if (file_exists("$fil")) { include("$fil"); } else { echo "Fejl: Fil blev ikke fundet!"; }
          } else { echo "Fejl: id ikke et tal!"; }
        }
      ?>
    </td>
    <td> Skete der noget? </td>
  </tr>
  <tr>
    <td></td>
    <td> Er det her det sker? </td>
    <td>
      <?PHP
        $back=$_GET[id]-1;
        if ($back>=1) { echo "<a href='?id=$back'> Tilbage </a>"; }
        $next=$_GET[id]+1;
        if ($next<=4) { echo "<a href='?id=$next'> Frem </a>"; }
      ?>
    </td>
  </tr>
</table>

</body>
</html>
Avatar billede micma18_ Nybegynder
10. august 2011 - 20:39 #8
perfekt!

men pas på den nederste $_GET[id] er sårbar overfor code injection. Sæt hellere ctype_digit ind.
Avatar billede Calle5463 Forsker
10. august 2011 - 21:30 #9
Du mener sådan her? Jeg fjernede den på et tidspunkt fordi det  ikke virkede .... og det gør det så stadig ikke - øv. Hvad er der galt - det virker s.. da på den første?!?

<td> Er det her det sker? </td>
    <td>
      <?PHP
        if (ctype_digit($_GET[id])) {
          $back=$_GET[id]-1;
          if ($back>=1) { echo "<a href='?id=$back'> Tilbage </a>"; }
          $next=$_GET[id]+1;
          if ($next<=4) { echo "<a href='?id=$next'> Frem </a>"; }
        }
      ?>
    </td>
  </tr>
Avatar billede Calle5463 Forsker
10. august 2011 - 21:42 #10
Hov, nej.
(Faktisk skulle noget at det nok laves om til en funftion eller noget, da jeg bruger det til at sætte fem forskellige filer inf  forskellige steder på det samme site - men det må komme)
Det virker på den første hvor den ikke når til ctype_digit som derefter ikke virker - er det så vigtigt med den?
Avatar billede Calle5463 Forsker
11. august 2011 - 19:25 #11
micma, skriv et svar så du ka' få nogen point. Dem har du længe fortjent.
Avatar billede micma18_ Nybegynder
11. august 2011 - 20:18 #12
tak tak ;-)
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