Forum » Server-Side scripting » Gastenboek status
Berichten: 3
avatar
Offline Stuur privebericht
Hey cp,

Ik heb een gastenboek script, die alleen je naam weergeeft als je iets zegt. Nou wil ik het zo maken dat als bijvoorbeeld je status -> 18 dat er dan naast je naam (Admin) komt te staan, en als dat bijvoorbeeld -> 1 is, dat er dan (lid) komt te staan.

Hoe doe ik dit? Dit is het stukje PHP code:

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
error_reporting
(E_ALL);





// UBB aanmaken
function ubb($string) {
    
$string htmlspecialchars($string); // Beveiligen voor XSS injection
    
$string stripslashes($string); // Slashes verwijderen
    
$string nl2br($string); // Zorgen dat er meerdere regels gebruikt kunnen worden
    
$string preg_replace("#[b](.+?)[/b]#is""<b>\1</b>"$string); // [b][/b] => <b></b>
    
$string preg_replace("#[i](.+?)[/i]#is""<i>\1</i>"$string); // [i][/i] => <i></i>
    
$string preg_replace("#[u](.+?)[/u]#is""<u>\1</u>"$string); // [u][/u] => <u></u>
    
$string preg_replace("#[s](.+?)[/s]#is""<s>\1</s>"$string); // [s][/s] => <s></s>
    
    

    
    
return $string;
}
$dagen = Array("zondag""maandag""dinsdag""woensdag""donderdag""vrijdag""zaterdag");
?>


<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    
// Als er een veld niet ingevuld is
    
if (empty($_POST['bericht'])) {
        echo 
'<span style="color:red; font-weight: bold">Je hebt niet alle velden ingevuld!</span>';
    } elseif (
strlen($_POST['bericht']) > 500) {
        echo 
'<span style="color:red; font-weight: bold">De ingevulde velden hebben te veel karakters bericht maximaal 500</span>';
    } elseif (
$_POST['dag'] != $dagen[date('w')]) {
        echo 
'<span style="color:red; font-weight: bold">De ingevulde dagnaam klopt niet!</span>';
    } else {
    
// Als alle velden ingevuld zijn wordt het bericht gefilterd toegevoegd
    
$sql mysql_query("SELECT `gebruikersnaam` FROM `gebruikers` WHERE id =".$_SESSION['gebruiker']);
    
$res mysql_fetch_assoc($sql);
    
$naam $res['gebruikersnaam'];
        if (
mysql_query("INSERT INTO gastenboek (naam, bericht, datum, ip) VALUES ('".$naam."', '".trim(mysql_real_escape_string($_POST['bericht']))."', NOW(), '".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."')")) {
            echo 
'<span style="color:green; font-weight: bold"Je reactie is succesvol toegevoegd!</span>';
        } else {
            echo 
'<span style="color:green; font-weight: bold">Er is iets fout gegaan en je reactie is niet toegevoegd. Probeer het later opnieuw.</span>';
        }
    }
}
?>
<a href="gastenboek.php#2" target="_self">Plaats een bericht</a><br>
<?php

// Gegevens ophalen uit de database en sorteren op id
$sql mysql_query("SELECT * FROM gastenboek ORDER BY datum DESC");
if (
mysql_num_rows($sql) == 0) {
    
// Als er nog geen reacties geplaatst zijn
    
echo 'We hebben nog geen reacties!';

} else {
    while(
$data mysql_fetch_assoc($sql)) {
        
// Als er wel reacties zijn geplaatst worden deze nu weergegeven
        
    
        
echo '      
    <table><tr>
    
            <td class="comment_td">
            <p style="text-transform:capitalize;"><b>'
.htmlspecialchars(stripslashes($data['naam'])).'</b></p>
        
        
            <p>'
.ubb($data['bericht']).'</p>

            <p><i>'
.htmlspecialchars(stripslashes($data['datum'])).'</i></p></td>
           </tr><hr />'
;
        
?> </table> <?
    
}
}
?><br>
<h1><a name="2">Reactie plaatsen</a></h1>
<? if(isset($_SESSION['gebruiker'])) {  ?>
<form method="post" action=""><p>

Welke dag is het vandaag:
<input type="text" name="dag" />
Bericht: (maximaal 500 karakters)
<textarea name="bericht" id="tekst" rows="6" cols="37"></textarea>
<input type="submit" value="Toevoegen" onClick="this.value='Reactie wordt geplaatst...';" /> <input type="reset" value="Herstel" />
</p></form>
<p> <?
} else { 
    echo 
'Je bent niet ingelogged, klik <a href="index.php">hier</a> om dit te doen.<br><br><br>'

?>




Kan iemand mij helpen? Ik weet echt niet hoe het moet.

groetjes,
Laatst gewijzigd door datiskeigaaf op 2011-08-31 16:17:31
30-08-2011 17:21
Dit topic is 287 keer bekeken door 49 verschillende leden
Reacties op: "Gastenboek status"
1
Berichten: 3
avatar
Offline Stuur privébericht
BUMP weet niemand hoe het moet?
31-08-2011 16:17
world-of-maffia.nl
Berichten: 744
avatar
Offline Stuur privébericht
Dit doe je doormiddal van een array!

Code | Selecteer Alles
minimaliseren
1
2
3
4
<?php
// aanmaken van een array
$rang = array("Lid""Moderator""Admin");
?>


Uitleg Array:

1. Maak in je database iets aan met de naam rang of iets dergelijke

2. Zet deze op INT

3. De array kijkt welk cijfer je hebt en kijkt dan welke naam erbij moet komen. Zie voorbeeld hieronder:

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
Array
(
    [
0] => Lid
    
[1] => Moderator
    
[2] => Admin
)


Opvragen kan je doen door:

Code | Selecteer Alles
minimaliseren
1
<? echo $rang;?>
31-08-2011 16:27
Berichten: 552
avatar
Offline Stuur privébericht
Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
11
12
<?php

if($data['status'] > 18)
{
  
$naam $data['naam'] .'(Admin)';
}
else
{
  
$naam $data['naam']
}

?>


Zo iets ?
31-08-2011 16:28
Berichten: 3
avatar
Offline Stuur privébericht
zwp gangster, hoe roep ik de database + tabel op via die array dan?

EDIT:

Ik heb nu dit in mijn gastenboek:

Code | Selecteer Alles
minimaliseren
1
major petrokResource id #9


heb het scriptje
Code | Selecteer Alles
minimaliseren
1
2
$rang = array("Lid""Admin");
$rang mysql_query("SELECT `rang` FROM `gebruikers`");


Code | Selecteer Alles
minimaliseren
1
<b>'.htmlspecialchars(stripslashes($data['naam'])).'</b>';  echo $rang; echo'</p>


gebruikt.
31-08-2011 16:39
Berichten: 409
avatar
Online Stuur privébericht
Ik had toevallig ook een gastenboek nodig, ondervind echter het zelfde probleem als topic starter.
01-09-2011 18:21
world-of-maffia.nl
Berichten: 744
avatar
Offline Stuur privébericht
Je maakt in je database het volgende aan:

- Tabel met de naam rang en met het type INT

- Je maakt een script waarmee je een rang kan uitdelen, je zorg ervoor dat het script de rangen met cijfers opslaat
( 0=lid 1=admin )

Code | Selecteer Alles
minimaliseren
1
2
$rang = array("Lid""Admin");
$rang mysql_query("SELECT `rang` FROM `gebruikers`");


Code | Selecteer Alles
minimaliseren
1
<b>'.htmlspecialchars(stripslashes($data['naam'])).'</b>';  echo $rang;'</p>


Je krijgt dus nu:

Kees = Lid ( 0 )
Henk = Admin ( 1 )

De cijfers staan voor voor de namen, dit houd in dat je in de database cijfers opslaat en via de array de cijfers omzet in een naam in dit geval 0 = Lid en 1 = Admin
01-09-2011 23:50
Berichten: 409
avatar
Online Stuur privébericht
Ik doe precies zoals jij het zegt, maar ik krijg een Resource id #7
02-09-2011 15:18
world-of-maffia.nl
Berichten: 744
avatar
Offline Stuur privébericht
Hmzz raar!!

geef je hele script eens of een demo van je script?
02-09-2011 15:39
Berichten: 409
avatar
Online Stuur privébericht
ik heb dit:

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Gegevens ophalen uit de database en sorteren op id
$rang = array("Lid", "Admin");
$rang = mysql_query("SELECT `rang` FROM `gebruikers`");

$sql = mysql_query("SELECT * FROM gastenboek ORDER BY datum DESC");
if (mysql_num_rows($sql) == 0) {
    // Als er nog geen reacties geplaatst zijn
    echo 'We hebben nog geen reacties!';

} else {
    while($data = mysql_fetch_assoc($sql)) {
        // Als er wel reacties zijn geplaatst worden deze nu weergegeven
        
    
        echo '      
    <table><tr>
    
            <td class="comment_td">
            <p style="text-transform:capitalize;"><b>'.htmlspecialchars(stripslashes($data['naam'])).'</b>';  echo $rang; echo'</p>
        
        
            <p>'.ubb($data['bericht']).'</p>

            <p><i>'.htmlspecialchars(stripslashes($data['datum'])).'</i></p></td>
           </tr><hr />';
        ?> </table> <?
    
}
}
?><br>


dat is het stukje van het gasstenboek
02-09-2011 16:01
Reageer op: "Gastenboek status"
1
Je kan niet reageren omdat je niet bent ingelogd. Inloggen of Aanmelden