Script netjes?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jasper DS

Jasper DS

13/10/2010 22:13:22
Quote Anchor link
hey,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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());
}



?>
 
PHP hulp

PHP hulp

11/01/2025 10:54:37
 
- SanThe -

- SanThe -

13/10/2010 22:33:55
Quote Anchor link
Sorry Jasper, ik vind het niet netjes. Er zit namelijk geen enkele vorm van nette foutafhandeling in. Dat dit script werkt heeft te maken met geluk.
Gewijzigd op 13/10/2010 22:42:47 door - SanThe -
 
Niels K

Niels K

13/10/2010 22:46:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
}
?>


etc
 
Jordy nvt

Jordy nvt

14/10/2010 09:41:13
Quote Anchor link
Is SESSION['gebruiker'] een id van een gebruiker of een naam? Het klinkt als een naam, maar je kan beter met id's werken.
 
Aad B

Aad B

14/10/2010 12:08:41
Quote Anchor link
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.
 
Jordy nvt

Jordy nvt

14/10/2010 12:52:23
Quote Anchor link
Ik heb het niet over het voorbeeldscript, maar over het script van de TS...
 
Jasper DS

Jasper DS

14/10/2010 16:45:57
Quote Anchor link
het id en de naam staan in de sessie maar hier wordt nu even gewerkt met de naam. ik zou ook het id kunnen gebruiken ;)

Toevoeging op 14/10/2010 16:50:23:

Nu werkt het script niet meer... xs

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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.';
}


?>
 
Teun Hesseling

Teun Hesseling

14/10/2010 16:58:14
Quote Anchor link
en wat is de foutmelding dan?
 
Noppes Homeland

Noppes Homeland

14/10/2010 17:49:46
Quote Anchor link
Het loopt stuk op mysql_num_rows!
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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());
            }            
        }
    }
}
      
?>
 
Jasper DS

Jasper DS

14/10/2010 18:43:46
Quote Anchor link
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!
 
Noppes Homeland

Noppes Homeland

14/10/2010 18:57:05
Quote Anchor link
Ik wil niet al te veel schrijven:
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 (?)
 
Jasper DS

Jasper DS

14/10/2010 19:00:13
Quote Anchor link
ja dat vind ik prima ... maar nu werkt het nier meer...
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.
 
Noppes Homeland

Noppes Homeland

14/10/2010 19:07:40
Quote Anchor link
Wel ik denk dat je het resultaat met aantal in die if wilt verwerken ipv te kijken naar num_rows?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$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
 
Jasper DS

Jasper DS

14/10/2010 19:13:01
Quote Anchor link
excuseer, ik had het zo al gedaan en het werkt.. Is dat oke?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

$tel
= mysql_result($result, 0);

    if ($tel == 1) {
//rest van script
?>
 
Noppes Homeland

Noppes Homeland

14/10/2010 19:22:57
Quote Anchor link
Nee, dat vind ik zeer slordig, gebruik altijd maar 1 fetch methode en dan bij voorkeur de _fetch_assoc.

$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.
 
Jasper DS

Jasper DS

14/10/2010 19:25:35
Quote Anchor link
thx zeer duidelijk
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.