PDA

Vollstndige Version anzeigen : Top 5 Liste


Muenchbach
14-02-2002, 17:52
Hi

will fr meinen Besuchertausch Dienst eine Top5 Liste mit den meisten Referals machen.
Die DB Struktur ist so aufgebaut:

ID | geworbenvon | account | ..
=============================
1 | (leer) | Muenchbach |
2 | Muenchbach | test |
3 | Muenchbach | test 2 |
4 | test | test 3 |

Account "Muenchbach" hat also 2 Referals und Account "test" hat 1 Referal.
Jetzt soll das sortiert nach den meisten Referals angezeigt werden und auf 5 begrenzt (.. limit 5 ?).

Mit diesem Code mache ich das aber das es nach den meisten Referals sortiert geht nicht , weil ich nicht weiss man was abfragen muss :-(


<?
$a=mysql_query("select * from bannertausch");
while($b=mysql_fetch_object($a))
{

$daten1 = mysql_query("select count(*) as insg from bannertausch where geworbenvon like '$b->account' and status = '1' ");
$daten2 = mysql_fetch_array($daten1);

// Hier mache ich eine Tabelle:
print ("Account: $b->account, Referals: $daten2[insg]<br>");

}
?>

Matthias
14-02-2002, 18:50
So mut du deine SQL Abfrage formulieren:

mysql_query("select geworbenvon,count(geworbenvon) as total from bannertausch group by geworbenvon order by total desc limit 5");

So mach jetzt Feierabend
Matthias

Muenchbach
14-02-2002, 20:07
danke, hat geklappt :D


Nachtrag:
ups, doch nicht


Der Code:

<?
$a=mysql_query("select * from bannertausch ");
while($b=mysql_fetch_object($a))
{
$i++;


$daten1 = mysql_query("select account,website,geworbenvon,count(geworbenvon) as total from bannertausch where geworbenvon='$b->account' group by geworbenvon order by total desc limit 5 ");
$daten2 = mysql_fetch_array($daten1);

//Tabelle
print ("User: $b->account Referals: $daten2[total]");

}
?>

listet die Accounts nach Account auf, aber nicht nach den Referals sortiert.

wenn ich es so mache:

<?
$a=mysql_query("select account,website,geworbenvon,count(geworbenvon) as total from bannertausch group by geworbenvon order by total desc limit 5");
while($b=mysql_fetch_object($a))
{

//Tabelle
print ("User: $b->account Referals: $b->tota]");

}
?>

dann listet er meinen Account (mit 0 Refs) als erstes und zeigt 5 Referals an, 5 ist aber die Mitgliederzahl insg...

Wo liegt mein Fehler?

Matthias
15-02-2002, 11:02
print ("User: $b->account Referals: $b->tota]"); <--- Schau mal hier. Wenn du total schreibst sollte es funktionieren :))))

Muenchbach
15-02-2002, 15:06
Hi

nein, geht leider nicht.. ich erhalte

Muenchbach: 8
x 1
x 2


jedoch habe ich keine Referals, die anderen auch nicht. :-(


hmm.. also insg. gibt es 11 Mitglieder.
Mitglied 1 bin ich, habe mir jetzt 2 Referals bei Account 1 eingestellt. Account 2 hat keine Referals und erhalte:

User: (account1) Referals: 9
User: (account2) Referals: 2

bei Account 2+3 steht lediglich unter "Geworbenvon" mein Account "Muenchbach" drin.

Ist vielleicht ein bischen kompliziert erklrt, aber ich hoffe du kannst mir weiterhelfen

Matthias
15-02-2002, 16:13
?? Erklr mal bitte wie die Ausgabe genau aussehen soll.
Also am besten wie oben die Tabelle hier rein schreiben (komplett) und wie es dann bei der ausgabe aussehen soll.

Muenchbach
25-02-2002, 14:41
Hallo

hier der Code mit Beispieldaten:


<div align="center">
<table width="523" border="1" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF" bgColor="#336699">
<tr>
<td height="22" valign="top" bordercolor="#336699" colspan="4">
<div align="center"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF"><b>
Top5</b></font></div>
</td>
</tr>
<tr>
<td valign="top" colspan="4" bordercolor="#336699" height="21">
<div align="center"><font face="Arial, Helvetica, sans-serif"><b><font color="#FFFFFF">Bannertausch</font></b></font></div>
</td>
</tr>
<tr>
<td width="94" height="21" valign="top" bordercolor="#336699">
<div align="center"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF"><b>Platz:</b></font></div>
</td>
<td width="125" valign="top" bordercolor="#336699">
<div align="center"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF"><b>Mitglied:</b></font></div>
</td>
<td width="176" valign="top" bordercolor="#336699">
<div align="center"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF"><b>Website:</b></font></div>
</td>
<td width="118" valign="top" bordercolor="#336699">
<div align="center"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF"><b>Referals:</b></font></div>
</td>
</tr>
<tr>
<td height="21" valign="top" bordercolor="#336699">
<div align="center"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF">1
</font></div>
</td>
<td valign="top" bordercolor="#336699">
<center>
<font face="Arial, Helvetica, sans-serif" color="#FFFFFF">test </font>
</center>
</td>
<td valign="top" bordercolor="#336699">
<center>
<font face="Arial, Helvetica, sans-serif" color="#FFFFFF">http://www.Test.de</font>
</center>
</td>
<td valign="top" bordercolor="#336699">
<center>
<font face="Arial, Helvetica, sans-serif" color="#FFFFFF">12 </font>
</center>
</td>
</tr>
<tr>
<td height="21" colspan="4" valign="top" bordercolor="#336699">&nbsp;</td>
</tr>
</table>
</div>


Robin

Matthias
25-02-2002, 19:09
Hmmm.
Ist Referals auch eine Spalte in der db??
Dann wre es ja ganz einfach.

$a=mysql_query("select account,website,geworbenvon from bannertausch order by referals desc limit 5");

Hab ichs jetzt :)))

Das ist wieder ne schwierige Geburt :))
Matthias

Muenchbach
25-02-2002, 19:15
Hi

ne Referals gibts nicht, diese Variable muss erst gecountet werden ;)
hehe, das wird noch was *g*

also wie hier:

ID | geworbenvon | account | ..
=============================
1 | (leer) | Muenchbach |
2 | Muenchbach | test |
3 | Muenchbach | test 2 |
4 | test | test 3 |

da muss man dann wohl erst die "geworbenvon"s der Accounts zusammenzhlen und dann nach geworbenvon (limit5) anzeigen lassen, oder?

Matthias
27-02-2002, 11:49
Ich hab das gefhl das wir aneinander vorbei reden :))))

Aber ich glaube ich habs jetzt kapiert. Mu aber selber erst ein bichen testen.

Schick mir mal bitte die Tabelle. Dann mu ich mir die nicht nachbauen. Du kannst mit phpmyadmin die Daten in eine Datei speichern.

Matthias