Stats script
Ik heb zojuist mijn eerste script gemaakt!
Als mensen op mijn pagina komen krijgen ze een formuliertje te zien waar ze hun voornaam in moeten vullen. In de database wordt vervolgens de ingevoerde naam opgeslagen, de datum en het ip. Als de bezoeker later terug komt naar de pagina wordt hij begroet met zijn naam en krijgt hij te zien hoeveelste bezoek dit is.
Mijn script
Code (php)
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
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
<?php
session_start();
include('************');//database connectie
$ip = $_SERVER['REMOTE_ADDR'];
if(!isset( $_POST['submit'] ) )
{
$sql = "SELECT ip, naam, keer FROM `stats` WHERE ip='".$ip."'";
$res = mysql_query($sql);
if(mysql_num_rows($res) == 0 )
{
?>
Voer je naam in alsjeblieft:<br>
<form action="<?php echo $PHP_SELF; ?>" method="post">
<input type="text" name="voornaam"><br>
<input type="submit" name="submit" value="Submit">
</form>
<?php
}
else
{
if(!isset( $_SESSION['geweest'] ))
{
$_SESSION['geweest'] = 'ja';
$sql = "UPDATE `stats` SET keer=keer + 1, datumlaatstekeer=NOW() WHERE ip='".$ip."'";
$res = mysql_query($sql);
}
$sql = "SELECT ip, naam, keer FROM `stats` WHERE ip='".$ip."'";
$res = mysql_query($sql);
$row = mysql_fetch_row($res);
echo 'Hallo '.$row[1].'<br>Dit is jou '.$row[2].'e bezoek hier.';
}
}
else
{
$sql = "INSERT INTO `stats` (`ip`, `datumeerstekeer`, `datumlaatstekeer`, `naam`) VALUES('".$ip."', NOW(), NOW(), '".$_POST['voornaam']."')";
$res = mysql_query($sql);
echo 'Bedankt '.$_POST['voornaam'].'!';
$_SESSION['geweest'] = 'ja';
}
?>
session_start();
include('************');//database connectie
$ip = $_SERVER['REMOTE_ADDR'];
if(!isset( $_POST['submit'] ) )
{
$sql = "SELECT ip, naam, keer FROM `stats` WHERE ip='".$ip."'";
$res = mysql_query($sql);
if(mysql_num_rows($res) == 0 )
{
?>
Voer je naam in alsjeblieft:<br>
<form action="<?php echo $PHP_SELF; ?>" method="post">
<input type="text" name="voornaam"><br>
<input type="submit" name="submit" value="Submit">
</form>
<?php
}
else
{
if(!isset( $_SESSION['geweest'] ))
{
$_SESSION['geweest'] = 'ja';
$sql = "UPDATE `stats` SET keer=keer + 1, datumlaatstekeer=NOW() WHERE ip='".$ip."'";
$res = mysql_query($sql);
}
$sql = "SELECT ip, naam, keer FROM `stats` WHERE ip='".$ip."'";
$res = mysql_query($sql);
$row = mysql_fetch_row($res);
echo 'Hallo '.$row[1].'<br>Dit is jou '.$row[2].'e bezoek hier.';
}
}
else
{
$sql = "INSERT INTO `stats` (`ip`, `datumeerstekeer`, `datumlaatstekeer`, `naam`) VALUES('".$ip."', NOW(), NOW(), '".$_POST['voornaam']."')";
$res = mysql_query($sql);
echo 'Bedankt '.$_POST['voornaam'].'!';
$_SESSION['geweest'] = 'ja';
}
?>
Foutmeldingen? Wat doet ie wel? Wat niet? Ik zou je script eigenlijk herschrijven als ik jou was er ontbreekt een hoop foutafhandeling. Bekijk de tutorials hier op PHPhulp voor info.
Dat kan veel korter en met minder queries, maar idd, vertel even wat er wel of niet goed gaat, wel zo makkelijk als je een concreet antwoord verwacht.
@baarr, hoe dan?
if(!isset( $_POST['submit'] ) ), zo check je niet of een form verstuurd is....
http://www.websitemaken.be/index.php?page=show_item&id=858
Maar hoe moet het dan wel?
Edit: voorbeeld staat hier
Gewijzigd op 01/01/1970 01:00:00 door Pepijn
1. $PHP_SELF; dit is van voor de php-oerknal gebruik $_SERVER['PHP_SELF']
2. Checken of een formulier verzonden is gaat zo if($_SERVER['REQUEST_METHOD'] == 'POST'){// verzonde
3. Jij controleert nergens of een query lukt, op het moment dat ie niet meer lukt, loopt heel je script in de knoop. Vb hoe het wel kan.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$sql = "SELECT ip, naam, keer FROM `stats` WHERE ip='".$ip."';";
if($res = mysql_query($sql)) == false)
{
echo 'Probleem met de website, maar don\'t worry, we hebbe mailtje gestuurd :)';
}
else
{
//rest van je script
}
?>
$sql = "SELECT ip, naam, keer FROM `stats` WHERE ip='".$ip."';";
if($res = mysql_query($sql)) == false)
{
echo 'Probleem met de website, maar don\'t worry, we hebbe mailtje gestuurd :)';
}
else
{
//rest van je script
}
?>
4. Houd logica en output gescheiden. Klinkt miss beetje vreemd voor beginnende programmeur. maar het werkt als volgt. Eerst stop je alles wat op het scherm moet komen in een array/variabelen en vervolgens echo je die.. Klinkt vreemd hè...
Ok. bedankt ik zal het veranderen :p