• Login
  • Register
  • Zoek
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Filebase Entry
  • More Options

ICTscripters

Dé plek voor IT

Dé plek voor IT

Login

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  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
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  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
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  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
  9. Goedkope domeinnamen
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Syntax 19 januari 2026 om 09:34
  • Developer Gezocht

    Mikevdk 10 januari 2026 om 18:57
  • Op zoek naar de legends

    Syntax 5 januari 2026 om 13:50
  • [FREE] WeFact Hosting module

    Jeroen.G 13 oktober 2025 om 14:09
  • Help testers nodig voor android app Urgent

    urgentotservices 26 september 2025 om 10:21
  • Versio vervanger

    Jeroen.G 25 augustus 2025 om 15:56
  • Afspraken systeem met planbeperking

    Lijno 1 augustus 2025 om 23:04
  • Partner Gezocht om meerdere NFT Collecties op Open Sea te Plaatsen

    NFT Art Designer 1 maart 2025 om 14:08

Marktplaats

  • 321 Nieuwe Domeinnamen December 2025

    shiga 1 januari 2026 om 10:26
  • Meerdere mafia game template te koop

    Syntax 26 december 2025 om 00:07
  • Van een pixelige afbeelding naar een strakke, moderne website

    Syntax 21 december 2025 om 17:05

Cron werkt niet goed

  • Kevin
  • 13 oktober 2012 om 13:16
  • Kevin
    Intermediate
    Ontvangen Reacties
    2
    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'");  
    
    
    ?>
    Toon Meer


    Met vriendelijke groeten,
    kevin

  • Tim
    Enlightened
    Ontvangen Reacties
    77
    Berichten
    3.686
    • 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
    Ontvangen Reacties
    197
    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
    Ontvangen Reacties
    44
    Berichten
    1.986
    • 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
    Intermediate
    Ontvangen Reacties
    2
    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'");  
    }
    ?>
    Toon Meer

    Met vriendelijke groeten,
    kevin

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

  • Tim
    Enlightened
    Ontvangen Reacties
    77
    Berichten
    3.686
    • 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'");  
    
    
    ?>
    Toon Meer

    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
    Master
    Ontvangen Reacties
    102
    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
    Ontvangen Reacties
    44
    Berichten
    1.986
    • 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
    Intermediate
    Ontvangen Reacties
    2
    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'"); 
    }
    ?>
    Toon Meer

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

  • cakemasher
    Developer
    Ontvangen Reacties
    2
    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
    Intermediate
    Ontvangen Reacties
    2
    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
    Ontvangen Reacties
    44
    Berichten
    1.986
    • 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
    Ontvangen Reacties
    2
    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
    Ontvangen Reacties
    44
    Berichten
    1.986
    • 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
    Ontvangen Reacties
    2
    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'");
    Toon Meer

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

  • Kevin
    Intermediate
    Ontvangen Reacties
    2
    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
    Ontvangen Reacties
    44
    Berichten
    1.986
    • 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'");
    Toon Meer

    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
    Intermediate
    Ontvangen Reacties
    2
    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
    Intermediate
    Ontvangen Reacties
    29
    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'");
    Toon Meer
  • Kevin
    Intermediate
    Ontvangen Reacties
    2
    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

Participate now!

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

Maak een account aan Login

ICT Nieuws

  • Fijne feestdagen

    tcbhome 28 december 2025 om 13:55
  • Kritieke update voor Really Simple Security-plug-in

    K.Rens 16 november 2024 om 16:12
  • ING Nederland streeft naar ondersteuning van Google Pay tegen eind februari

    K.Rens 2 november 2024 om 16:09

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

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