Seite 1 von 1

Avatar in Suchergebnissen

Verfasst: 03.12.2009 10:46
von MajorROM
Hallo,

der folgende Code soll dazu dienen, die User-Avatare in den Suchergebnissen anzuzeigen. Nun habe ich ihn an unendlich vielen Stellen versucht einzubinden, zu einem Ergebnis hat es aber bisher nicht geführt.

function.php

Code: Alles auswählen

function get_avatar_by_id($the_id)
{

   global $db;

   $sql = 'SELECT user_avatar
    FROM ' . USERS_TABLE . '
    WHERE user_id = ' . (int) $the_id;
   $result = $db->sql_query($sql);

   $avatar = $db->sql_fetchfield('user_avatar');
   
   return $avatar;
}
search.php

Code: Alles auswählen

'POSTER_AVATAR'      => get_avatar_by_id($row['poster_id']),
Im Template:

Code: Alles auswählen

<!-- IF searchresults.POSTER_AVATAR --><img src="/download/file.php?avatar={searchresults.POSTER_AVATAR}"><!-- ENDIF -->
im phpBB.com Forum bekam ich folgende Antwort, die mich leider nicht weiterhilft. Vielleicht habe ich ja gerade ein Brett vor dem Kopf, ich stege irgendwie nicht hinter die Logik. Vielleicht könnt ihr mal einen Blick drauf werfen.
dpaanlka hat geschrieben: You haven't passed a user_id when calling the function. Note the beginning of the function:

Code: Alles auswählen

function get_avatar_by_id($the_id)
So elsewhere, when calling the function should look something like this:

Code: Alles auswählen

$avatar = get_avatar_by_id($user_id);

Re: Avatar in Suchergebnissen

Verfasst: 03.12.2009 17:58
von gn#36
Sieht eigentlich erst mal gut aus so, den Kommentar von .com halte ich für Blödsinn, zumindest von der Bezeichnung her würde ich sagen dass das so stimmt wie es ist.

Das einfachste ist bei solchen Fehlern immer sich mal das direkt anzusehen was die Funktion liefert als Ergebnis und was als Wert hineinkommt. Dafür eben ein Echo vor dem return und direkt nach der Funktionsdeklaration um hier schon mal sicherzustellen das alles klappt. Ist der ankommende Wert falsch, dann solltest du an der Aufrufenden Stelle mal schauen was da schief geht, ist das Ergebnis falsch aber die ID richtig muss in der Funktion was falsch sein (Tippfehler?).

Ansonsten fällt mir natürlich als Standardproblem bei Templateänderungen ein, dass du im Eifer des Gefechts das Caching vergessen haben könntest und deinen Cache leeren solltest um die Änderungen zu sehen...

Ich würde dir übrigens aus Performancegründen empfehlen, alle Avatare auf einmal zu holen statt jeden einzeln. Das senden eines Queries ist viel zeitaufwändiger als zu einem Query mehrere Zeilen zu liefern.

Re: Avatar in Suchergebnissen

Verfasst: 04.12.2009 10:38
von MajorROM
War ja mal wieder ein süsser kleiner Fehler :-?

Die Pfadangabe hatte einfach einen Slash zuviel und der Aufruf im Template sollte folgendermassen aussehen:

Code: Alles auswählen

<!-- IF searchresults.POSTER_AVATAR --><img src="download/file.php?avatar={searchresults.POSTER_AVATAR}"><!-- ENDIF -->

Ich würde dir übrigens aus Performancegründen empfehlen, alle Avatare auf einmal zu holen statt jeden einzeln. Das senden eines Queries ist viel zeitaufwändiger als zu einem Query mehrere Zeilen zu liefern.
Ich bin mir nicht sicher, wie lange ich dafür brauchen werde. Ich beherrsche PHP nicht besonders gut und erarbeite mir jedes Detail in Kleinarbeit.