• Inloggen
  • Registreer
  • Zoeken
Dit topic
  • Overal
  • Dit topic
  • Dit forum
  • Artikelen
  • Pagina's
  • Forum
  • Downloads
  • Meer opties

ICTscripters

Dé plek voor IT

Dé plek voor IT

Aanmelden

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • [Beta] Ottomaan: gratis browserspel met een echte, levende stad. Feedback gezocht!

    frio 27 oktober 2026 om 12:22
  • Port Father: beta van een browsergame in Antwerpen 1931, feedback welkom

    Jeroen.G 26 oktober 2026 om 10:33
  • Maffia Hotel: een browsergame waarin je van lobbygast naar spil van het hotel groeit

    eeyk 22 oktober 2026 om 18:43
  • Crime Club volledig herschreven vanaf nul

    frio 19 oktober 2026 om 23:57
  • Malavita (nieuwe maffia game, van 0)

    jos 19 oktober 2026 om 23:18
  • Herkent deze Notion-structuurscan echte problemen?

    Jeroen.G 19 oktober 2026 om 15:09
  • 🚀 WE ZOEKEN TESTERS! 🚀

    Servertjee 3 oktober 2026 om 10:56
  • Luchtvaartsoftware: Hoe technologie de moderne luchtvaart verandert

    saggy2829 30 september 2026 om 19:31

Marktplaats

  • [Aanbod] Stadskaart voor je browsergame: van menu naar klikbare stad, vanaf €200

    frio 29 oktober 2026 om 18:17
  • [Verkoop] G4G (Gangsters 4 Gangsters): volledige broncode, nieuw gebouwd in PHP 8.3 | € 30 per domein

    frio 27 oktober 2026 om 18:54
  • [TE KOOP] Malavita.be [Maffiaspel, gebaseerd op omicidio.nl, unieke code]

    Dpm_x 26 oktober 2026 om 00:22

Cron werkt niet goed

  • Kevin
  • 13 oktober 2012 om 13:16
  • Kevin
    Gevorderd
    Berichten
    421
    • 13 oktober 2012 om 13:16
    • #1

    Beste ICTers,

    Ik heb een stukje in mijn cron wat niet werkt.
    Ik wil de top 3 leden elke week resetten, en hun kristallen geven.
    Ik heb standaard op het spel een top 10 staan, dit wordt dus een wedstrijd als ware.

    Maar als de cron week begint reset hij de top 10 niet en geeft hij geen kristallen.
    Wel heb ik al een beetje op google gezocht onder 'Top 10 resetten php'

    Maar ik kwam niet echt verder.

    Hier het stukje code:

    PHP
    <?php 
    $mysqli = mysqli_connect('localhost','gebruiker', 'wachtwoord', 'gebruiker'); 
    if(!$mysqli) 
    { 
        trigger_error('Fout bij verbinden met database: '.mysqli_connect_error()); 
    }  
     //------------------------------------------------------------------------------------------------------------// 
    error_reporting(0); 
    ob_start(); 
    /* Cron dag melden 
    -----------------------------------------------*/ 
    $mysqli->query("UPDATE `cronjob` SET `tijdstip`='".time()."' WHERE `soort`='cron_week'")or die($mysqli->error); 
    
    
    /* Crons uitvoeren 
    -----------------------------------------------*/ 
    
    
    // Advocaat 
    $mysqli->query("UPDATE `[users]` SET `gevangenis_advocaat`=`gevangenis_advocaat`='0'"); 
    
    
    // Geld pakket 
    $geld        =    rand(500,1500000); 
    $mysqli->query("UPDATE `pakket` SET `bedrag`+'".$geld."' WHERE `id`='1'"); 
    
    
    
    
    # Top 3 script  
    // Invoer  
    $tel            = '0'; 
    $prijzenkast    = Array('0', '5', '10', '25', '0'); 
    $input            = $mysqli->query("SELECT `login` FROM `[users]` ORDER BY `actief` WHERE DESC LIMIT 0,3")->fetch_object(); 
    
    
    
    
    // Weergave / uitvoer  
    while ( $output = mysqli_fetch_object($input) )  
    {  
        $tel++;  
        $mysqli->query("UPDATE `[users]` SET `kristallen`+'".$prijzenkast[$tel]."' WHERE `login`='".$input['login']."'"); 
        $mysqli->query("UPDATE `[users]` SET `actief`=`actief`='0'");  
    
    
    ?>
    Meer tonen


    Met vriendelijke groeten,
    kevin

  • Gast, wil je besparen op je domeinnamen? (ad)
  • Tim
    Expert
    Berichten
    3.684
    • 13 oktober 2012 om 13:22
    • #2

    Hallo,

    Wordt het script wel uitgevoerd?
    Wat heb je gedaan om het op te lossen?
    Hoe ben je te werk gegaan met het debuggen?

    Heb je de queries uitgeprint en in phpMyAdmin gedaan om de resultaten te bekijken?

    Mvg,
    Tim

    Master student IT-recht en Master student Ondernemingsrecht & software ingenieur
    My Personal profile
    My professional profile (LinkedIn/CV)

  • Thisguyisgone
    Elite members
    Berichten
    7.880
    • 13 oktober 2012 om 13:28
    • #3

    Zo'n vraag is al gesteld geweest. Kan je aub is zoeken.

  • Luc
    Software Engineer
    Berichten
    1.989
    • 13 oktober 2012 om 13:34
    • #4

    Je gebruikt de OO en normale versie van mysqli door elkaar.

    probeer eens mysqli_query();

    Website: https://devimo.nl
    Skype: https://join.skype.com/invite/dJyYILTt7Eqh

  • Kevin
    Gevorderd
    Berichten
    421
    • 13 oktober 2012 om 13:35
    • #5

    Beste,

    Het script wordt inderdaad gewoon uitgevoerd, want in de database wordt de tijd geüpdatet en de rest van de cron werkt gewoon uitstekend.
    Ik heb op google gezocht naar oplossingen maar hiermee kwam ik niet ver.
    Ik heb gekeken naar het script maar kan geen fouten vinden in het stukje script 'top 3'

    Hierbij mijn vraag of jullie het zien en eventueel kunnen helpen?


    Code
    <?
    # Top 3 script  
    // Invoer  
    $tel            = '0'; 
    $prijzenkast    = Array('0', '5', '10', '25', '0'); 
    $input            = $mysqli->query("SELECT `login` FROM `[users]` ORDER BY `actief` WHERE DESC LIMIT 0,3"); 
    
    
    
    
    // Weergave / uitvoer  
    while ( $output = mysqli_fetch_object($input) )  
    {  
        $tel++;  
        $mysqli->query("UPDATE `[users]` SET `kristallen`+'".$prijzenkast[$tel]."' WHERE `login`='".$input['login']."'"); 
        $mysqli->query("UPDATE `[users]` SET `actief`=`actief`='0'");  
    }
    ?>
    Meer tonen

    Met vriendelijke groeten,
    kevin

    Bewerkt één keer, laatst door Kevin (13 oktober 2012 om 13:40).

  • Tim
    Expert
    Berichten
    3.684
    • 13 oktober 2012 om 13:38
    • #6
    Citaat van Kevin

    Beste,

    Het script wordt inderdaad gewoon uitgevoerd, want in de database wordt de tijd geüpdatet en de rest van de cron werkt gewoon uitstekend.
    Ik heb op google gezocht naar oplossingen maar hiermee kwam ik niet ver.
    Ik heb gekeken naar het script maar kan geen fouten vinden in het stukje script 'top 3'

    Hierbij mijn vraag of jullie het zien en eventueel kunnen helpen?


    Code
    <?
    # Top 3 script  
    // Invoer  
    $tel            = '0'; 
    $prijzenkast    = Array('0', '5', '10', '25', '0'); 
    $input            = $mysqli->query("SELECT `login` FROM `[users]` ORDER BY `actief` WHERE DESC LIMIT 0,3")->fetch_object(); 
    
    
    
    
    // Weergave / uitvoer  
    while ( $output = mysqli_fetch_object($input) )  
    {  
        $tel++;  
        $mysqli->query("UPDATE `[users]` SET `kristallen`+'".$prijzenkast[$tel]."' WHERE `login`='".$input['login']."'"); 
        $mysqli->query("UPDATE `[users]` SET `actief`=`actief`='0'");  
    
    
    ?>
    Meer tonen

    Met vriendelijke groeten,
    kevin


    Hallo,

    Drie dingen:
    Al eens gekeken bij je webmail om te zien ofje Cron foutmeldingen geeft?
    Gebruik je wel een goede programma? Want ik zie zo een fout welke een programma zo aangeeft.
    Zoals gezegd is gebruik je mysqli niet altijd als object.

    Mvg,
    Tim

    Master student IT-recht en Master student Ondernemingsrecht & software ingenieur
    My Personal profile
    My professional profile (LinkedIn/CV)

  • Victor
    Meester
    Berichten
    1.680
    • 13 oktober 2012 om 13:38
    • #7

    Zet er foutafhandeling in en laat de output van de cronjob naar je e-mail adres versturen. Mocht er wat fout zijn met het script of de cron staat dat in die e-mail.

    Met vriendelijke groet,

    Victor
    Beheerder ICTscripters

  • Luc
    Software Engineer
    Berichten
    1.989
    • 13 oktober 2012 om 13:40
    • #8
    Code
    $mysqli->query("UPDATE `[users]` SET `kristallen`=`kristallen`+'".$prijzenkast[$tel]."' WHERE `login`='".$input['login']."'");

    Verder is object deze versie: ->

    en is assoc zo: []

    dus:

    Code
    $output = mysqli_fetch_object($input)

    moet worden

    Code
    $output = mysqli_fetch_assoc($input)

    Website: https://devimo.nl
    Skype: https://join.skype.com/invite/dJyYILTt7Eqh

  • Kevin
    Gevorderd
    Berichten
    421
    • 13 oktober 2012 om 13:42
    • #9

    Ik heb dit nu als script maar de prijzen doen het alleen nog niet het resetten naar 0 wel.
    iemand enig idee?

    Code
    <?
    # Top 3 script 
    // Invoer 
    $tel            = '0';
    $prijzenkast    = Array('0', '5', '10', '25', '0');
    $input            = $mysqli->query("SELECT `login` FROM `[users]` ORDER BY `actief` LIMIT 3");
    
    
    // Weergave / uitvoer  
    while ( $output = mysqli_fetch_assoc($input) )  
    { 
    $mysqli->query("UPDATE `[users]` SET `kristallen`+'".$prijzenkast[$tel]."' WHERE `login`='".$output['login']."'");
    $mysqli->query("UPDATE `[users]` SET `actief`='0'"); 
    }
    ?>
    Meer tonen

    Bewerkt 3 keer, laatst door Kevin (13 oktober 2012 om 15:04).

  • cakemasher
    Developer
    Berichten
    225
    • 13 oktober 2012 om 15:18
    • #10

    Kijk eens naar je query:

    PHP
    $mysqli->query("UPDATE `[users]` SET `actief`='0'");

    je UPDATE [users] en set actief naar 0. Nu vragen ik en de query zich af.. Bij welke persoon wil je dit gaan doen?

    Daarnaast moet je echt gaan werken met fout afhandeling, zoals hier ga je er vanuit dat de query gelukt is terwijl dat niet zo is. (tenzij dit in je $mysqli class zit verwerkt..).

    mvg,
    cakemasher

  • Kevin
    Gevorderd
    Berichten
    421
    • 13 oktober 2012 om 15:24
    • #11
    Citaat van cakemasher

    Kijk eens naar je query:

    PHP
    $mysqli->query("UPDATE `[users]` SET `actief`='0'");

    je UPDATE [users] en set actief naar 0. Nu vragen ik en de query zich af.. Bij welke persoon wil je dit gaan doen?

    Daarnaast moet je echt gaan werken met fout afhandeling, zoals hier ga je er vanuit dat de query gelukt is terwijl dat niet zo is. (tenzij dit in je $mysqli class zit verwerkt..).

    mvg,
    cakemasher

    Dit is bij alle leden, want anders wordt alleen de top 3 gereset en ik moet iedereen hebben.

    met vriendelijke groeten,
    kevin

  • Luc
    Software Engineer
    Berichten
    1.989
    • 13 oktober 2012 om 15:29
    • #12

    Misschien mijn post niet negeren, daar staat hoe je het uit moet keren...

    Website: https://devimo.nl
    Skype: https://join.skype.com/invite/dJyYILTt7Eqh

  • cakemasher
    Developer
    Berichten
    225
    • 13 oktober 2012 om 16:41
    • #13

    In dat geval gaat er iets fout in je query. Zoals ik al eerder vermelde, ga ik er van uit dat jij op foutmeldingen checkt in je class. Gebeurt dit niet, regel dit dan voordat je deze vragen gaat stellen.

    Een opmerk: Je voert de while 3x uit, daarin zet je de query om de hele tabel te veranderen ook in. Dit houd in dat jij de query nu 3x uit voert wat niet nodig is.

    PHP
    // Invoer 
    	$tel			= '0';
    	$prijzenkast	= Array ('0', '5', '10', '25', '0');
    	$input			= $mysqli->query ("SELECT `login` FROM `[users]` ORDER BY `actief` LIMIT 3");
    	
    	// Weergave / uitvoer  
    	while ( $output = mysqli_fetch_assoc ($input) )  
    		$mysqli->query ("UPDATE `[users]` SET `kristallen` + '" . $prijzenkast[$tel] . "' WHERE `login`='" . $output['login'] . "'");
    	
    	$mysqli->query ("UPDATE `[users]` SET `actief` = '0'");

    waarbij ik de { en } weg gehaald hebt, zodat alleen de lijn na de while bij de while hoort, en alles wat erna komt niet meer.
    Dit houd in dat de while alleen de update query voor de kristallen 3x uitvoert, en zodra hij daarmee klaar is, de laatste query uitvoert.

    Als het gehele systeem niet werkt, gaat er iets fout in je query. Zoals jij zelf al eerder aangegeven had, update je de hele tabel. Ik heb dit even getest (aangezien ik anders beweerde) en het werkte inderdaad. (ik werk hier nooit mee, dus wist dat niet ^^).

    Luc: hij had 't wel al veranderd in z'n script.

  • Luc
    Software Engineer
    Berichten
    1.989
    • 13 oktober 2012 om 16:49
    • #14

    Nee hoor, bekijk mijn allerbovenste regel maar goed, dat is de oplossing voor de 'kristallen'

    Hij heeft alleen het 2e deel van mijn post toegepast

    Code
    $mysqli->query("UPDATE `[users]` SET `kristallen`=`kristallen`+'".$prijzenkast[$tel]."' WHERE `login`='".$input['login']."'");

    Nu zal de query moeten werken, je moet zorgen dat de kristallen omhoog gaan, dat doe je door eerst te vertellen dan het op de kolom kristallen gaat, vervolgens ga je het ophogen, je wil dat de huidige kristallen blijven staan dus roep je weer eerst kristallen aan en vervolgens + de kristallen uit de array.

    Let op, je array[0] beval 0 dingen maar wordt wel aangeroepen als eerste, dus degene die 3e staat krijgt nu geen extra kristallen.

    Website: https://devimo.nl
    Skype: https://join.skype.com/invite/dJyYILTt7Eqh

  • cakemasher
    Developer
    Berichten
    225
    • 13 oktober 2012 om 17:09
    • #15

    Je hebt gelijk Luc, hoewel de $input['login'] niet zal werken.. Tenzij zijn $mysqli class bij een ->query de boel meteen om zet naar een array. Maar hier ga ik niet van uit.

    Het volgende zou dus moeten werken:

    PHP
    // Een telling bij houden.
        $tel			= 0;
        
        // De prijzen die er te winnen vallen.
    	$prijzenkast	= Array ('5', '10', '25');
    	
    	// De mysqli query uitvoeren en hierbij de hoogste? 3 uitpakken.
    	$input			= $mysqli->query ("SELECT `login` FROM `[users]` ORDER BY `actief` LIMIT 3");
    	
    	// Een while uitvoeren waarbij de data van de vorige query word geselecteerd.
        while ($output = mysqli_fetch_assoc ($input))
        {
        	// Een query uitvoeren waarbij de kristallen worden opgeteld bij de $output['login'] user.
        	$mysqli->query ("UPDATE `[users]` SET `kristallen` = `kristallen` + '" . $prijzenkast[$tel] . "' WHERE `login`='" . $output['login'] . "'");    
        	
        	// +1 bij $tell.
        	$tell++;
        }
    
    
    	// De gehele [users] tabel updates zodat iedereen value 0 krijgt in actief.
        $mysqli->query ("UPDATE `[users]` SET `actief` = '0'");
    Meer tonen

    Hierbij heb ik de '0' bij prijzenkast ook verwijderd, aangezien ik aan kan nemen dat de winnaar niet 0 kristallen wint.

  • Kevin
    Gevorderd
    Berichten
    421
    • 14 oktober 2012 om 11:35
    • #16

    Ik heb even gekeken naar de posts, en ik zie dat er al behoorlijk wat uitleg is geweest.

    Ook het script van cakemasher heb ik even getest.
    Maar blijkt dat hij de kristallen nog niet weggeeft.

    Daarbij heb ik even gekeken of alles klopt en alles klopt met de database.

    met vriendelijke groeten,
    kevin

  • Luc
    Software Engineer
    Berichten
    1.989
    • 14 oktober 2012 om 11:58
    • #17
    Code
    // Een telling bij houden.
        $tel            = 0;
        
        // De prijzen die er te winnen vallen.
        $prijzenkast    = Array ('5', '10', '25');
        
        // De mysqli query uitvoeren en hierbij de hoogste? 3 uitpakken.
        $input            = mysqli_query ("SELECT `login` FROM `[users]` ORDER BY `actief` DESC LIMIT 3");
        
        // Een while uitvoeren waarbij de data van de vorige query word geselecteerd.
        while ($output = mysqli_fetch_assoc ($input))
        {
            // Een query uitvoeren waarbij de kristallen worden opgeteld bij de $output['login'] user.
            mysqli_query ("UPDATE `[users]` SET `kristallen` = `kristallen` + '" . $prijzenkast[$tel] . "' WHERE `login`='" . $output['login'] . "'");    
            
            // +1 bij $tell.
            $tell++;
        }
    
    
        // De gehele [users] tabel updates zodat iedereen value 0 krijgt in actief.
        mysqli_query ("UPDATE `[users]` SET `actief` = '0'");
    Meer tonen

    Anders overal even or die(mysqli_error()) achterzetten om zo te fout te ontdekken.

    Website: https://devimo.nl
    Skype: https://join.skype.com/invite/dJyYILTt7Eqh

  • Kevin
    Gevorderd
    Berichten
    421
    • 14 oktober 2012 om 12:17
    • #18

    Ik heb het ook even getest om er +'2' bij te zetten achter kristallen.
    maar hij geeft geen kristallen.

    dus de fout moet ergens inzitten bij de kristallen.

    met vriendelijke groeten,
    kevin

    Bewerkt één keer, laatst door Kevin (15 oktober 2012 om 21:58).

  • DirkZz
    Gevorderd
    Berichten
    213
    • 16 oktober 2012 om 23:46
    • #19

    :P Je pakt ook 3 users gebaseerd op het actief zijn, of is het veld actief een soort punten telling?

    En in het script van cakemasher zit ook een typo, $tell ipv $tel.
    Misschien zo?

    (cakemasher zijn code, klein beetje aangepast)

    PHP
    // Een telling bij houden.
        $tel            = 0;
        
        // De prijzen die er te winnen vallen.
        $prijzenkast    = Array ('5', '10', '25');
        
        // De mysqli query uitvoeren en hierbij de hoogste? 3 uitpakken.
        $input            = $mysqli->query ("SELECT `login` FROM `[users]` ORDER BY `actief` LIMIT 3");
        
        // Een while uitvoeren waarbij de data van de vorige query word geselecteerd.
        while ($output = mysqli_fetch_assoc ($input))
        {
            // Een query uitvoeren waarbij de kristallen worden opgeteld bij de $output['login'] user.
            $mysqli->query ("UPDATE `[users]` SET `kristallen` = `kristallen` + '" . $prijzenkast[$tel] . "' WHERE `login`='" . $output['login'] . "'");    
            
            // +1 bij $tel.
            $tel++;
        }
    
    
        // De gehele [users] tabel updates zodat iedereen value 0 krijgt in actief.
        $mysqli->query ("UPDATE `[users]` SET `actief` = '0'");
    Meer tonen
  • Kevin
    Gevorderd
    Berichten
    421
    • 18 oktober 2012 om 11:42
    • #20

    Ja klopt,

    Ik heb dit even getest en bekeken, en er zit een fout dat de 'login' van de 3 spelers niet gepakt kan worden.

    Dus dan moet de fout in deze code zitten:

    Code
    <?
    $input            = $mysqli->query ("SELECT `login` FROM `[users]` ORDER BY `actief` LIMIT 3");
    ?>

    Maar dit heb ik dus nog even op google gezocht, maar kom niet ver tussen de oude mysql en de nieuwe mysqli..

    Met vriendelijke groeten,
    kevin

Registratie

Nog geen account? Registreer je nu en word deel van onze community!

Nu registreren Aanmelden

ICT Nieuws

  • PHP waarschuwt voor twee ernstige bugs die makkelijk uit te buiten lijken

    Aaron 22 oktober 2026 om 22:19

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37

Gebruikers die dit topic bekijken

  • 5 Gasten
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacyverklaring
  10. Contact
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design