webForumDet fria alternativet

gästbok och paging problem!

1 svar · 616 visningar · startad av dea

deaMedlem sedan dec. 2002387 inlägg
#1

Jag har hittat en gästbok utan paging och ett pagingscript av kjell här på webforum.
Nu har jag problem att sätta ihop dem tillsammans.
Problemet är att pagingen kommer fram men alla meddelanden ligger på alla sidor. Den delar inte upp meddelandena på olika sidor!

ps. har tagit bort lite kod då denna posten blev för stor annars

Jag har gjort så här än så länge och då blir det fel:


<?php
if(isset($_GET['tabort']) && $_SESSION['admin'] == "admin"){
   $sql = "DELETE FROM gast WHERE id = '{$_GET['tabort']}' LIMIT 1";
   mysql_query($sql);
}
if(isset($_GET['banna']) && $_SESSION['admin'] == "admin"){
   $sql = "UPDATE gast SET blockad = 1 WHERE id = '{$_GET['banna']}' LIMIT 1";
   mysql_query($sql);
}

if(isset($_POST['logga_in'])){
   if($_POST['user'] == "admin" && $_POST['pass'] == "petronella"){ //byt ut $ett_losenord mott det lösenord du vill använda
      $_SESSION['admin'] = $_POST['user'];
   }else{
      echo "Fel användarnamn och /eller Lösenord";
   }
}
if(isset($_GET['logga_ut'])){
   session_unset();
   session_destroy();
}
if($_SESSION['admin'] == "admin"){
echo "Admin läge";
} 
if(isset($_POST['submit'])){

// Tag bort eventuella blanksteg i början eller slutet
   foreach($_POST as $key => $val){
     $_POST[$key] = trim($val);
    $_POST[$key] = ucfirst($val);
   }
   //Kolla efter tomma fält
   if (empty($_POST['namn']) || empty($_POST['epost']) ||
       empty($_POST['mess'])) {
     $reg_error[] = 0;
   }
      // Kolla om e-post kan tänkas vara ok
   if (!preg_match('/^[-A-Za-z0-9_.]+[@][A-Za-z0-9_-]+([.][A-Za-z0-9_-]+)*[.][A-Za-z]{2,8}$/', $_POST['epost'])) {
     $reg_error[] = 1;
   }
      // Inga fel? skicka inlägget
   if (!isset($reg_error)) {
   $datum = date("Y-m-d H:i");
   $ip = $REMOTE_ADDR;
   $text = preg_replace('#(\r\n|\r|\n)#', '<br>', $_POST['mess']);
   $texten= censur(strtolower($text));
        $sql = "INSERT INTO gast(namn, epost, text, ip, datum)
             VALUES('{$_POST['namn']}', '{$_POST['epost']}', '$texten', '$ip', '$datum')";
     mysql_query($sql) or die("Kunde inte skriva till gästboken...");
    } // inga fel kollen
} //submitt kollen
?>
<head>
<link href="../css/default.css" rel="stylesheet" type="text/css" />
</head>
<body>

			<div id="subnav">
		</div>
		<div id="news"><p>Gästbok</p>
			<dl>
			<?php
				$sql = "SELECT * FROM gast ORDER BY id DESC";
				$result = mysql_query("$sql");
				while($row=mysql_fetch_array($result)){
				echo "<dt>
                                <a href='mailto:" .$row['epost']."'>" .$row['namn']. "</a> ";
				echo "" .$row['datum']. "<br></dt>";
				echo "<dd>" .preg_replace('#(&lt;br&gt;)#', '<br>', htmlentities(ucfirst(censur($row['text'])))). "</dd>";
				if($_SESSION['admin'] == "admin"){ echo " <dd><a href='?tabort=" .$row['id']. "'>Ta&nbsp;bort</a>&nbsp;<a href='?banna=" .$row['id']. "'>Banna</a>"; }
				echo "</dd>";
				}
			?>
<?php
/*                        -= Paging =-                          *
* ------------------------------------------------------------- *
*  Dela upp ett större antal poster från MySQL på flera sidor   *
*                                                               *
* Exempel:                                                      *
* +-----------------------------------------------------------+ *
* |                       Sida 3 av 12                        | *
* |                                           << < 12345 > >> | *
* +-----------------------------------------------------------+ *
*                                                               *
* Uppdaterad: 2004-12-22                                        *
* http://member.webforum.nu/kjell/paging.txt                	*
*                                                              */
$max_per_page = 7;// Antal poster att visa per sida
$max_page_num = 2;// Antal valbara sidor från aktuell sida
/*              Använda en select som meny istället             *
* Exempel:                                                      *
* +-----------------------------------------------------------+ *
* |                       Sida 3 av 12                        | *
* |                               Sida 3 visar posterna 21-30 | *
* +-----------------------------------------------------------+ *
*                                                              */
$select_style = false;// true or false

if (isset($_GET['page']) AND preg_match("/^[0-9]+$/", $_GET['page'])) {
	$page_num = $_GET['page'];
} else {
	$page_num = 1;
}

$from_records = ($max_per_page*$page_num)-$page_num;

$result_records = mysql_query("SELECT COUNT(*) AS rows FROM gast");
$num_records = mysql_result($result_records, 0, "rows");
mysql_free_result($result_records);

$total_pages = ceil($num_records/$max_per_page);

$results = mysql_query("SELECT * FROM gast ORDER BY column LIMIT " . $from_records . "," . $max_per_page);

if ($num_records > $max_per_page) {
	$tbl_start = '<dd><table width="100%" border="0" cellspacing="0" cellpadding="2">
			<tr>
			<td align="center">Sida <b>' . $page_num . '</b> av <b>' . $total_pages . '</b></td>
			</tr>
			<tr>
			<td align="right">';

	if ($select_style) {
		$pages = '<form name="menu">' . "\n";
		$pages .= '<select name=links onChange="self.location.href=this.options[this.selectedIndex].value;">' . "\n";
		while ($cur_page++ < $total_pages) {
			$start_records = ($cur_page*$max_per_page)-($max_per_page-1);
			$end_records = $start_records+($max_per_page-1);
			if ($cur_page== $page_num ) { $selected_page = ' selected'; } else { $selected_page = ''; }
			$pages .= '<option value="' . $_SERVER['PHP_SELF'] . '?page=' . $cur_page . '"' . $selected_page . '>Sida ' . $cur_page . ' visar posterna ' . $start_records . '-' . $end_records . '</option>' . "\n";
		}
		$pages .= '</select>' . "\n";
		$pages .= '</form>' . "\n";
	} else {
		if ($page_num > 1) {
			$prev_page = $page_num-1;
			$prev_link = '<a href="' . $_SERVER['PHP_SELF'] . '?page=' . $prev_page . '" title="F&ouml;reg&aring;ende sida">&lt;</a>&nbsp;&nbsp;';
		}
		if ($page_num < $total_pages) {
			$next_page = $page_num+1;
			$next_link = '&nbsp;<a href="' . $_SERVER['PHP_SELF'] . '?page=' . $next_page . '" title="N&auml;sta sida">&gt;</a>';
		}

		while ($cur_page++ < $total_pages) {
			if (($cur_page <= $page_num-$max_page_num || $cur_page >= $page_num+$max_page_num) && $max_page_num != 0) {
				if ($cur_page == 1) {
					$first_link = '<a href="' . $_SERVER['PHP_SELF'] . '?page=' . $cur_page . '" title="F&ouml;rsta sidan">&lt;&lt;</a>&nbsp;&nbsp;';
				}
				if ($cur_page == $total_pages) {
					$last_link = '&nbsp;&nbsp;<a href="' . $_SERVER['PHP_SELF'] . '?page=' . $cur_page . '" title="Sista sidan">&gt;&gt;</a>';
				}
			} else {
				if ($cur_page == $page_num) {
					$pages .= '<b>' . $cur_page . '</b>&nbsp;';
				} else {
					$pages .= '<a href="' . $_SERVER['PHP_SELF'] . '?page=' . $cur_page . '" title="Sida ' . $cur_page . '">' . $cur_page . '</a>&nbsp;';
				}
			}
		}
	}
	$tbl_end = '&nbsp;&nbsp;</td></tr></table>' . "\n";
}

echo $tbl_start . $first_link . $prev_link . $pages . $next_link . $last_link . $tbl_end;

while ($result = mysql_fetch_array($results)) {
	// Skriv ut resultatet från MySQL...
}
?>
			</dl>
		</div>
		<div id="sidebar">
			<img class="indexbild" src="../images/img_spel.jpg" height="60" width="414" />
			<dl>
				<dt>
					<form action="gastbok.php" method="post">
  				<dd><table>
    					<tr>
      						<td>Namn:</td>
      						<td><input name="namn" type="text" size="30">
            				<input type="hidden" value="submit" name="submit" checked></td>  
      						<td rowspan="3">&nbsp;</td>
    					</tr>
    					<tr>
      						<td>Epost:</td>
      						<td><input name="epost" type="text"size="30"></td>
    					</tr>
    					<tr>
      						<td valign="top">Meddelande:</td>
     						<td><textarea name="mess" cols="24" rows="3"></textarea></td>
    					</tr>
						<tr>
							<td>
							</td>
							<td><input type="submit" class="button" value="Skicka"></td>
						</tr>
  					</table>
					</form>
<?php
$sql = "SELECT ip FROM gast WHERE blockad = 1";
$result = mysql_query("$sql");
$row=mysql_fetch_array($result);
if(empty($row)){
$row[]="toffla";
}
if(in_array($REMOTE_ADDR, $row)){
echo "<h2 align='center' style='color: #00000'>Du är bannad från denna gästboken!!!</h2>";
}else{
?>
<?
} //slutet på bann -if 'et
?>
<?php
if (isset($reg_error)){
   // Felmeddelanden
   $error_list[0] = "Alla fält är inte infyllda";
   $error_list[1] = "Felaktig e-postadress";
   echo "<br>Något blev fel:<br>";
   echo "<ul style='color:#FF0000'>";
   for ($i=0; $i<sizeof($reg_error); $i++) {
     echo "<li>{$error_list[$reg_error[$i]]}</li>";
   }
   echo "</ul>";
   } //regerror
?>
</dd>
</dt>
</dl>
<dl>
<dt>
<?php
if(!isset($_GET['logga_in']) && !isset($_SESSION['admin'])){
echo "<div align='center'><a href='?logga_in='>Logga in</a></div>";
}elseif(isset($_SESSION['admin'])){
echo "<div align='center'><a href='?logga_ut='>Logga ut</a></div>";
}else{?>
<form action="gastbok.php" method="post" name="loggar_in">
<table>
    <tr>
      <td>Namn: </td>
      <td><input type="text" name="user">
      <input type="hidden" value="logga_in" name="logga_in" checked></td>
    </tr>
    <tr>
      <td>Pass: </td>
      <td><input type="password" name="pass">
      <input type="submit" value="Logga in"></td>
    </tr>
  </table>
</form>
<?php
}//logga in slutet
?>
</dt>
</dl>
</div>
</body>
</html>
kjellMedlem sedan dec. 1999757 inlägg
#2

Du har en egen sql-fråga ovanför skriptet. Tanken var att du skulle redigera sql-frågan som redan fanns i skriptet.
Testa det här och se om det fungerar bättre.

<?php
if(isset($_GET['tabort']) && $_SESSION['admin'] == "admin"){
   $sql = "DELETE FROM gast WHERE id = '{$_GET['tabort']}' LIMIT 1";
   mysql_query($sql);
}
if(isset($_GET['banna']) && $_SESSION['admin'] == "admin"){
   $sql = "UPDATE gast SET blockad = 1 WHERE id = '{$_GET['banna']}' LIMIT 1";
   mysql_query($sql);
}

if(isset($_POST['logga_in'])){
   if($_POST['user'] == "admin" && $_POST['pass'] == "petronella"){ //byt ut $ett_losenord mott det lösenord du vill använda
      $_SESSION['admin'] = $_POST['user'];
   }else{
      echo "Fel användarnamn och /eller Lösenord";
   }
}
if(isset($_GET['logga_ut'])){
   session_unset();
   session_destroy();
}
if($_SESSION['admin'] == "admin"){
echo "Admin läge";
} 
if(isset($_POST['submit'])){

// Tag bort eventuella blanksteg i början eller slutet
   foreach($_POST as $key => $val){
     $_POST[$key] = trim($val);
    $_POST[$key] = ucfirst($val);
   }
   //Kolla efter tomma fält
   if (empty($_POST['namn']) || empty($_POST['epost']) ||
       empty($_POST['mess'])) {
     $reg_error[] = 0;
   }
      // Kolla om e-post kan tänkas vara ok
   if (!preg_match('/^[-A-Za-z0-9_.]+[@][A-Za-z0-9_-]+([.][A-Za-z0-9_-]+)*[.][A-Za-z]{2,8}$/', $_POST['epost'])) {
     $reg_error[] = 1;
   }
      // Inga fel? skicka inlägget
   if (!isset($reg_error)) {
   $datum = date("Y-m-d H:i");
   $ip = $REMOTE_ADDR;
   $text = preg_replace('#(\r\n|\r|\n)#', '<br>', $_POST['mess']);
   $texten= censur(strtolower($text));
        $sql = "INSERT INTO gast(namn, epost, text, ip, datum)
             VALUES('{$_POST['namn']}', '{$_POST['epost']}', '$texten', '$ip', '$datum')";
     mysql_query($sql) or die("Kunde inte skriva till gästboken...");
    } // inga fel kollen
} //submitt kollen
?>
<head>
<link href="../css/default.css" rel="stylesheet" type="text/css" />
</head>
<body>

			<div id="subnav">
		</div>
		<div id="news"><p>Gästbok</p>
			<dl>
<?php
/*                        -= Paging =-                          *
* ------------------------------------------------------------- *
*  Dela upp ett större antal poster från MySQL på flera sidor   *
*                                                               *
* Exempel:                                                      *
* +-----------------------------------------------------------+ *
* |                       Sida 3 av 12                        | *
* |                                           << < 12345 > >> | *
* +-----------------------------------------------------------+ *
*                                                               *
* Uppdaterad: 2004-12-22                                        *
* http://member.webforum.nu/kjell/paging.txt                	*
*                                                              */
$max_per_page = 7;// Antal poster att visa per sida
$max_page_num = 2;// Antal valbara sidor från aktuell sida
/*              Använda en select som meny istället             *
* Exempel:                                                      *
* +-----------------------------------------------------------+ *
* |                       Sida 3 av 12                        | *
* |                               Sida 3 visar posterna 21-30 | *
* +-----------------------------------------------------------+ *
*                                                              */
$select_style = false;// true or false

if (isset($_GET['page']) AND preg_match("/^[0-9]+$/", $_GET['page'])) {
	$page_num = $_GET['page'];
} else {
	$page_num = 1;
}

$from_records = ($max_per_page*$page_num)-$page_num;

$result_records = mysql_query("SELECT COUNT(*) AS rows FROM gast");
$num_records = mysql_result($result_records, 0, "rows");
mysql_free_result($result_records);

$total_pages = ceil($num_records/$max_per_page);

$results = mysql_query("SELECT * FROM gast ORDER BY id DESC LIMIT " . $from_records . "," . $max_per_page);

if ($num_records > $max_per_page) {
	$tbl_start = '<dd><table width="100%" border="0" cellspacing="0" cellpadding="2">
			<tr>
			<td align="center">Sida <b>' . $page_num . '</b> av <b>' . $total_pages . '</b></td>
			</tr>
			<tr>
			<td align="right">';

	if ($select_style) {
		$pages = '<form name="menu">' . "\n";
		$pages .= '<select name=links onChange="self.location.href=this.options[this.selectedIndex].value;">' . "\n";
		while ($cur_page++ < $total_pages) {
			$start_records = ($cur_page*$max_per_page)-($max_per_page-1);
			$end_records = $start_records+($max_per_page-1);
			if ($cur_page== $page_num ) { $selected_page = ' selected'; } else { $selected_page = ''; }
			$pages .= '<option value="' . $_SERVER['PHP_SELF'] . '?page=' . $cur_page . '"' . $selected_page . '>Sida ' . $cur_page . ' visar posterna ' . $start_records . '-' . $end_records . '</option>' . "\n";
		}
		$pages .= '</select>' . "\n";
		$pages .= '</form>' . "\n";
	} else {
		if ($page_num > 1) {
			$prev_page = $page_num-1;
			$prev_link = '<a href="' . $_SERVER['PHP_SELF'] . '?page=' . $prev_page . '" title="F&ouml;reg&aring;ende sida">&lt;</a>&nbsp;&nbsp;';
		}
		if ($page_num < $total_pages) {
			$next_page = $page_num+1;
			$next_link = '&nbsp;<a href="' . $_SERVER['PHP_SELF'] . '?page=' . $next_page . '" title="N&auml;sta sida">&gt;</a>';
		}

		while ($cur_page++ < $total_pages) {
			if (($cur_page <= $page_num-$max_page_num || $cur_page >= $page_num+$max_page_num) && $max_page_num != 0) {
				if ($cur_page == 1) {
					$first_link = '<a href="' . $_SERVER['PHP_SELF'] . '?page=' . $cur_page . '" title="F&ouml;rsta sidan">&lt;&lt;</a>&nbsp;&nbsp;';
				}
				if ($cur_page == $total_pages) {
					$last_link = '&nbsp;&nbsp;<a href="' . $_SERVER['PHP_SELF'] . '?page=' . $cur_page . '" title="Sista sidan">&gt;&gt;</a>';
				}
			} else {
				if ($cur_page == $page_num) {
					$pages .= '<b>' . $cur_page . '</b>&nbsp;';
				} else {
					$pages .= '<a href="' . $_SERVER['PHP_SELF'] . '?page=' . $cur_page . '" title="Sida ' . $cur_page . '">' . $cur_page . '</a>&nbsp;';
				}
			}
		}
	}
	$tbl_end = '&nbsp;&nbsp;</td></tr></table>' . "\n";
}

echo $tbl_start . $first_link . $prev_link . $pages . $next_link . $last_link . $tbl_end;

while ($result = mysql_fetch_array($results)) {
				echo "<dt><a href='mailto:" .$row['epost']."'>" .$row['namn']. "</a> ";
				echo "" .$row['datum']. "<br></dt>";
				echo "<dd>" .preg_replace('#(&lt;br&gt;)#', '<br>', htmlentities(ucfirst(censur($row['text'])))). "</dd>";
				if($_SESSION['admin'] == "admin"){ echo " <dd><a href='?tabort=" .$row['id']. "'>Ta&nbsp;bort</a>&nbsp;<a href='?banna=" .$row['id']. "'>Banna</a>"; }
				echo "</dd>";
}
?>
			</dl>
		</div>
		<div id="sidebar">
			<img class="indexbild" src="../images/img_spel.jpg" height="60" width="414" />
			<dl>
				<dt>
					<form action="gastbok.php" method="post">
  				<dd><table>
    					<tr>
      						<td>Namn:</td>
      						<td><input name="namn" type="text" size="30">
            				<input type="hidden" value="submit" name="submit" checked></td>  
      						<td rowspan="3">&nbsp;</td>
    					</tr>
    					<tr>
      						<td>Epost:</td>
      						<td><input name="epost" type="text"size="30"></td>
    					</tr>
    					<tr>
      						<td valign="top">Meddelande:</td>
     						<td><textarea name="mess" cols="24" rows="3"></textarea></td>
    					</tr>
						<tr>
							<td>
							</td>
							<td><input type="submit" class="button" value="Skicka"></td>
						</tr>
  					</table>
					</form>
<?php
$sql = "SELECT ip FROM gast WHERE blockad = 1";
$result = mysql_query("$sql");
$row=mysql_fetch_array($result);
if(empty($row)){
$row[]="toffla";
}
if(in_array($REMOTE_ADDR, $row)){
echo "<h2 align='center' style='color: #00000'>Du är bannad från denna gästboken!!!</h2>";
}else{
?>
<?
} //slutet på bann -if 'et
?>
<?php
if (isset($reg_error)){
   // Felmeddelanden
   $error_list[0] = "Alla fält är inte infyllda";
   $error_list[1] = "Felaktig e-postadress";
   echo "<br>Något blev fel:<br>";
   echo "<ul style='color:#FF0000'>";
   for ($i=0; $i<sizeof($reg_error); $i++) {
     echo "<li>{$error_list[$reg_error[$i]]}</li>";
   }
   echo "</ul>";
   } //regerror
?>
</dd>
</dt>
</dl>
<dl>
<dt>
<?php
if(!isset($_GET['logga_in']) && !isset($_SESSION['admin'])){
echo "<div align='center'><a href='?logga_in='>Logga in</a></div>";
}elseif(isset($_SESSION['admin'])){
echo "<div align='center'><a href='?logga_ut='>Logga ut</a></div>";
}else{?>
<form action="gastbok.php" method="post" name="loggar_in">
<table>
    <tr>
      <td>Namn: </td>
      <td><input type="text" name="user">
      <input type="hidden" value="logga_in" name="logga_in" checked></td>
    </tr>
    <tr>
      <td>Pass: </td>
      <td><input type="password" name="pass">
      <input type="submit" value="Logga in"></td>
    </tr>
  </table>
</form>
<?php
}//logga in slutet
?>
</dt>
</dl>
</div>
</body>
</html>
145 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)