[PHP/MySQL] Fehler bei Paidbannerausgabe (Neues Problem)

BouncingZ

LoseBanner.de.vu
ID: 243668
L
18 Juni 2006
687
15
PHP:
$query1 = mysql_query("SELECT * FROM users");

while($row1 = mysql_fetch_array($query1)) {
$werber = $row1[name];
$query2 = mysql_query("SELECT * FROM users WHERE werber = 'Admin'");
while($row2 = mysql_fetch_array($query2)) {
$ref = $row2[username];
echo $ref."<br>\n";
$query3 = mysql_query("SELECT * FROM statistik WHERE username = '$ref'");
while($row3 = mysql_fetch_array($query3)) {
$lose = $row3[paidbanner];
$gutschrift_neu = 8 / 100 * $lose;
$gutschrift_complete = $gutschrift_complete + $gutschrift_neu;
echo "$gutschrift_neu<br>";
echo "$gutschrift_complete<br>";
}
}
$query_set = mysql_query("UPDATE statistik WHERE username = '$werber' SET refs = $gutschrift_complete");
}

Das ist mein Code (MySQL-Verbindung steht)! Nur komischerweise wird dem werber nichts gutgeschrieben, und als Output kommt nur

Code:
<br>
<br>

Woran liegt das?

Andy
 
Zuletzt bearbeitet:
Woran liegt das?

Andy

Hi,

anscheinend sind ausgegebene die ausgegebenen Variablen leer (Eigentlich müssten bei 1 User 3 "<br>" kommen).

Mach z.B. mal Debugging mit www.php.net/mysql_num_rows, da ich vermute, dass einige Queries von dir kein Result zurückliefern.

Zur besseren Lesbarkeit deines Quellcodes solltest du dir das Einrücken angewöhnen (Ich empfehle den PEAR-Coding-Standard) - ansonsten bekommt jeder Augenkrebs, wenn er dir helfen will ;)
Dann solltest du kein SELECT * benutzen; Array-Indizes sofern sie ein String sind mit '' bzw. "" umrahmen und auf SQL-Injections achtgeben.

Gruß
 
PHP:
$query2 = mysql_query("SELECT * FROM users WHERE werber = 'Admin'");
[/code] 

[/quote]

Hi

Also wie oben schon gesagt, das macht sinn wenn die Ergebnisse leer sind, also mit mysql_num_rows prüfen lassen wieviele Zeilen vorliegen. Die oben genannte Zeile, soll die so sein ? Als test ? 
Du definierst ja erst $werber = Benutzername, und in der Abfrage wo der Werber ja sinn machen wird, wird ja Admin vorgegeben. 

Gruß

TZE
 
Habe es einfach jetzt alles in die Tabelle users reingepackt, das heißt ich muss nicht mehr zwischen users und statistik rumwechseln! Jetzt geht es!

Danke trotzdem!
 
Habe noch eine Frage, unzwar bei der Stelle, bei der die Paidbanner abgefragt und ausgegeben werden:

PHP:
<?php
$query1 = mysql_query("SELECT * FROM banner ORDER BY lose DESC LIMIT 20");
while($row = mysql_fetch_array($query1)) {
  $bannerid = $row[id];
  $query2 = mysql_query("SELECT * FROM banner_reload WHERE banner_id = '$bannerid' AND username = '$_COOKIE[username]'");
  $nums = mysql_num_rows($query2);
  $number = 1;
  if($nums == 0) {
    echo "<div style='display:inline' id='banner$number'><a href='include/paidbanner.php?id=$row[id]&username=$_COOKIE[username]'       onClick=\"hide_banner('banner$number')\" target=blank><img src='$row[imgurl]' border=0></a></div><br>";
  }
  else {
    $username = $_COOKIE[username];
    $query3 = mysql_query("SELECT * FROM banner_reload WHERE banner_id = '$bannerid' AND username = '$_COOKIE[username]' ORDER BY id DESC");
  while($row2 = mysql_fetch_array($query3)) {
    $timeclick = $row2[timestamp];
  }
  $reload = $row[reload];
  $timestamp = time();
  $reloadtime = $reload * 60 * 60;
  $timestamp_click = $row2[timestamp] + $reloadtime;
  if($timestamp <= $timestamp_click) {
      echo "<div style='display:inline' id='banner$number'><a href='include/paidbanner.php?id=$row[id]' onClick=\"hide_banner('banner$number')\" target=blank><img src='$row[imgurl]' border=0></a></div><br>";
  }
  }
}
?>

(Habs mal mit einschub versucht)

Das problem ist, dass der Banner IMMER ausgegeben wird!

Ich habe mir diese Stelle so gedacht:

PHP:
$reload = $row[reload];
  $timestamp = time();
  $reloadtime = $reload * 60 * 60;
  $timestamp_click = $row2[timestamp] + $reloadtime;
  if($timestamp >= $timestamp_click) {

$timestamp = time() -> Aktueller Timestamp
$reloadtime = $reload * 60 *60 -> Reloadtime ($reload in Stunden) in Sekunden
$timestamp_click = $row2[timestamp] + $reloadtime -> Timestamp bis der Banner wieder ausgegeben werden kann
if($timestamp >= $timestamp_click) { -> WENN $timestamp größer oder gleich wie $timestamp_click ist, wird der Banner ausgegeben


Das Problem ist, dass der banner einfach immer ausgegeben wird! Ich habe die erste Ausgabe (wenn möglich) auch einmal mit einem // davor versehen, aber der Banner wird immernoch ausgegeben, also liegt es an der zweiten abfrage!

Habs geschafft, man kann irgendwie nur eine Abfrage zur Datenbank ($row[timestamp]) machen... Komisch aber jetzt läuft es *freu*

Andy
 
Zuletzt bearbeitet: