1. #1
    Avatar von IceNet
    Registriert seit
    04.12.2011
    Beiträge
    530
    Thanked 470 Times in 167 Posts

    Standard [PHP] .2. Query funktioniert nicht

    Hallo,

    ich hab folgendes Problem:

    Ich habe einen Button, wo man etwas alle 12 Std gratis bekommt.
    Der Timestamp wird zwar gesetzt, aber das was man bekommen soll, wird nicht gutgeschrieben.
    Es gibt keinen Error, es wird der Query einfach nicht "ausgelöst", als würde er nicht existieren..
    Geschaut ob alles richtig geschrieben wurde etc hab ich schon ..

    Hier mal die PHP-Datei:

    Spoiler:
    PHP-Code:
    <?php
    class ShowAmBonusPage extends AbstractPage
    {    
        public static 
    $requireModule 0;
        
        function 
    __construct() 
        {
            
    parent::__construct();
        }
        
        function 
    show()
        {
            global 
    $CONF$LNG$USER$db$resource$UNI;
        
        
        
    $this->tplObj->loadscript('countdown.js');
        
        
    $dm_cost 0;
        
    $am_cost 0;
        
        if(!empty(
    $USER['urlaubs_modus'])){
            
    $this->printMessage($LNG['BonusPack1'], true, array('game.php?page=AmBonus'2));
            die();
        }
        
    $time "1 Day";
        
    $ship1 5000;
        
    $ship2 1000;
        
    $ship3 1;
        
        
    $buy_type HTTP::_GP('buy','');
            
        if(
    $_POST){
                if (
    $buy_type == 'Buy it') {
                    if(
    $USER['antimatter'] >= $am_cost){
                        if(
    $USER['am_bonus_time']+12*60*60 TIMESTAMP){
                            
    $USER['antimatter'] -= $am_cost;
                                
    $GLOBALS['DATABASE']->query("UPDATE ".USERS." set `am_bonus_time` = '".TIMESTAMP."' where `id` = '".$USER['id']."';");
                                
    $GLOBALS['DATABASE']->query("UPDATE ".USERS." set `darkmatter` = `darkmatter` + '".$ship1."', `stardust` = `stardust` + '".$ship3."', `antimatter` = `antimatter` + '".$ship2."'  where `id` = '".$USER['id']."';");
                                
    $this->printMessage($LNG['BonusPack2'], true, array('game.php?page=AmBonus'2));
                            die();
                        }else{
                            
    $this->printMessage($LNG['BonusPack3'], true, array('game.php?page=AmBonus'2));
                            die();
                        }
                    }else{
                        
    $this->printMessage($LNG['BonusPack4'], true, array('game.php?page=AmBonus'2));
                        die();
                    }
                }
                elseif (
    $buy_type == 'Buy it') {
                
                    if(
    $USER['darkmatter'] >= $dm_cost){
                        if(
    $USER['am_bonus_time']+12*60*60 TIMESTAMP){
                                
    $USER['darkmatter'] -= $dm_cost;
                                
    $GLOBALS['DATABASE']->query("UPDATE ".USERS." set `am_bonus_time` = '".TIMESTAMP."' where `id` = '".$USER['id']."';");
                                
    $GLOBALS['DATABASE']->query("UPDATE ".USERS." set `darkmatter` = `darkmatter` + '".$ship1."', `stardust` = `stardust` + '".$ship3."', `antimatter` = `antimatter` + '".$ship2."'  where `id` = '".$USER['id']."';");
                                
    $this->printMessage($LNG['BonusPack2'], true, array('game.php?page=AmBonus'2));
                            die();
                        }else{
                            
    $this->printMessage($LNG['BonusPack3'], true, array('game.php?page=AmBonus'2));
                            die();
                        }
                    }else{
                        
    $this->printMessage($LNG['BonusPack5'], true, array('game.php?page=AmBonus'2));
                        die();
                    }
                }
            }
        
        
    $this->tplObj->assign_vars(array( 
            
    'cost'              => pretty_number($dm_cost),
            
    'time'              => $time,
            
    'status'          => ((($USER['am_bonus_time']+12*60*60) < TIMESTAMP) ? true : (($USER['am_bonus_time']+12*60*60) - TIMESTAMP)),
            
    'ship1'           => pretty_number($ship1),
            
    'ship2'           => pretty_number($ship2),
            
    'ship3'             => pretty_number($ship3),
            
    'dm' => $USER['darkmatter'],
            
    'am' =>    $USER['antimatter'],
        ));


        
    $this->display('page.ambonus.default.tpl');

        }
    }
    ?>


    Nicht wundern das es katastrophal ausschaut, hab's von einer anderen Datei angepasst.

    Wisst ihr vielleicht woran es liegen kann, dass der Query nicht ausgeführt wird?

  2. #2
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.080
    Thanked 9.118 Times in 2.995 Posts
    Blog Entries
    5

    Standard AW: [PHP] .2. Query funktioniert nicht

    Das sieht alles recht wirr aus... Alleine schon der Part:
    PHP-Code:
    if ($buy_type == 'Buy it') {
        
    // [...]
    }
    elseif (
    $buy_type == 'Buy it') {
        
    // [...]

    Macht für mich keinen Sinn und ist wahrscheinlich auch dein Problem (bzw. wird es werden wenn es das noch nicht ist), da der Code in den Abfragen jeweils kopiert zu sein scheint und sich lediglich an zwei Stellen durch den Index in deinem $USER Objekt unterscheidet. Vermutlich wurde der Code kopiert und vergessen anzupassen. Was wirklich passiert musst du selbst debuggen, ohne die Abhängigkeiten zu kennen und das am besten auch mal direkt ausführen zu können kann man da ansonsten nur raten.

    Dein buy-Parameter könnte zum Beispiel in die Hose gehen, weil HTTP-Parameter maskiert übertragen werden. Aus Buy it würde somit Buy%20it. Damit kann man aber auch clientseitig schon Unsinn machen, manche Browser rebellieren wenn das z.B nicht escaped wird. Mangels fehlenden Infos kann das keiner Prüfen. Und was die Methode HTTP::_GP damit anstellt weiß auch nur die Glaskugel: Vielleicht erkennt und dekodiert sie das, vielleicht nicht, möglicherweise macht sie den String auch erst recht kaputt.

    Was so was angeht würde ich sowieso nach Best Practices gehen und überhaupt keine Leerzeichen in URL-Parametern verwenden, damit fällt nämlich schon mal eine vermeidbare Fehlerquelle weg. Nutze CamelCase oder PascalCase. Wenns sein muss kannst du die Wörter auch mit Underscores trennen um deine CodingConventions für Variablennamen auch in den Parametern einzuhalten, falls du welche hast. Was du davon wählst spielt letztendlich keine Rolle: Hauptsache keine Leerzeichen und am besten einheitlich.


Ähnliche Themen

  1. Bildschirm funktioniert (nicht) ?!
    Von iDave im Forum Hardware
    Antworten: 3
    Letzter Beitrag: 15.03.2015, 17:55
  2. [VB] Klick Bot funktioniert nicht :/
    Von ZarneXxX im Forum Hochsprachen
    Antworten: 1
    Letzter Beitrag: 17.07.2014, 04:06
  3. C# Debuggen funktioniert nicht
    Von Gast78236 im Forum Andere
    Antworten: 5
    Letzter Beitrag: 15.07.2014, 20:16
  4. Zeilenumbruch funktioniert nicht :/
    Von ZarneXxX im Forum PHP
    Antworten: 10
    Letzter Beitrag: 22.06.2013, 20:38
  5. [H] DayZ Mod funktioniert nicht...
    Von ryudragon14 im Forum Sonstige Games
    Antworten: 3
    Letzter Beitrag: 09.08.2012, 14:05
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.