webForumDet fria alternativet

Komma tillbaka till samma sida i paging

PHPur PHP

2 svar · 346 visningar · startad av Blockqoute

Medlem sedan dec. 200380 inlägg
Frågan#1

Jag håller på med en sida som presenterar olika böcker och där man kan markera vilka böcker man vill läsa och har läst. För att se hur det ser ut kan ni gå in på: http://www.danzayengols.com/exjobb/boklista_inl.php. Då förstår ni.

Nu till problemet. När man klickat på antingen "Ska läsa" eller "Har läst" så laddas sidan om för att lägga in informationen i databasen. Detta leder in sin tur att man nu kommer från början av listan av böcker igen. Detta problem syns ännu mer om man t.ex. väljer att klicka på någon av de böcker som kommer på andra sidor i pagingen än första. Gör man det så hamnar man längst upp på sida 1 även om man kanske var på sida 5.

Är det någon som vet hur man kan göra för att man, när man klickat på någon av de två knapparna, kommer tillbaka till just det stället man var på innan man klickade? Är det ens genomförbart?

Skickar med koden till sidan:

<?include "connect.php";

//session_start();
// om session tilldelad, login = ok.
//if(!isset($_SESSION['id'])){
//header("location:lanalas.php");
//}

$mid=$_SESSION['id'];

if(isset($_POST['ska_lasa'])){
  $sql1="SELECT * FROM ska_lasa WHERE bid='{$_POST['id']}' AND mid='$mid'";
	$result1=mysql_query($sql1);
	$count1=mysql_num_rows($result1);
  if($count1==0){
    mysql_query("INSERT INTO ska_lasa (bid, mid) VALUES ('{$_POST['id']}', '$mid')");
	}else{
	  $fel_lasa="Denna bok är redan registrerad som en bok du vill läsa.";
	}
}

if(isset($_POST['har_last'])){
  $sql2="SELECT * FROM har_last WHERE bid='{$_POST['id']}' AND mid='$mid'";
	$result2=mysql_query($sql2);
	$count2=mysql_num_rows($result2);
  if($count2==0){
    mysql_query("INSERT INTO har_last (bid, mid) VALUES ('{$_POST['id']}', '$mid')");
	}else{
	  $fel_last="Denna bok är redan registrerad som en bok du har läst.";
	}
}
?>
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Bokia - Startsida</title>
<meta name="description" content="">
<meta name="keywords" content="">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<link href="css/style.css" rel="stylesheet" type="text/css">
</head>

<body>

<div align="center">
<?
include "inc_huvud.php";
include "inc_meny.php";
include "inc_meny2.php";
?>

<table width="735" cellspacing="0" cellpadding="0" border="0" class="main"><tr><td valign="top">
			

			 <table width="100%" height="500" border="0" cellpadding="0" cellspacing="0"><tr valign="top"><td>
       <table border="0" width="700"><tr><td align="center">
			 <h2>Låna & Läs</h2>
			 </td></tr>
			 <tr><td align="center"><h1>Årets hetaste boklista!</h1></td></tr>
			 <tr><td align="center">Här följer alla böcker som är med i årets Bokiabibliotek. Det är bara att välja och vraka!<br>
			                        Klicka på det övre länkarna för att läsa mer om författaren, eller på någon av de undre för att <br>
															läsa recensioner av boken. <p>
															Du kan välja att klicka på "Ska läsa" för att lägga till den boken till de böcker du vill läsa. <br>
															Eller klicka på "Har läst" för att lägga till den boken till de böcker du redan har läst.</td></tr>
			 <tr><td>&nbsp;</td></tr>
			 <tr><td align="center"><font color="red"><?echo $fel_lasa . " " . $fel_last;?></font></td></tr>
			 <tr><td align="center"><table width="630" border="0"><tr><td align="center"><hr></td></tr></table></td></tr>
			 <tr><td align="center">
			 <?php
// Nu bestämmer vi antal per sida och kollar vi upp totala antalet 
$limit = 10; // Antal per sida 
$result = @mysql_query("SELECT count(*) as count FROM bok") 
  or die("Error fetching number in DB<br>".mysql_error()); 
$row = @mysql_fetch_array($result); 
$numrows = $row['count']; // Antal i databasen 
 
// Sedan kollar vi om startvariabeln är satt 
if (!isset($_GET['start']) || $_GET['start'] == "") 
  $start = 0; 
else 
  $start = $_GET['start']; 
 
// Då räknar vi ut hur många sidor det blev 
$pages = intval($numrows/$limit); 
if ($numrows%$limit) 
  $pages++; 
 
// Hämta länk till förstasidan och föregående sida 
if ($start > 0) { 
  $numlink = '<a href="?start=0">Första</a> '; 
  $numlink .= '<a href="?start='.($start - $limit).'"><img src="gif/knapp_bakat.gif" border="0"></a> '; 
} else { 
//  $numlink = '«« '; 
  $numlink .= '<img src="gif/knapp_bakat_ejaktiv.gif" border="0">  '; 
} 
 
// Hämta sidonummer 
for ($i = 1; $i <= $pages; $i++) { 
  $newoffset = $limit*($i-1); 
  if ($start == $newoffset) 
    $numlink .= '['.$i.'] '; 
  else 
    $numlink .= '<a href="?start='.$newoffset.'">'.$i.'</a> '; 
} 
 
// Hämta länk till nästa sida 
if ($numrows > ($start + $limit)) 
  $numlink .= '<a href="?start='.($start + $limit).'"><img src="gif/knapp_framat.gif" border="0"></a> '; 
else 
  $numlink .= '<img src="gif/knapp_framat_ejaktiv.gif" border="0"> '; 
 
// Hämta sista sidan 
if ($start != $newoffset) 
  $numlink .= '<a href="?start='.$newoffset.'">Sista</a> '; 
else 
  $numlink .= '';
 
 // Nu kan vi hämta datan från databasen och skriva ut den 
  $result = @mysql_query("SELECT fid, fornamn, efternamn, flank1, flank2, flank3, b_flank1, b_flank2, b_flank3, forfattare.id, bok.id AS id, titel, sammanfattning, blank1, blank2, blank3, blank4, blank5, b_blank1, b_blank2, b_blank3, b_blank4, b_blank5 FROM forfattare, bok WHERE forfattare.id=bok.fid ORDER BY efternamn ASC LIMIT ".$start.",".$limit."")
//$result = @mysql_query("SELECT * FROM lanalas ORDER BY efternamn ASC LIMIT ".$start.",".$limit."") 
  or die("Error fetching data<br>".mysql_error()); 
while ($data = @mysql_fetch_array($result)){
			   echo "<table border='0' width='630'>";
?>			 <form name="boklista" method="post" action="boklista_inl.php"><?
				 echo "<tr><td width='75'><img src=\"gif/boklista/".$data['id'].".bmp\"></td>";
			   echo "<input type='hidden' value=" . $data['id'] . " name='id'>";  				 
				 echo "<td width='' valign='top'><i>" . $data['fornamn'] . " " . $data['efternamn'] . "</i><br>";
				 if(!empty($data['flank1'])){
				   echo "<b>Länk 1: </b><a href='" . $data['flank1'] . "' target='_blank'>" . $data['b_flank1'] . "</a><br>";
				 }
				 if(!empty($data['flank2'])){
				   echo "<b>Länk 2: </b><a href='" . $data['flank2'] . "' target='_blank'>" . $data['b_flank2'] . "</a><br>";
				 }
				 if(!empty($data['flank3'])){
				   echo "<b>Länk 3: </b><a href='" . $data['flank3'] . "' target='_blank'>" . $data['b_flank3'] . "</a><br>";
				 }
				 echo "<b>" . $data['titel'] . "</b><br>";
				 echo $data['sammanfattning'] . "<br>";
				 if(!empty($data['blank1'])){
				   echo "<b>Recension 1: </b><a href='" . $data['blank1'] . "' target='_blank'>" . $data['b_blank1'] . "</a><br>";
				 }
				 if(!empty($data['blank2'])){
				   echo "<b>Recension 2: </b><a href='" . $data['blank2'] . "' target='_blank'>" . $data['b_blank2'] . "</a><br>";
				 }
				 if(!empty($data['blank3'])){
				   echo "<b>Recension 3: </b><a href='" . $data['blank3'] . "' target='_blank'>" . $data['b_blank3'] . "</a><br>";
				 }
				 if(!empty($data['blank4'])){
				   echo "<b>Recension 4: </b><a href='" . $data['blank4'] . "' target='_blank'>" . $data['b_blank4'] . "</a><br>";
				 }
				 if(!empty($data['blank5'])){
				   echo "<b>Recension 5: </b><a href='" . $data['blank5'] . "' target='_blank'>" . $data['b_blank5'] . "</a><br>";
				 }?>
				 <p></td>
				 <td align="center" width="80">
				 <input type="submit" name="ska_lasa" value="Ska läsa" style="font-family: Verdana; color: #000000; font-size: 9px; background-color: #E1E1E1; border: 3px outset #8B8B8B"><p>
				 <input type="submit" name="har_last" value="Har läst" style="font-family: Verdana; color: #000000; font-size: 9px; background-color: #E1E1E1; border: 3px outset #8B8B8B"></td>
			   <tr><td colspan='3'><hr></td></tr>		 
			   </td></tr>
				 </form>
				 </table>
<?}?>			 
			 </td></tr>
			 </table>
<?php		echo "<table border='0' align='center'><tr><td align='center'>" .	 $numlink . "</td></tr></table>";?>
			 
			 </td>
       </tr>
       </table>
</td>
</tr>
</table>

<?
include "inc_botten.php";
?>

</body>
</html>
Medlem sedan juli 2006461 inlägg
#2

Hehe, kul att mitt pagingskript används så mycket som det görs. :bire
(Trist att se att min credit har försvunnit på vägen bara...)

Vad du får göra är att skicka med sidonumret i formuläret, och sedan skicka tillbaka besökaren till den sidan. Förslagsvis kan du slänga med det i form-taggen:

<form name="boklista" method="post" action="boklista_inl.php?start=<?=$start?>">
Medlem sedan dec. 200380 inlägg
#3

Kanske man kan passa på att i samma tråd fråga om hur man kan göra för att knapparna ska försvinna för just en bok när man klickat på den en gång? Alltså, istället för att få ett felmeddelande så ska det inte gå att klicka på samma knapp två gånger för samma person. Hur koden ser ut finns längre upp i tråden. Samt en länk till sidan så ni ser hur den ser ut.

Tack så mycket TheMagnus, det fungerade perfekt!

139 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)