Script netjes?
ik heb een scriptje geschreven om 'geld te verdienen' (niet echt natuurlijk!!!)
Kan iemand kijken of het netjes gescript is.. het werkt wel maar ik wil zeker zijn dat alles in orde is.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$sql = mysql_result(mysql_query("SELECT COUNT(*) FROM leden WHERE gebruikersnaam='".mysql_real_escape_string($_SESSION['gebruiker'])."' AND geld_einddatum > NOW() "),0);
if ($sql == 1) {
$datum = mysql_query("SELECT DATE_FORMAT(geld_einddatum, '%H:%i uur op %d-%m-%Y ') AS tijdstip FROM leden WHERE gebruikersnaam='".$_SESSION['gebruiker']."'") or die(mysql_query());
$dat = mysql_fetch_assoc($datum);
echo 'U moet nog wachten tot '.$dat['tijdstip'];
}
if ($sql == 0) {
$getal = rand(50, 200);
echo 'U verdiende '.$getal;
// AND contant = 'contant+".$getal."'
mysql_query("UPDATE leden SET geld_einddatum = DATE_ADD( NOW(), INTERVAL 1 MINUTE ), contant = contant+".$getal." WHERE gebruikersnaam='".mysql_real_escape_string($_SESSION['gebruiker'])."' ") or die(mysql_error());
}
?>
$sql = mysql_result(mysql_query("SELECT COUNT(*) FROM leden WHERE gebruikersnaam='".mysql_real_escape_string($_SESSION['gebruiker'])."' AND geld_einddatum > NOW() "),0);
if ($sql == 1) {
$datum = mysql_query("SELECT DATE_FORMAT(geld_einddatum, '%H:%i uur op %d-%m-%Y ') AS tijdstip FROM leden WHERE gebruikersnaam='".$_SESSION['gebruiker']."'") or die(mysql_query());
$dat = mysql_fetch_assoc($datum);
echo 'U moet nog wachten tot '.$dat['tijdstip'];
}
if ($sql == 0) {
$getal = rand(50, 200);
echo 'U verdiende '.$getal;
// AND contant = 'contant+".$getal."'
mysql_query("UPDATE leden SET geld_einddatum = DATE_ADD( NOW(), INTERVAL 1 MINUTE ), contant = contant+".$getal." WHERE gebruikersnaam='".mysql_real_escape_string($_SESSION['gebruiker'])."' ") or die(mysql_error());
}
?>
Gewijzigd op 13/10/2010 22:42:47 door - SanThe -
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$query =
"
SELECT
COUNT(*)
FROM
leden
WHERE
gebruikersnaam = '" .mysql_real_escape_string( $_SESSION['gebruiker'] ). "'
AND
...
";
$result = mysql_query( $query );
if( !$result ) {
// Foutmelding
}
?>
$query =
"
SELECT
COUNT(*)
FROM
leden
WHERE
gebruikersnaam = '" .mysql_real_escape_string( $_SESSION['gebruiker'] ). "'
AND
...
";
$result = mysql_query( $query );
if( !$result ) {
// Foutmelding
}
?>
etc
Is SESSION['gebruiker'] een id van een gebruiker of een naam? Het klinkt als een naam, maar je kan beter met id's werken.
Jordy nvt op 14/10/2010 09:41:13:
Is SESSION['gebruiker'] een id van een gebruiker of een naam? Het klinkt als een naam, maar je kan beter met id's werken.
DE query is toch wel duidelijk, het is slechts een voorbeeld. Het tellen van gebruikers die jansen heten.....een voorbeeld dus.
Ik heb het niet over het voorbeeldscript, maar over het script van de TS...
Toevoeging op 14/10/2010 16:50:23:
Nu werkt het script niet meer... xs
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
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
<?php
$sql = "SELECT COUNT(*)
FROM leden
WHERE gebruikersnaam='".mysql_real_escape_string($_SESSION['gebruiker'])."'
AND geld_einddatum > NOW() ";
$res = mysql_query($sql);
$result = mysql_result($res, 0);
if($res)
{
if(mysql_num_rows($result) == 1) {
$datum = mysql_query("SELECT DATE_FORMAT(geld_einddatum, '%H:%i uur op %d-%m-%Y ') AS tijdstip FROM leden WHERE gebruikersnaam='".$_SESSION['gebruiker']."'") or die(mysql_query());
$dat = mysql_fetch_assoc($datum);
echo 'U moet nog wachten tot '.$dat['tijdstip'];
} else {
$getal = rand(50, 200);
echo 'U verdiende '.$getal;
mysql_query("UPDATE leden SET geld_einddatum = DATE_ADD( NOW(), INTERVAL 1 MINUTE ), contant = contant+".$getal." WHERE gebruikersnaam='".mysql_real_escape_string($_SESSION['gebruiker'])."' ") or die(mysql_error());
}
}
else
{
echo 'Fout met database.';
}
?>
$sql = "SELECT COUNT(*)
FROM leden
WHERE gebruikersnaam='".mysql_real_escape_string($_SESSION['gebruiker'])."'
AND geld_einddatum > NOW() ";
$res = mysql_query($sql);
$result = mysql_result($res, 0);
if($res)
{
if(mysql_num_rows($result) == 1) {
$datum = mysql_query("SELECT DATE_FORMAT(geld_einddatum, '%H:%i uur op %d-%m-%Y ') AS tijdstip FROM leden WHERE gebruikersnaam='".$_SESSION['gebruiker']."'") or die(mysql_query());
$dat = mysql_fetch_assoc($datum);
echo 'U moet nog wachten tot '.$dat['tijdstip'];
} else {
$getal = rand(50, 200);
echo 'U verdiende '.$getal;
mysql_query("UPDATE leden SET geld_einddatum = DATE_ADD( NOW(), INTERVAL 1 MINUTE ), contant = contant+".$getal." WHERE gebruikersnaam='".mysql_real_escape_string($_SESSION['gebruiker'])."' ") or die(mysql_error());
}
}
else
{
echo 'Fout met database.';
}
?>
en wat is de foutmelding dan?
http://www.php.net/mysql_num_rows
waarom je een mysql_result uitvoert is mij een vraagteken, je doet er in feite niets meer mee
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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
<?php
ini_set('display_errors',1);
error_reporting(E_ALL | E_STRICT);
define('DEBUG_MODE',true);
function showSQLError($sql,$error) {
echo '<pre>Error: '.$error.'<br />'.$sql.'</pre>';
}
// gebruik een alias voor dit soort gevallen dan kan je gewoon met _fetch_assoc fetchen en benaderen
$sql = "SELECT COUNT(*) AS aantal
FROM leden
WHERE gebruikersnaam='".mysql_real_escape_string($_SESSION['gebruiker'])."'
AND geld_einddatum > NOW()";
if (($result = mysql_query($sql)) === false) {
// foutafhandeling
echo 'Fout met database.';
if (DEBUG_MODE) {
showSQLError($sql,mysql_error());
}
}
else {
if (mysql_num_rows($result) == 1) {
$sql = "SELECT DATE_FORMAT(geld_einddatum, '%H:%i uur op %d-%m-%Y') AS tijdstip
FROM leden
WHERE gebruikersnaam = '".mysql_real_escape_string($_SESSION['gebruiker'])."'";
if (($result = mysql_query($sql)) === false) {
// foutafhandeling
echo 'Fout met database.';
if (DEBUG_MODE) {
showSQLError($sql,mysql_error());
}
}
else {
$row = mysql_fetch_assoc($result);
echo 'U moet nog wachten tot '.$row['tijdstip'];
}
}
else {
$verdiend = rand(50, 200);
echo 'U verdiende '.$verdiend;
$sql = "UPDATE leden
SET geld_einddatum = NOW() + INTERVAL 1 MINUTE
, contant = contant + ".$verdiend."
WHERE gebruikersnaam='".mysql_real_escape_string($_SESSION['gebruiker'])."'";
if (($result = mysql_query($sql)) === false) {
// foutafhandeling
echo 'Fout met database.';
if (DEBUG_MODE) {
showSQLError($sql,mysql_error());
}
}
}
}
?>
ini_set('display_errors',1);
error_reporting(E_ALL | E_STRICT);
define('DEBUG_MODE',true);
function showSQLError($sql,$error) {
echo '<pre>Error: '.$error.'<br />'.$sql.'</pre>';
}
// gebruik een alias voor dit soort gevallen dan kan je gewoon met _fetch_assoc fetchen en benaderen
$sql = "SELECT COUNT(*) AS aantal
FROM leden
WHERE gebruikersnaam='".mysql_real_escape_string($_SESSION['gebruiker'])."'
AND geld_einddatum > NOW()";
if (($result = mysql_query($sql)) === false) {
// foutafhandeling
echo 'Fout met database.';
if (DEBUG_MODE) {
showSQLError($sql,mysql_error());
}
}
else {
if (mysql_num_rows($result) == 1) {
$sql = "SELECT DATE_FORMAT(geld_einddatum, '%H:%i uur op %d-%m-%Y') AS tijdstip
FROM leden
WHERE gebruikersnaam = '".mysql_real_escape_string($_SESSION['gebruiker'])."'";
if (($result = mysql_query($sql)) === false) {
// foutafhandeling
echo 'Fout met database.';
if (DEBUG_MODE) {
showSQLError($sql,mysql_error());
}
}
else {
$row = mysql_fetch_assoc($result);
echo 'U moet nog wachten tot '.$row['tijdstip'];
}
}
else {
$verdiend = rand(50, 200);
echo 'U verdiende '.$verdiend;
$sql = "UPDATE leden
SET geld_einddatum = NOW() + INTERVAL 1 MINUTE
, contant = contant + ".$verdiend."
WHERE gebruikersnaam='".mysql_real_escape_string($_SESSION['gebruiker'])."'";
if (($result = mysql_query($sql)) === false) {
// foutafhandeling
echo 'Fout met database.';
if (DEBUG_MODE) {
showSQLError($sql,mysql_error());
}
}
}
}
?>
bedankt noppes, aan deze post heb ik veel geleerd. Maar er klopt nog iets niet aan je script want er staat altijd dat je nog moet wachten!
1. ik heb het een en ander alleen overzichtelijker gemaakt
2. de fout eruit gehaald
3. debug code erin gezet
4. foutafhandeling veranderd
Voor de rest is het dus jouw script logica...dd 14/10/2010 16:45:57, daar heb ik niets aan veranderd (?)
Ik zoek nog wel even verder
Toevoeging op 14/10/2010 19:02:34:
Ik heb de fout gevonden, er wordt altijd een 1 weergeven bij de num_rows, ik zal even kijken hoe dit komt.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$row = mysql_fetch_assoc($result);
// if (mysql_num_rows($result) == 1) {
if ($row['aantal'] == 1) {
?>
$row = mysql_fetch_assoc($result);
// if (mysql_num_rows($result) == 1) {
if ($row['aantal'] == 1) {
?>
Gewijzigd op 14/10/2010 19:10:59 door Noppes Homeland
$tel = mysql_result($result, 0);
je hoeft maar wat aan de query te wijzigen en dit is niet meer gelijk aan het resultaat van de count(*)
Je moet dan meer code wijzigen dan dat je lief is en anders is het alleen maar code toevoegen.
thx zeer duidelijk