[PHP MySQL] Problem mit Bannervergütung

BouncingZ

LoseBanner.de.vu
ID: 243668
L
18 Juni 2006
687
15
Hai

PHP:
<?php
if(!isset($_GET[option])) {
?>
<b>Bitte warten Sie 12 Sekunden um die Vergütung zu erhalten</b>
<?php
}
if($_GET[option] == "pay") {
  include("mysql-connect.php");
  $username = $_COOKIE[username];
  $time = time();
  $query1 = mysql_query("SELECT * FROM banner WHERE bid = '$_GET[id]'");
  while($row1 = mysql_fetch_array($query1)) {
    $lose = $row1[lose];
    $reload = $row1[reload];
  }
  $query2 = mysql_query("SELECT * FROM banner_reload WHERE username = '$username' AND banner_id = '$bid'");
  $nums1 = mysql_num_rows($query2);
  if($nums1 == 0) {
    $query3 = mysql_query("SELECT * FROM banner_reload WHERE username = '$username' AND banner_id = '$bid'");
    while($row2 = mysql_fetch_array($query3)) {
       $timeclick = $row2[timestamp];
    }
  $timestamp = time();
  $reloadtime = $reload * 60 * 60;
  $timestamp_click = $timeclick + $reloadtime;
    if($timestamp <= $timestamp_click) {
      echo "<b>Fehler: Paidbanner ist in der Reloadsperre!</b>";
    }
    else {
      $query4 = mysql_query("UPDATE users SET klicks = klicks + '1' WHERE username = '$username'");
      $query5 = mysql_query("UPDATE users SET paidbanner = paidbanner + '$lose'");
      $query6 = mysql_query("INSERT INTO `banner_reload` ( `id` , `banner_id` , `username` , `timestamp` )
VALUES (
NULL , '$_GET[id]' , '$username' , '$time()'
);");
      echo "<b>Erfolgreich: $lose Lose Gutgeschrieben!</b>";
    }
  }
}
?>

Habs diesmal mit Tabs versucht! Wenn es keinen Eintrag in banner_reload gibt, dann funzt alles, aber wenn ein Eintrag drin ist (egal ob Aktuell oder Verfallen) dann wird nichts ausgegeben!

woran liegt das?

Andy
 
der code schaut für mich irgendwie strange aus...

PHP:
mysql_query("INSERT INTO `banner_reload` ( `id` , `banner_id` , `username` , `timestamp` )
VALUES (
NULL , '$_GET[id]' , '$username' , '$time()'
);");

hätte ich so gelöst (falls id primär geschlüsselt mit automatischem eintrag is...)

PHP:
mysql_query("INSERT INTO banner_reload
VALUES ('' , '".$_GET['id']."' , '$username' , '".time()."'
);");

soll das eine variable $time oder die funktion time() sein? ich nahm mal an, dass das die funktion sein soll.. und bei mysql setze ich generell immer einen array durch eine Unterbrechung ein... also '".$ar['array']."' yoar das wars eigentl....

x3ntar
 
PHP:
<?php
if($_GET[option] == "pay") {
  include("mysql-connect.php");
  $username = $_COOKIE[username];
  $time = time();
  $query1 = mysql_query("SELECT * FROM banner WHERE bid = '$_GET[id]'");
  while($row1 = mysql_fetch_array($query1)) {
    $lose = $row1[lose];
    $reload = $row1[reload];
  }
  $query2 = mysql_query("SELECT * FROM banner_reload WHERE username = '$username' AND banner_id = '$_GET[id]'");
  $nums1 = mysql_num_rows($query2);
  if($nums1 == 0) {
    $query3 = mysql_query("SELECT * FROM banner_reload WHERE username = '$username' AND banner_id = '$_GET[id]'");
    while($row2 = mysql_fetch_array($query3)) {
       $timeclick = $row2[timestamp];
    }
  $timestamp = time();
  $reloadtime = $reload * 60 * 60;
  $timestamp_click = $timeclick + $reloadtime;
    if($timestamp <= $timestamp_click) {
      echo "<b>Fehler: Paidbanner ist in der Reloadsperre!</b>";
    }
    else {
      $query4 = mysql_query("UPDATE users SET klicks = klicks + 1 WHERE username = '$username'");
      $query5 = mysql_query("UPDATE users SET paidbanner = paidbanner + $lose");
      $query6 = mysql_query("INSERT INTO banner_reload
VALUES ('' , '".$_GET['id']."' , '$username' , '".time()."'
);"); 
      echo "<b>Erfolgreich: $lose Lose Gutgeschrieben!</b>";
    }
  }
}
?>

Das ist jetzt mein Aktueller Code! Es wird aber nichts ausgegeben (Auf der Seite) Normalerweise müsste "Erfolgreich: 123 Lose Gutgeschrieben!" erscheinen! Tut es aber nicht (nur wenn kein Eintrag in der banner_reload drin ist für den Banner)!

Das ist das problem :/

Andy
 
hm ich konnte auf die schnelle jetzt auch nix finden, aber vielleicht ist hier wer, der grad mehr Zeit hat?

kann ja net so schwer sein...
 
probier das mal aus

PHP:
<?php
if($_GET['option'] == "pay") {
  include("mysql-connect.php");
  $username = $_COOKIE[username];  /* schonmal über $_SESSION nachgedacht */
  $time = time();  /* eigentlich unnötig */
  $query1 = mysql_query("SELECT * FROM banner WHERE bid = '$_GET[id]'");
  while($row1 = mysql_fetch_array($query1)) {
    $lose = $row1[lose];
    $reload = $row1[reload];
  }
  $query2 = mysql_query("SELECT * FROM banner_reload WHERE username = '".$username."' AND banner_id = ".$_GET[id]);
  if(mysql_num_rows($query2) == 0) {
    $query3 = mysql_query("SELECT timestamp FROM banner_reload WHERE username = '".$username."' AND banner_id = ".$_GET[id]);
    while($row2 = mysql_fetch_array($query3)) {
       $timeclick = $row2[timestamp];
    }
  $timestamp = time();  /* wieso ein zweites mal diese time() belegung */
  $reloadtime = $reload * 60 * 60;  /* unnötig */
  $timestamp_click = $timeclick + $reloadtime
    if($timestamp <= $timestamp_click) {
      echo "<b>Fehler: Paidbanner ist in der Reloadsperre!</b>";
    }
    else {
      $query4 = mysql_query("UPDATE users SET klicks = klicks + 1 WHERE username = '$username'");
      $query5 = mysql_query("UPDATE users SET paidbanner = paidbanner + $lose");/* DORT FEHLT DIE WHERE*/
      $query6 = mysql_query("INSERT INTO banner_reload
VALUES (NULL , ".$_GET['id']." , '".$username."' , ".time()."
)"); 
      echo "<b>Erfolgreich: $lose Lose Gutgeschrieben!</b>";
    }
  }
}
?>

und hier mal eine etwas übersichtlichere Form

PHP:
<?php
if($_GET['option'] == "pay") 
{
  include("mysql-connect.php");
  $username = $_COOKIE[username];  /* schonmal über $_SESSION nachgedacht */
  $query1 = mysql_query("SELECT lose, reload FROM banner WHERE bid = ".$_GET[id]);
  while($row1 = mysql_fetch_array($query1)) 
  {
    $lose = $row1[lose];
    $reload = $row1[reload];
  }

  $query2 = mysql_query("SELECT username FROM banner_reload WHERE username = '".$username."' AND banner_id = ".$_GET[id]);
  if(mysql_num_rows($query2) == 0) 
  {
    $query3 = mysql_query("SELECT timestamp FROM banner_reload WHERE username = '".$username."' AND banner_id = ".$_GET[id]);
    while($row2 = mysql_fetch_array($query3)) 
    {
       $timeclick = $row2[timestamp];
    }

    if(time() <= ($timeclick + $reload * 60 * 60)) 
      echo "<b>Fehler: Paidbanner ist in der Reloadsperre!</b>";
    else 
    {
      $query4 = mysql_query("UPDATE users SET klicks = klicks + 1, paidbanner = paidbanner + ".$lose." WHERE username = '".$username);
      $query5 = mysql_query("INSERT INTO banner_reload VALUES (NULL , ".$_GET['id']." , '".$username."' , ".time().")");
 
      echo "<b>Erfolgreich: ".$lose." Lose Gutgeschrieben!</b>";
    }
  }
}
?>

ehm aber das ding ist wirklich strange, mal abgesehen von dem ; im Query:
Wieso ne while wenn du nachher nur eine überprüfung durchführst??
while($row2 = mysql_fetch_array($query3)) {
$timeclick = $row2[timestamp];
}

if(time() <= ($timeclick + $reload * 60 * 60))
Wieso immer SELECT *??

und dann noch einen hinweis
$timeclick + $reload * 60 * 60

stimmt das wirklich??? speicherst du inner db ($reload) stunden ab und keine Minuten??
 
Zuletzt bearbeitet: