Just nu i M3-nätverket
Jump to content

Komma tillbaka till samma sida i paging


Blockqoute

Recommended Posts

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>

 

Link to comment
Share on other sites

Ä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?

 

Hej!

Jag skulle lägga till ett hidden-fält med värdet ifrån $_GET['start'], och sedan mata det till SQL-satsen. Problemet är väl att det blir lite krångligt med både POST och GET, men det är ju bara till att undersöka båda.

 

Alternativt så kan man ta sig genom kak-vägen, du struntar helt i GET-värdet och jobbar enbart på kakor. Nackdelen här är ju såklart att användaren måste acceptera kakor från dig.

 

Lycka till!

 

EDIT: Efter att ha kikat in på sidan så ser jag ju att ett tredje alternativ såklart är att ersätta knapparna med länkar ?id=1991&lasa=ska_lasa&start=5 tex.

 

Ett fjärde alternativ, om du nu vill ha kvar knapparna är att länka dem till en javascript-funktion med onclick.

 

 

.dune.

----------------------------------------------

- "I find this a nice feature but it is not according to the documentation.

Or is it a BUG?"

- "Let´s call it an accidental feature. :-)"

 

[inlägget ändrat 2006-10-31 01:02:24 av dune]

[inlägget ändrat 2006-10-31 01:03:01 av dune]

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...