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.
method="POST"" met 3 keer dubbele quote?
echo die query eens?
<?php
echo "SELECT * FROM `wall` ORDER BY `bericht_id` DESC LIMIT ".$offset.", ".$postsPerPage;
?>
Frank Nietbelangrijk op 03/05/2014 21:12:01

echo die query eens?
<?php
echo "SELECT * FROM `wall` ORDER BY `bericht_id` DESC LIMIT ".$offset.", ".$postsPerPage;
?>


Dit is de uitkomst :

SELECT * FROM `wall` ORDER BY `bericht_id` DESC LIMIT 0, 5

Ik zag ook dat de melding niet word weergegeven, als je nog geen berichten hebt.
Dus er is meer mis met het script.

@- SanThe -,
Bedankt voor de opmerking, ik heb het aangepast. :-)
Waarom al die @ in je code? Die onderdrukken toch de eventuele foutmeldingen?!

Marco Eilander op 03/05/2014 15:20:02



<?php
    $sql = "SELECT COUNT(*) AS num FROM wall WHERE player_name = '".$_GET['user']."'";
?>


Is die count(*) handig/verstandig/goed ??

$_SERVER['PHP_SELF']
wordt in ieder geval afgeraden; is onveilig.
Betreft de '@', ik heb het wel eens voorbij zien komen op phphulp. Ik zal ze weghalen.

Even voor de duidelijkheid (mocht het niet helemaal duidelijk zijn), ik heb het script letterlijk gekopieerd van een snippet/tutorial pagina. Ik heb zelf vrij weinig gedaan aan het script.

Als ik "COUNT(*) AS num" verander naar *, dan worden de results niet weergegeven.

Heb je enig idee wat je aan het doen bent / wat de code zou moeten doen?
Weet je wat het doel is van @?
Wat zou
COUNT(*) AS num
moeten doen, denk je?
Betreft de "@", dat deed dacht ik iets met error_reporting().

Count( zou als het goed is alles bij elkaar op moeten tellen, wat die verder doet weet ik niet, ik ben niet zo bekent met count().
COUNT() is niet optellen, maar tellen.
SUM() is optellen.
- SanThe - op 03/05/2014 22:53:29

COUNT() is niet optellen, maar tellen.
SUM() is optellen.


Oke;)

@iedereen,
Ik heb bepaalde dingen aangepast, maar alsnog blijft het stukje onder de bovenstaande script onzichtbaar voor mensen die geen berichten hebben.
Ik wil best eens voor je kijken maar heb je misschien even een SQL dump?

Reageren