Nur ein Bild pro User??

Begonnen von NeMeSiSX2LC, 14 Juni 2005, 10:05:34

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 2 Gäste betrachten dieses Thema.

NeMeSiSX2LC

Hi, ich hab ein problem wollte in einer Top 10 Anzeigen nur das beste Bild eines User Anzeigen lassen.

Hier die Abfrage:

select * from ".$prefix."_tabelle where (gender='".$_REQUEST['cat']."') and (rating > '0') and (voters > '100') and (points > '200') and checked='1' group by uname order by rating DESC limit 10

So damit sehen ich zwar nur noch ein bild pro User in den Top 10 aber nicht das best bewerteste. Sonder das zweit Beste oder so.

Nun was daran falsch?
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

Andi

Hi :)

so einfach geht das nicht...
Kann's jetzt aber auch nicht testen oder aus dem Stehgreif sagen wie...

Schick mir mal nen gefüllten Dump der Tabelle
schön´s Grüssle, Andi

NeMeSiSX2LC

jut ist weitergeleitet kommt ;)
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

wob

Sie haben POST ( Andi )


Mfg Rene
Ideen sind immer gut, nur diese Idee`n umsetzen ist eine andere frage :-)

Andi

#4
Hi :)
mal ne verständnisfrage...

Was ist das beste Bild eines Users?
Das mit dem höchsten rating, das mit den höchsten points, oder gibt es da irgend eine Berechnungsformel?

Noch ne Frage...
Auf welcher mysql Version soll das laufen?
>= 4.x , oder noch 3.x
schön´s Grüssle, Andi

NeMeSiSX2LC

Höchstes Rating wenn ichs anderst machen will seh ich ja dann wie es geht.

MySQL 4.1.irgendwas
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

jubilee

Hallo !
Zitatselect * from ".$prefix."_tabelle where (gender='".$_REQUEST['cat']."') and (rating > '0') and (voters > '100') and (points > '200') and checked='1' group by uname order by rating DESC limit 10
ZitatSo damit sehen ich zwar nur noch ein bild pro User in den Top 10 aber nicht das best bewerteste. Sonder das zweit Beste oder so.
Mappst Du das Ergebnis in ein Array  ?
Wenn Du NICHT mit aszoziativen Indexen arbeitest, denke daran, das der Index [1] das 2. Ergebnis enthält das erste Ergebnis steht in dem index [0 ]
Nur mal so ein Schuss ins blaue, weil immer das 2 beste Ergebnis gefunden wird ....

MfG
jubilee

NeMeSiSX2LC

while(list($cid,$nam,$picture,$gender,$points,$voters,$rating) = sql_fetch_row($result))

Also öh ja damit hol ich mir die Daten....
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

NeMeSiSX2LC

Ich schieb mal wieder bissel haut mich ;)
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

NeMeSiSX2LC

Auf die gefahr hin das ich nerven, tu ich ja eh, aber die User steigen uns solangsam aufs dach wegen der Sache!
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

wob

Jupp und keiner weiss weiter :(


Mfg Rene
Ideen sind immer gut, nur diese Idee`n umsetzen ist eine andere frage :-)

jubilee

Hallo !
da ich nicht genau weiss, wie die Tabelle aussieht, hier mal als generelles Beispiel ...

Zitat
select feld1, feld2, MAX(rating) AS toprating, feld4, feldn... from ".$prefix."_tabelle where ((gender='".$_REQUEST['cat']."') and (voters > '100') and (points > '200') and (checked='1')) group by uname order by toprating DESC limit 10

Vielleicht hilft das weiter ....

Mfg
jubilee

NeMeSiSX2LC

#12
$result = sql_query("select cid, uname, picture, points, voters, MAX(rating) AS toprating from ".$prefix."_tabelle where (gender='".$_REQUEST['cat']."') and (rating > '0') and (voters > '100') and (points > '200') and checked='1' group by uname order by toprating DESC limit 10");

while(list($cid,$nam,$picture,$gender,$points,$voters,$toprating) = sql_fetch_row($result)) {


So stehts nun drin. Zeigt er aber garkein bild mehr an
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

jubilee

Hmmm

Evt liegt es daran, das Du bei der Query nur 6 Felder abfragst unten bei list in der While-Schleife jedoch
versuchst 7 Felder zuzuordnen ?

MfG
jubilee

NeMeSiSX2LC

#14
löl könntest recht haben...

so nun sieht es so aus:

$result = sql_query("select cid, uname, picture, points, voters, MAX(rating) AS toprating from ".$prefix."_tabelle where (gender='".$_REQUEST['cat']."') and (rating > '0') and (voters > '100') and (points > '200') and checked='1' group by uname order by toprating DESC limit 10");

while(list($cid,$nam,$picture,$points,$voters,$toprating) = sql_fetch_row($result)) {

Angezeigt wird immer noch nichts...
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

NeMeSiSX2LC

Ok Anzeigen tut er es aber irgendwie Zeigt er das Falsche bild zur Bewertung an. Bewertung usw stimmt Aber wird das zweit Beste bild des User anzeigt. Eigerntlich sollte da ja das bild zum Top eingebniss erscheinen
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

jubilee

Hmmmm
ZitatOk Anzeigen tut er es aber irgendwie Zeigt er das Falsche bild zur Bewertung an. Bewertung usw stimmt Aber wird das zweit Beste bild des User anzeigt
Hast Du mal mit der Query direkt im phpMyAdmin probiert.
Dann könnte man feststellen, ob es an der Query liegt (was ich mir eigentlich nicht vorstellen kann), oder ob das Prolem erst irgendwo anders im Script ensteht ...

MfG
jubilee

NeMeSiSX2LC

Hab ich jetzt mal gemacht resultat ist das selbe. Faslsches bild zur Bewertung....
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

NeMeSiSX2LC

CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

Andi

Moin :)

das geht so, nur als Query, nur mit einem Sub-Select in der Datenbankabfrage.
Deshalb die Frage nach der mySql Version, das geht nämlich nur ab 4.x. Wobei ich jetzt nicht weiss, ob mySql das auch mit Sub-Selects auf dei gleiche Tabelle kann...

Probier das mal in phpMyAdmin aus:
SELECT cid, uname, picture, points, voters, rating AS toprating
FROM mx_photovote_pictures AS pic
WHERE (((pic.rating) In (SELECT Max(sb.rating) AS m
FROM mx_photovote_pictures AS sb
WHERE (((sb.rating)>0) AND ((sb.voters)>100) AND ((sb.points)>200) AND ((sb.checked)=1))
GROUP BY sb.uname;
)) AND ((pic.gender)=1) AND ((pic.rating)>0) AND ((pic.voters)>100) AND ((pic.points)>200) AND ((pic.checked)=1))
ORDER BY pic.rating DESC
LIMIT 10;
schön´s Grüssle, Andi