Code:
<?php
/**
* ============
* - Script: Guestbook
* - Author: Void
* - Date: 06 Aug 2008
* ============
**/
// debug mode (aanzetten indien nodig)
//error_reporting(E_ALL);
//ini_set("display_errors", true);
/**
* Config Vars:
* ============
* - MySQL gegevens zelf even invullen
* - Paginatuur configuratie naar eigen smaak invullen
* ============
**/
$mysql['user'] = ''; // vul hier de mysql gebruikersnaam in om te connecten met je database
$mysql['pass'] = ''; // vul hier het mysql wachtwoord in om te connecten met je database
$mysql['database'] = ''; // vul hier de database naam in die je wil gebruiken
$postsPerPage = 5; // het aantal berichten dat je per pagina wil laten zien
$numPageNumbers = 7; // het aantal pagina nummers dat word laten zien
// connecten met mysql
@mysql_connect("localhost", $mysql['user'], $mysql['pass']) or die(mysql_error());
@mysql_select_db($mysql['database']) or die(mysql_error());
// mysql var unsetten voor de veiligheid
unset($mysql);
// berichten in de database tellen
$sql = "SELECT COUNT(*) AS num FROM wall WHERE player_name = '".$_GET['user']."'";
$res = @mysql_query($sql) or die(mysql_error());
$totalRecords = @mysql_result($res, 0, 'num') or die(mysql_error());
// het aantal pagina nummers uitrekenen
$totalPages = ceil($totalRecords / $postsPerPage);
// kijken of de
$currentPage = isset($_GET['page']) && is_numeric($_GET['page']) && $_GET['page'] > 0 && $_GET['page'] <= $totalPages ? $_GET['page'] : 1;
// pagina nummers berekenen
if($totalPages > $numPageNumbers)
{
$pageNumberStart = $currentPage - floor($numPageNumbers / 2);
$pageNumberEnd = $currentPage + floor($numPageNumbers / 2);
while($pageNumberStart < 1) { $pageNumberStart++; $pageNumberEnd++; }
while($pageNumberEnd > $totalPages) { $pageNumberStart--; $pageNumberEnd--; }
}
else
{
$pageNumberStart = 1;
$pageNumberEnd = $totalPages;
}
// offset voor in de sql query
$offset = ($currentPage - 1) * $postsPerPage;
// berichten uit de databse selecteren die bij het huidige pagina nummer horen (deze query moet je nog even goed zetten tot alles wat je nodig hebt)
$sql = "SELECT * FROM `wall` ORDER BY `bericht_id` DESC LIMIT ".$offset.", ".$postsPerPage;
$res = @mysql_query($sql) or die(mysql_error());
// hier gaan we de berichten in stoppen
$data = array();
// kijken of we wel berichten in het gastenboek hebben
if(@mysql_num_rows($res))
{
// data uit de database trekken
while($row = @mysql_fetch_array($res))
{
$data[] = $row;
}
}
?>
<style>
.userpost{
border:2px solid gold;
background-color:maroon;
padding:5px;
margin-bottom:5px;
}
/* paginatuur */
.pagination {
margin:40px 0px;
padding:0px;
list-style:none;
}
.pagination li {
display:inline;
padding:0px 3px;
}
</style>
<?php
// kijken of we wel berichten in het gastenboek hebben
if($data)
{
// berichten uitspugen
foreach($data as $row)
{
echo '<div class="userpost">
<div class="playerinf" style="float:left;margin-right:5px;width:60px;height:60px;border:1px solid silver;background-image:url('.$row['avatar'].');"></div>
<div style="width:100%;margin-right:5px;">
'.ucfirst(strtolower($row['poster'])).' - '.$row['datum'].'
<div style="margin-left:65px !important;background-color:#330000;border:1px solid black;padding:5px;color:silver;">
'.nl2br(htmlentities($row['bericht'])).'
</div>
</div>
<div style="clear:both;"></div>
</div>';
}
// paginatuur
echo '<ul class="pagination">';
if($pageNumberStart > 1)
echo '<li><a href="'.$_SERVER['PHP_SELF'].'?page=1" title="pagina 1">...</a></li>';
for($i=$pageNumberStart; $i<=$pageNumberEnd; $i++)
echo $i == $currentPage ? '<li><strong>'.$i.'</strong></li>' : '<li><a href="'.$_SERVER['PHP_SELF'].'?user='.$_GET['user'].'&page='.$i.'" title="pagina '.$i.'">'.$i.'</a></li>';
if($pageNumberEnd < $totalPages)
echo '<li><a href="'.$_SERVER['PHP_SELF'].'?user='.$_GET['user'].'&page='.$totalPages.'" title="pagina '.$totalPages.'">...</a></li>';
echo '</ul>';
}
else
{
echo 'Er zijn nog geen berichten in het gastenboek';
}
?>
</table>
</div>
<div style="clear:both;"></div>
<div class="profilebar" style="border-radius:5px;">
<p>Post a message</p>
</div>
<div style="clear:both;"></div>
<?php
if(isset($_POST['berichtplaatsen'])){
echo "test";
if(!empty($_POST['bericht'])){
$datum = date('H:i:s d-m-Y');
mysql_query("INSERT INTO wall(player_name,poster,datum,bericht,avatar) VALUES('".$_GET['user']."','".$_SESSION['SESS_LOGIN_NAME']."','".$datum."','".$_POST['bericht']."','". $info['avatar']."')");
$sql = "SELECT * FROM `wall` ORDER BY `bericht_id` DESC LIMIT ".$offset.", ".$postsPerPage;
$row = mysql_fetch_row($sql);
}
}
?>
<form action="http://marcoeilander.nl/unonu/rsrpg/profile.php?user=<?php echo $checkplayerprofile['player_name']; ?>" method="POST"">
<textarea name="bericht" style="width:98%;height:100px;border-radius:5px; background-color:#000033;color:silver;padding:5px;"></textarea>
<input type="submit" value="POST" name="berichtplaatsen"/>
</form>
Ik ben aardig wat tutorials/snippets tegen gekomen, waar ik de fouten gelijk in kon zien, maar hier is het echt abracadabra voor mij. Het heeft iets met dit te maken :
// berichten uit de databse selecteren die bij het huidige pagina nummer horen (deze query moet je nog even goed zetten tot alles wat je nodig hebt)
$sql = "SELECT * FROM `wall` ORDER BY `bericht_id` DESC LIMIT ".$offset.", ".$postsPerPage;
$res = @mysql_query($sql) or die(mysql_error());
Als ik daar overal // voor zet, is de stukje met de form wel zichtbaar..
Ik hoop dat iemand kan helpen.