Avatar billede nicklasw Nybegynder
16. august 2006 - 15:15 Der er 21 kommentarer og
1 løsning

kan ikke få tilbage og næste knap til at virke

Hej.
Jeg kan ikke få min tilbage og næste knap i mit forum til at virke
koden til knapperne er i bunden af koden.

<?
$fra = $_GET["fra"];
if ($fra == "")
{
  $fra = 0;
};
$counter = 0;
$limit = 7 * $fra;

include("include/connect.php");

$res = mysql_query("SELECT * FROM forum LIMIT $limit,7") or die(mysql_error());
$vistrows = mysql_num_rows($res);
while ($row = mysql_fetch_array($res) or die (mysql_error()))
{
  $title = $row["title"];
  $kl = $row["kl"];
  $navn = $row["navn"];
  $pretext = $row["text"];
  $antal = $row["id"];
  $text = nl2br($pretext);
  $html = "
  <table id=\"forum_table\">
      <tr>
          <td  id=\"forum_title\"><a>$title</a></td>
      </tr>
      <tr>
          <td id=\"forum_info\"><a>$navn</a><br /><a>$kl</a></td>
          <td id=\"forum_text\">$text</td>
      </tr>
      </table>
      <br />
  ";
  echo "$html";
};
mysql_close();

include("include/connect.php");

$plus = $fra + 1;
$minus = $fra - 1;

$countres = mysql_query("SELECT * FROM forum") or die(mysql_error());
$ialt = mysql_num_rows($countres);

if($vistrows > 7){
  echo "<a href=\"vis.php?fra=$minus\"><< Tilbage</a>";
};

if($vistrows < $ialt){
  echo "<a hred=\"vis.php?fra=$plus\">Næste >></a>";
};
?>

håber ikke kan hjælpe mig.

Nicklas
Avatar billede nielle Nybegynder
16. august 2006 - 15:28 #1
Start i hvert fald med at lave dem om til:

if ($vistrows > 7)
    echo "<a href=\"vis.php?fra=$minus\">&lt;&lt; Tilbage</a>";

if ($vistrows < $ialt)
    echo "<a hred=\"vis.php?fra=$plus\">Næste &gt;&gt;</a>";
Avatar billede nielle Nybegynder
16. august 2006 - 15:29 #2
... og prøv dernæst at forklare lidt mere om hvad du mener med at de ikke virker?
Avatar billede nicklasw Nybegynder
16. august 2006 - 16:00 #3
ja undskyld jeg ikke forklaret det særligt godt...

der kommer simpelthen ikke nogen links frem... kort og godt
Avatar billede nielle Nybegynder
16. august 2006 - 16:44 #4
Ok:

Den første:

if ($vistrows > 7)
    echo "<a href=\"vis.php?fra=$minus\">&lt;&lt; Tilbage</a>";

- bliver aldrig vist fordi at $vistrows ikke bliver større end 7 nogensinde. Du udtrækker jo med:

... LIMIT $limit, 7"

- og så kommer der jo højes 7 rækker ud.


Den anden:

if ($vistrows < $ialt)
    echo "<a hred=\"vis.php?fra=$plus\">Næste &gt;&gt;</a>";

- kræver nok at $ialt er større end 7, dvs. at antallet af rækker returneret ved:

$countres = mysql_query("SELECT * FROM forum") or die(mysql_error());
$ialt = mysql_num_rows($countres);

- er større end 7. Da jeg ikke kender din database kan jeg ikke afgøre om dette er tilfældet. Men der bliver jo ikke udskrevet noget, så...
Avatar billede nicklasw Nybegynder
16. august 2006 - 17:40 #5
der bliver vist 7 rows, som der skal. det er bare næste og tilbaeg der ikke virker.
jeg kan godt se problemet...
har du et alternativt jeg kan ikke få det til at virke
Avatar billede nielle Nybegynder
16. august 2006 - 17:53 #6
Ja, men det kræver godt nok at du omskriver din kode en del:


1) I stedet for at bruge:

$countres = mysql_query("SELECT * FROM forum") or die(mysql_error());
$ialt = mysql_num_rows($countres);

- til at tælle antallet af rækker i forum, bør du gøre sådan:

$result = mysql_query("SELECT count(*) AS ialt FROM forum") or die(mysql_error());
$row = mysql_fetch_assoc($result);
$ialt = $row["row"];

Det udnytter database-ressourcerne meget bedre.


2) Hvis $limit er større end 0 så må der jo være nogle rækker før dem som bliver vist. Derfor:

if ($limit > 0)
    echo "<a href=\"vis.php?fra=$minus\">&lt;&lt; Tilbage</a>";


3) Du udregner:

$limit = 7 * $fra;

- og så udtrækker du 7 rækker fra denne position.

Hvis der er flere end $limit+7 rækker i tabellen, må der derfor være nogle rækker du ikke får vist. Derfor:

if ($ialt > $limit+1)
    echo "<a hred=\"vis.php?fra=$plus\">Næste &gt;&gt;</a>";
Avatar billede nielle Nybegynder
16. august 2006 - 17:53 #7
if ($ialt > $limit+7)
    echo "<a hred=\"vis.php?fra=$plus\">Næste &gt;&gt;</a>";
Avatar billede nicklasw Nybegynder
16. august 2006 - 20:20 #8
nu ser min kode sådan ud:

<?
$fra = $_GET["fra"];
if ($fra == "")
{
  $fra = 0;
};
$counter = 0;
$limit = 7 * $fra;

include("include/connect.php");

$res = mysql_query("SELECT * FROM forum LIMIT $limit,7") or die(mysql_error());
while ($row = mysql_fetch_array($res) or die (mysql_error()))
{
  $title = $row["title"];
  $kl = $row["kl"];
  $navn = $row["navn"];
  $pretext = $row["text"];
  $antal = $row["id"];
  $text = nl2br($pretext);
  $html = "
  <table id=\"forum_table\">
      <tr>
          <td  id=\"forum_title\"><a>$title</a></td>
      </tr>
      <tr>
          <td id=\"forum_info\"><a>$navn</a><br /><a>$kl</a></td>
          <td id=\"forum_text\">$text</td>
      </tr>
      </table>
      <br />
  ";
  echo "$html";
};
mysql_close();

include("include/connect.php");

$plus = $fra + 1;
$minus = $fra - 1;

$result = mysql_query("SELECT count(*) AS ialt FROM forum") or die(mysql_error());
$row = mysql_fetch_assoc($result);
$ialt = $row["row"];

if($limit > 0){
  echo "<a href=\"vis.php?fra=$minus\">&lt;&lt; Tilbage</a>";
};

if($ialt > $limit+7){
  echo "<a href=\"vis.php?fra=$plus\">Næste &gt;&gt;</a>";
};
?>
Avatar billede nicklasw Nybegynder
16. august 2006 - 20:21 #9
og den virker stadig ikke
Avatar billede boost Nybegynder
16. august 2006 - 20:23 #10
Hvorfor åbner du db lukker, og åbner igen?


<?
$fra = $_GET["fra"];
if ($fra == "")
{
  $fra = 0;
};
$counter = 0;
$limit = 7 * $fra;

include("include/connect.php");

$res = mysql_query("SELECT * FROM forum LIMIT $limit,7") or die(mysql_error());
while ($row = mysql_fetch_array($res) or die (mysql_error()))
{
  $title = $row["title"];
  $kl = $row["kl"];
  $navn = $row["navn"];
  $pretext = $row["text"];
  $antal = $row["id"];
  $text = nl2br($pretext);
  $html = "
  <table id=\"forum_table\">
      <tr>
          <td  id=\"forum_title\"><a>$title</a></td>
      </tr>
      <tr>
          <td id=\"forum_info\"><a>$navn</a><br /><a>$kl</a></td>
          <td id=\"forum_text\">$text</td>
      </tr>
      </table>
      <br />
  ";
  echo "$html";
};

$plus = $fra + 1;
$minus = $fra - 1;

$result = mysql_query("SELECT count(*) AS ialt FROM forum") or die(mysql_error());
$row = mysql_fetch_assoc($result);
$ialt = $row["row"];

if($limit > 0){
  echo "<a href=\"vis.php?fra=$minus\">&lt;&lt; Tilbage</a>";
};

if($ialt > $limit+7){
  echo "<a href=\"vis.php?fra=$plus\">Næste &gt;&gt;</a>";
};
mysql_close();
?>
Avatar billede nicklasw Nybegynder
16. august 2006 - 20:27 #11
vist bare en gamel kode der ikke er blevet slettet,  det er den så nu ;)
Avatar billede nielle Nybegynder
16. august 2006 - 20:33 #12
Prøv at udskrive værdierne af $limit og $ialt.
Avatar billede nielle Nybegynder
16. august 2006 - 20:34 #13
Denne:

$ialt = $row["row"];

- skal rettes til:

$ialt = $row["ialt"];
Avatar billede nicklasw Nybegynder
16. august 2006 - 20:55 #14
øhh den udskriver heller ikke ikke noget der... er der noget af den anden kode som skule blokere for det??
Avatar billede nicklasw Nybegynder
16. august 2006 - 20:55 #15
forresten vil gerne give dig flere poin for alt den hjælp
Avatar billede nielle Nybegynder
16. august 2006 - 20:58 #16
Prøv at udskrive værdierne af $limit og $ialt.
Avatar billede nicklasw Nybegynder
17. august 2006 - 14:43 #17
det er det der er problemmet den udskriver ikke $limit og $ialt når jeg echo 'er dem.
kan det være noget af den anden kode der blokere for at den udskriver noget??
Avatar billede nicklasw Nybegynder
17. august 2006 - 15:19 #18
jeg har fundet ud af noget, at alt hvad man prøver at udskrive efter WHILE lykken bliver ikke udskrevet.... er der nogen der kan svare mig hvad der sker
Avatar billede nicklasw Nybegynder
17. august 2006 - 19:55 #19
du kan bare lægge et svar så starter jeg et nyt inlæg :)
Avatar billede nielle Nybegynder
17. august 2006 - 22:50 #20
Du skal ihvert falde lave denne linje:

while ($row = mysql_fetch_array($res) or die (mysql_error()))

- om til:

while ($row = mysql_fetch_array($res))

Jeg ved ikke om det er det der skal til, men jeg kan ikke umiddelbart se andet galt.
Avatar billede nielle Nybegynder
17. august 2006 - 22:57 #21
Ahh, kiggede lige i dit andet spørgsmål; Det var den.

Nej, man skal ikke bruge "... or die()" sammen med en mysql_fetch_array(). While-delen er egentlig irellevant i den sammenhæng. Men mysql_fetch_array() returnere bare ikke false ved en fejl, sådan som mysql_query() og de andre gør.

Eller rettere sagt: det gør den, men den gør det når at den er færdig og der ikke er flere rækker at læse. Men det er jo faktisk ikke en fejl.

Hvis du kalder die(), stopper scriptet på det sted i koden, og resultatet af at smide en die() på er altså at while-løkken køre indtil at der ikke er flere rækker, hvorefter die() kaldes, og scriptet stoppes. Ergo skrives der ikke mere ud efter dette punkt.
Avatar billede nielle Nybegynder
17. august 2006 - 22:57 #22
... og et svar :^)
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