Op één of ander manier, maakt die de form met textarea alleen zichtbaar, als de gebruiker een bericht heeft op zijn/haar "wall"

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.
Frank Nietbelangrijk op 04/05/2014 00:06:20

Ik wil best eens voor je kijken maar heb je misschien even een SQL dump?



hier stond de SQL dump


De datum is niet alleen niet correct (varchar(100)), maar alles op mijn website is momenteel alpha. (alleen te spelen door mij en de uitgenodigden)
Regel 50:
<?php
$totalRecords = @mysql_result($res, 0, 'num') or die(mysql_error());
?>

het woordje or is hetzelfde als dat je schrijft || en betekend gewoon OF.

Het is te vergelijken met een if statement:
<?php
if(mysql_result($res, 0, 'num') || die(mysql_error()))
{
// doe iets
}
?>

het statement bestaat uit twee delen:
deel 1: mysql_result($res, 0, 'num')
deel 2: die(mysql_error())

een OR vergelijking levert TRUE op indien één van de twee delen TRUE is of als beiden delen TRUE zijn.

als deel 1 een TRUE oplevert dan stopt de vergelijking want de computer hoeft maar één TRUE te hebben om de in de IF te mogen springen dus er is geen reden om nog naar deel twee te gaan.

echter wanneer er 0 records gevonden zijn dan zal mysql_result($res, 0, 'num') een 0 terug geven en wordt deel 2 van de vergelijking WEL uitgevoerd. (FALSE heeft waarde 0 en TRUE heeft waarde 1 (maar ook hoger dan 1 wordt door de computer naar TRUE vertaald)). En wat is deel twee van de vergelijking?

die(mysql_error())!

door de functie die() wordt het script stopgezet maar voordat dit gebeurd vragen we nog even de mysql foutmelding te tonen. Er is echter geen foutmelding (want het feit dat er geen records gevonden zijn is nog geen fout) dus komt er ook geen tekst :-)

Met andere woorden:
Jij laat op deze regel het script dus stoppen als er geen berichten zijn gevonden voor de opgegeven player.
Bedankt voor de uitleg. :)
Het werkt, en alles onder de php script werkt. Inc. de melding als er geen berichten zijn.

Reageren