+ Antworten
Ergebnis 1 bis 1 von 1

Thema: Creditgutschrift für den Klick auf com_banners

  1. #1
    Neu an Board
    Registriert seit
    18.07.2008
    Beiträge
    1
    Bedankte sich
    0
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Daumen hoch Creditgutschrift für den Klick auf com_banners

    Hallo,
    Ich versuche momentan ein Creditsystem als Belohnung für registrierte User in die com_banners einzubinden. Ich nutze dazu eine Komponente "Paypal Credit System". Jeder registrierte User erhält nach einem Klick auf das Banner einen definierten Betrag X an Creditpunkten auf sein "Konto". Das funktioniert bei mir ja auch (Lokal in Xampp) Aber nun mein Problem: Ich möchte eine Reloadsperre einsetzen, welche die erneute Gutschrift innerhalb von 24 Stunden verhindern soll und komme mit meinen bisherigen Versuchen nicht mehr weiter...

    Mein Versuch bzw. Schritt 1
    ---------------------------------------------------------------------------------
    SQL Table für Reloadsperre (zeit='timestamp' & id='$my->id') erstellt
    ---------------------------------------------------------------------------------
    Code:
    # table reloadsperre
    create table joom_reloadsperre
    ( zeit int(10) default NULL, id varchar(15) default NULL);
    ---------------------------------------------------------------------------------
    Danach zu Schritt 2 folgenden Eintrag in:
    ---------------------------------------------------------------------------------------------------
    JoomlaRoot/administrator/components/com_banners/admin.banners.html.php
    (Zeile 294 bis Zeile 299)
    ----------------------------------------------------------------------------------------------------
    Code:
    <!-- Credits für Clicks auf diesen Banner festlegen -->
               <table class="adminform">
               <tr><td><strong><?php echo _BNR_CREDITS ?></strong></td>
               <td><input type="text" name="credits" value="<?php echo stripslashes($config->credits); ?>"/>
               <?php echo mosToolTip(_BNR_CREDITS_DESC,"PCS - Paypal Credit System"); ?></td><td width="55%">&nbsp;Momentan gesetzte Credits für einen Klick auf diesen Banner:&nbsp;<?php echo $_row->credits; ?></td></tr>
    <!--Paypal Credit System (PCS) Credits Ende-->
    ------------------------------------------------------------------------------------------------------

    Und nun kommt mein Problem, bei dem ich der Verzweiflung nahe bin...

    -------------------------------------------------------------------------------------------------
    JoomlaRoot/components/com_banners/banners.php
    (Zeile 112 bis Ende)
    -------------------------------------------------------------------------------------------------
    Code:
    /**
    /* Function to redirect the clicks to the correct url and add 1 click
    */
    function clickbanner( $bid ) {
    	global $database, $mainframe, $my, $mosConfig_live_site;
    	require_once( $mainframe->getPath( 'class' ) );
    
    /* RELOADSPERRE + PCS CREDITS ANFANG ################################################################## */
        $query = "SELECT FROM (*) AS numrows "
    	. "\n FROM #__reloadsperre"
    	. "\n WHERE id='$my->id'"
    	;
    	  $database->setQuery( $query );
    	  $numrows = $database->loadResult();
    
     if ($numrows < 1) {
           $zeit = time();
           $database->setQuery("INSERT INTO #__reloadsperre (zeit, id) VALUES ('$zeit', '$my->id')");
           $database->query();
    
    /** PCS Paypal Credit System Start - Wenn User noch nicht geklickt, dann + X Credits buchen!
    /*  ... Bannerklickcredits ($bid) aus Datenbank holen und
    /*      zusammenaddiertes Ergebnis (credit+$credits) in die Datenbank Updaten */
    
           $database->setQuery("SELECT credits FROM #__banner WHERE bid='$bid'");
           $credits = $database->loadResult();
           $database->setQuery("UPDATE #__users SET credit= credit+'$credits' WHERE id='$my->id'");
           $database->query();
         }
    
    /** ODER... User hat schon geklickt und bekommt 0 Credits hinzuaddiert (SQL_Abfragen wie oben) */
       else {
            $database->setQuery("SELECT credits FROM #__banner");
            $credits = $database->loadResult();
            $database->setQuery("UPDATE #__users SET credit= credit+0 WHERE id='$my->id'");
            $database->query();
            }
    
    /** Reloadsperre = 24 Stunden (Angabe in Sekunden) -> $del = neuerTimestamp */
      $del = $zeit - 86400;
    
    /** Lösche alle Einträge ($my->id) wenn gespeicherter Timestamp "älter" als 86400 Sekunden ist! */
      $database->setQuery("delete from #__reloadsperre where zeit < $del");
      $database->query();
    
    /* RELOADSPERRE + PCS CREDITS ENDE ##################################################################*/
    
    	$row = new mosBanner($database);
    	$row->load((int)$bid);
    	$row->clicks();
    	$pat = "http.*://";
    
    	if (!eregi( $pat, $row->clickurl )) {
    
    		$clickurl = "http://$row->clickurl";
    		$clickcredit = "1";
    	} else {
    
    		$clickurl = $row->clickurl;
    	}
    
    	mosRedirect( $clickurl );
    }
    Der momentan eingeloggte User bekommt ja auch die definierten Credits (aus Schritt 2) gutgeschrieben, jedoch bei jedem Klick auf das Banner...
    Ich weis nicht, wiso die Reloadsperre nicht anspricht... Findet jemand meine Denkfehler oder gibt's eine ander Lösung?? Ich fühle mich langsam wie "Flasche leer", da ja "nur" die Reloadsperre nicht funxen will...
    Eine Regelung für "Gastuser" benötige ich nicht, da sie ja ohnehin kein "Creditkonto" verfügen. (Obwohl man das sicher wie so eine Art "Jackpot" nutzen könnte.)

    Wie gesagt, ich benötige doch etwas Hilfe bzw. Anregungen von euch, da ich nicht unbedingt der Spezialist bin. Ich habe im Code mal so meine Anmerkungen hinterlassen, ich hoffe man versteht was ich damit meine und bezwecken will.
    Dankeschön schon mal im vorraus!

    mfG mark_ozz

    Achso... Ich habe noch vergessen, dass ich für die "Klickcredits" in der Tabelle #__banners eine zusätzliche Zeile eingefügt habe, in der die Credits über das Backend: ->Components->Banner->Bannerverwaltung... gespeichert werden. (Für jedes einzelne Banner extra) Somit kann für jeden Werbebanner eine eigene Anzahl von "Credits" oder "Lose" festgelegt werden. Das funktioniert auch, jedoch die Reloadsperre halt nicht!
    Hat jemand eine Idee ??????

    EDIT: Ich habe mal so richtig ausgeschlafen... und das Problem heute allein hinbekommen, den Fehler in der Datenbankabfrage ($query = "SELECT FROM (*) AS numrows") gelöst! (wie dumm von mir) Dann habe ich noch die Funktionen in die richtige Reihenfolge gebracht und siehe da... es klappt so wie gewollt!!! Also->Problem gelöst !
    mfG mark_ozz
    Geändert von mark_ozz (19.07.2008 um 20:26 Uhr) Grund: Problem von selbst gelöst...
    Gut sehen kann ich schlecht, aber schlecht hören kann ich sehr gut!

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein