Problem mit einer MySQL-Abfrage - Wo liegt hier der Fehler?

Eistee

Erfahrenes Mitglied
Hallo,
auf meiner HP gibt es eine große Galerie mit Fotos von diversen Partie. Die Fotos lassen sich auch alle mit Punkten von 1 bis 5 bewerten.
Nun zu meinem Problem:
Ich möchte gern auf der Startseite das derzeit best-bewertete Bild anzeigen und dass soll über folgende MySQL-Abfrage geschehen:
PHP:
$sqlab = "SELECT *, (rating/clicks) as 'av' FROM gallery WHERE 'clicks' > 1 ORDER BY 'av' DESC, 'clicks' DESC LIMIT 1";
$res = mysql_query($sqlab);
$row = mysql_fetch_array($res);

function rating($i, $z)
{
	return $rating = round($i/$z, 1);
}

$ct = '<a href="showPic.php?id='.$row[id].'&date='.$row[date].'"><img src="gallery/'.$row[date].'/thumbs/'.$row[name].'" border="0"></a><br><b>'.@rating($row[rating], $row[clicks]).'</b>';

So wie es aussieht, liefert diese Abfrage aber kein Ergbniss zurück, da die variablen im Link weiter unten leer bleiben.
Wo liegt mein Fehler?

btw:
mysql_error hat mir auch kein Ergebnis geliefert.
 
Zuletzt bearbeitet:
Ich kann mir gut denken, wo der Fehler liegt.
Dein select Statement soll nach allem suchen - * - und dann noch nach (rating/clicks).
Wobei ich mir jetzt nicht sicher bin, warum Du das in Klammern schreibst und ob das wirklich ein Feldname ist. Aber mit Sicherheit wird das so nicht funktionieren.
Warum suchst Du nicht nur nach *?
Wie sieht denn Deine Tabellenstruktur aus? Also wie heißen die Felder?
Und was genau willst Du suchen? Alles? Oder nur ein bestimmtes Feld?

redlama
 
Spaltennamen in `
Strings (Werte) in '

@redlama:
(rating/clicks) soll wohl eine Division werden
`rating`/`clicks` AS `av`
Hier sollten dann die Klammern überflüssig sein und die ' falsch
 
Zuletzt bearbeitet:
Das MySQL-Statement wurde mir hier mal so genannt.
Es hat auch funktioniert, nur seit neuestem klappt es nicht mehr, wobei ich keine Ahnung habe, ob ich versehentlich etwas geändert habe, oder diese Schreibweise nicht mehr PHP5-konform ist.
Es soll alles auf der Tabelle ausgewählt werden und das Ergebniss dann nach dem Wert sortiert werden, der sich ergibt, wenn man die zahl aus der Spalte "rating" durch die Zahl aus der Spalte "clicks" teilt. Ausserdem sollen nur die Zeilen einbezogen werden, in denen "clicks" größer 1 ist und ich brauche auch nur das absolut größte Ergebnis - also "LIMIT 1".
Ich hoffe, jetzt ist etwas verständlicher, wie es funktionieren soll :)
Nochmal, es hat so funktioniert - wenn, dann habe ich versehentlich nur einer winzigen Fehler reingebaut...

btw:
aus dieser einen Zeile, die am Ende übrig bleibt, brauche ich allerdings alle werte ;)
 
Probier mal folgende Abfrage:
Code:
SELECT
        `id`,
        `date`,
        `name`,
        `rating`,
        `clicks`,
        (`rating` / `clicks`) AS `av`
  FROM
        `gallery`
  WHERE
        `clicks` > 1
  ORDER BY
        `av` DESC,
        `clicks` DESC
  LIMIT
        1
 
Danke! So klappts :)
Lag es nun doch an den `? Hat PHP5 mit meiner alten Schreibweise, wie ich sie oben gepostet habe, Probleme?
 
Zurück