tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
533
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Eistee
    Eistee Eistee ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Ort
    Sauerland
    Beiträge
    195
    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-Code:
    $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/$z1);
    }

    $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.
    Geändert von Eistee (13.02.05 um 15:04 Uhr)
     

  2. #2
    Registriert seit
    Jun 2004
    Ort
    Stuttgart (BW)
    Beiträge
    1.746
    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
     
    Wissen ist Macht! Nichts wissen macht auch nichts, ...
    www.redlama.org

  3. #3
    German German ist offline Mitglied Brokat
    Registriert seit
    Jul 2004
    Ort
    (Bayern)
    Beiträge
    464
    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
    Geändert von German (14.02.05 um 11:58 Uhr)
     
    Gruß German

  4. #4
    Avatar von Eistee
    Eistee Eistee ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Ort
    Sauerland
    Beiträge
    195
    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
     

  5. #5
    Avatar von Eistee
    Eistee Eistee ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Ort
    Sauerland
    Beiträge
    195
    Kann mir niemand helfen?
    Ist mir echt wichtig...
     

  6. #6
    Warhamster Warhamster ist offline Mitglied Silber
    Registriert seit
    Apr 2002
    Ort
    Langen (Niedersachsen)
    Beiträge
    53
    Moin.

    Probier mal:

    "SELECT *, (rating/clicks) as 'av' FROM gallery WHERE 'clicks' > 1 ORDER BY 'av' DESC LIMIT 1"



    MfG Marcel
     

  7. #7
    Avatar von Eistee
    Eistee Eistee ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Ort
    Sauerland
    Beiträge
    195
    So gehts leider auch nicht
    Es werden keine Werte ausgegeben...
     

  8. #8
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Probier mal folgende Abfrage:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    SELECT
            `id`,
            `date`,
            `name`,
            `rating`,
            `clicks`,
            (`rating` / `clicks`) AS `av`
      FROM
            `gallery`
      WHERE
            `clicks` > 1
      ORDER BY
            `av` DESC,
            `clicks` DESC
      LIMIT
            1
     

  9. #9
    Avatar von Eistee
    Eistee Eistee ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Ort
    Sauerland
    Beiträge
    195
    Danke! So klappts
    Lag es nun doch an den `? Hat PHP5 mit meiner alten Schreibweise, wie ich sie oben gepostet habe, Probleme?
     

Ähnliche Themen

  1. Wo liegt mein fehler ? php vs. mysql part 2
    Von spikaner im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 27.04.08, 05:14
  2. Antworten: 2
    Letzter Beitrag: 30.06.05, 08:43
  3. Wo liegt hier der Fehler?
    Von xloouch im Forum Linux & Unix
    Antworten: 7
    Letzter Beitrag: 17.02.04, 17:44
  4. Antworten: 9
    Letzter Beitrag: 07.04.03, 10:15
  5. WAMP, Fehler liegt bei MySQL
    Von COMAMind im Forum Relationale Datenbanksysteme
    Antworten: 7
    Letzter Beitrag: 04.02.02, 22:52