Ergebnis 1 bis 4 von 4

Thema: Bannersortirung geht nicht mehr

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Moderator
    Registriert seit
    07.07.2006
    Beiträge
    1.370

    Bannersortirung geht nicht mehr

    Hallo, ich hoffe mal jemand hier hatte das Problem auch schon, bin nun nämlich echt ratlos.

    Gestern meinte ein User ich sollte mal zu den Bannern gucken die seien total durcheinander, obwohl sie nach dem Verdienst geordnet werden..

    Ich habe also gekuckt, und sie sind wirklich durcheinander.

    Ich habe an der klick4.php seit 6 Monaten nichts geändert.

    Habe erstmal alle Banner in der DB gelöscht, das hat aber nicht gebracht.

    Irgendwas läuft das plötzlich schief und ich weiß absolut nicht was.


    Hier mal der DB-Befehl zum Einlesen der Banner, obwohl ich an diesem und den Rest der Klick4 wie gesagt nichts geändert habe.

    PHP-Code:
    $forcedbanner db_query("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE menge >='1' and werbeart = 'forcedbanner' and status = '1' ORDER BY 'verdienst' DESC"); 
    MfG

  2. #2
    Erfahrener Benutzer Avatar von jpwfour
    Registriert seit
    06.02.2008
    Beiträge
    3.717
    Dieser Befehl liest ja alle Banner aus, auch die die im Reload sind und natürlich auch wesentlich mehr, als du maximal anzeigen lässt.

    Wenn du ihn manuell in der Datenbank ausführst, müsste das mit dem ORDER BY auch passen, aber die Datensätze werden dann ja noch weiterverarbeitet.

    Sprich geprüft, ob der Banner im Reload ist, wenn nicht, angezeigt, und das solange bis MAXBANNER erreicht ist.

    Ich würde dir an sich raten, das so umzustellen, dass nur ein Query benötigt wird, der gleich nur Banner ausliest, die nicht im Reload sind, und nur soviele, wie angezeigt werden sollen (siehe VMS1.2.3).

    Wenn du dabei bleiben willst, wäre der Teil mit der "Weiterverarbeitung" auch noch interessant.

    Alternativ mal die Tabelle vms_gebuchte_werbung prüfen und/oder reparieren lassen, evtl ist da nur was mit den Indizes durcheinander, so dass die Sortierung nach dem Verdienst nicht korrekt arbeitet.
    Kill one man, and you are a murderer.
    Kill millions of men, and you are a conqueror.
    Kill them all, and you are a god.
    - Jean Rostand, Thoughts of a Biologist (1939)

  3. #3
    Moderator
    Registriert seit
    07.07.2006
    Beiträge
    1.370
    So, ich habe soeben mal die DB-Tabelle vms_gebuchte_werbung
    (die ich gestern schonmal zum Test geleert hatte) erst geprüft,
    dann repariert und dann optimiert, leider hat auch dies nichts geändert.

    Edit: Ich habe den Ursprung des Fehlers glaube ich gefunden, scheint wohl ein defektes Interface zu sein.

    Denn das letzte was ich gemacht hatte war neue Sponsoren einbinden.

    Werde das mal versuchen nachzuvollziehen und nochmal schreiben was genau rausgekommen ist.

    Edit2:
    Habe nun nochmal genau in der DB geschaut,
    finde leider nichts was verdächtig wäre im Bezug zu den neuen Sponsor.

    Bei gebuchte_werbung stehen genau jene Banner ganz oben die von dem Sponsor kommen, jedoch mit normalen Angaben.

    Also alles ehr seltsam, wenns sein muss wird der sponsor wieder ausgebaut.

    Werde mich eute abend nochmal dran machen, vielleicht hat ja noch wer eine Idee.

    Edit3: Habe eben nochmal testweise selbst Banner geklickt, die werden genau in der Reihenfolge geladen wie sie in der DB stehen, auch die Reloads werden berücksichtigt, nur die Sortierung halt nicht.

    In der DB selbst lassen sie sich aber ordnen.

    Vielleicht liegts doch an der Klick4.

    PHP-Code:
    <?
    userstatus();
    $max_banner = mysql_fetch_array(db_query("SELECT `max_forced` FROM ".$db_prefix."_userdaten WHERE uid=".$_SESSION['uid'].""));
    head("");
    echo '<div align="center"><font color="#FF0000"><b>Jetzt neu, 5000 Lose Bonus wenn alle vorhandenen Banner geklickt wurden!</b></font><br>';
    $forcedbanner = db_query("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE menge >='1' and werbeart = 'forcedbanner' and status = '1' ORDER BY 'verdienst' DESC");
    while($f_banner=mysql_fetch_array($forcedbanner)){
    $int_reload = db_query("SELECT * FROM ".$db_prefix."_reloads WHERE tan='".$f_banner['tan']."' and  (uid='".$_SESSION['uid']."' or ip='".$ip."') and bis >= ".time()."");
            if (!mysql_num_rows($int_reload) && $x_banner <= ($max_banner['max_forced']-1) and $f_banner['verdienst'] < 5000) {
            echo '<div align="center" id="banner_'.$x_banner.'"><a href="fc.php?tan='.$f_banner['tan'].'" target="_blank"><img src="'.$f_banner['banner'].'" border="0" height="60" width="468" alt="" onClick="document.getElementById(\'banner_'.$x_banner.'\').style.display=\'none\';"></a><br>Reload:'. $f_banner['reload']/3600 .' Std. | Verdienst: '.number_format($f_banner['verdienst'],2,',','.').' | Aufenthalt:'.$f_banner['aufendhalt'].' Sekunden<br><b><a href="?content=/verdienen/framebrecher&tan='.$f_banner['tan'].'&sponsor='.$f_banner['sponsor'].'">TAN: '.$f_banner['tan'].'</a></b> << Framebrecher melden<br/><br></div>';

    $x_banner++;
            }
    }
    if ($x_banner <= 0) {
    echo '<div align="center"><font color="#FF0000"><b>Alle Forcedbanner im Reload !</b></font>';
    echo '<div align="center">&nbsp;</div><div align="center"><font color="#FF0000"><b><font size="5">Bonus</font><script language="javascript">window.open(\'content/verdienen/bonusbanner_popup.php?key='.md5($_SESSION['uid']."-".date("H:i")).'\', \'sv\', \'width=610, height=135 scrollbar=no, status=no, resizable=no\')</script></b></font></div><div align="center">&nbsp;</div><div align="center"><b>.: Vielen dank, das du alle Forcedbanner geklickt hast, dafür erhälts du ein Bonus :.</b>';
    echo '<br/><b>.: der Bonus Startet im Popup, bitte PopupBlocker entsprechend deaktivieren:.</b>';
    } else {
    echo '<div align="center"><form action="" method="post"><input type="Submit" name="mehr_banner" value="Weitere Forcedbanner ?"></form></div>';
    }
    foot();
    ?>

    MfG

  4. #4
    Zitat Zitat von Masterphil Beitrag anzeigen
    $forcedbanner = db_query("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE menge >='1' and werbeart = 'forcedbanner' and status = '1' ORDER BY 'verdienst' DESC");[/php]


    Soweit ich das sehe hast du verdienst in ' gesetzt.
    Ist aber das Kennzeichen für einen String. Nimm die entweder ganz rau, oder ersetz sie durch ` oder ´ weiß ich grad nicht genau

    Außerdem solltest du die Reloads nicht für jeden Banner abfragen, sondern einen Left-Join verwenden... Aber das ist nur was Performance-mäßiges...


Ähnliche Themen

  1. Einloggen geht im IE nicht mehr?
    Von cesar im Forum [HD] Programmieren
    Antworten: 10
    Letzter Beitrag: 13.08.2010, 23:25
  2. Mein acc geht nicht mehr?!
    Von Darklord im Forum Support zum VMSone
    Antworten: 9
    Letzter Beitrag: 14.09.2009, 21:10
  3. Module geht nicht mehr
    Von black_empire im Forum Support zu Addons & Erweiterungen
    Antworten: 22
    Letzter Beitrag: 08.05.2009, 02:14
  4. Anmeldung geht nicht mehr
    Von Eclipse16V im Forum Support zum VMSone
    Antworten: 3
    Letzter Beitrag: 07.12.2008, 23:38
  5. Bannerklicken geht nicht mehr
    Von deniz im Forum Support zum VMSone
    Antworten: 7
    Letzter Beitrag: 16.10.2008, 23:50

Berechtigungen

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