SoulGodMedlem sedan aug. 20051 200 inlägg Jag har ett script som hämtar en länk till en avatar på följande sätt:
$res2 = mysql_query("SELECT username, avatar FROM users WHERE id=" . $arr["sender"]) or sqlerr();
$arr2 = mysql_fetch_assoc($res2);
$sender = "<a href=userdetails.php?id=" . $arr["sender"] . ">" . ($arr2["username"]?$arr2["username"]:"[Raderat]") . "</a>";
$avatar = ($CURUSER["avatars"] == "yes" ? htmlspecialchars($arr2["avatar"]) : "");
if (!$avatar)
$avatar = "pic/default_avatar.jpg";
}
else
$sender = "System";
if ($sender == "System")
$avatar = "pic/system_avatar.jpg";
Och bilden hämtas via:
print("<tr valign=top><td width=110 align=center style='padding: 0px'>" .
($avatar ? "<img src=\"$avatar\">" : ""). "</td><td>\n");
Men just nu läggs default_avatar in på alla användare,
och på sender== System läggs det inte in någon alls.
och när jag läser den genererade html koden så är fältet tomt för system.
Någon som har en aning?
Säg till om ni behöver se mer kod.
The_HulkMedlem sedan juni 20031 837 inlägg Är det all kod?
ser lite konstigt ut vid din if-sats.
if (!$avatar)
$avatar = "pic/default_avatar.jpg";
}
else
var ska kod-blocket börja? du har en avslutande "}" innan "else" men man ser inte var den börjar.
testa att ändra
if(!$avatar)
till
if($avatar != "")
SoulGodMedlem sedan aug. 20051 200 inlägg Detta är koden jag kör:
if (is_valid_id($arr["sender"]))
{
$res2 = mysql_query("SELECT username, avatar FROM users WHERE id=" . $arr["sender"]) or sqlerr();
$arr2 = mysql_fetch_assoc($res2);
$sender = "<a href=userdetails.php?id=" . $arr["sender"] . ">" . ($arr2["username"]?$arr2["username"]:"[Raderat]") . "</a>";
$avatar = ($CURUSER["avatars"] == "yes" ? htmlspecialchars($arr2["avatar"]) : "");
if (!$avatar)
$avatar = "pic/default_avatar.jpg";
}
else
$sender = "System";
if ($sender == "System")
$avatar = "pic/system_avatar.jpg";
Prövade att ändra (!$avatar) till det du skrev.
Problemet är dock inte default_avatar, för den hamnar rätt.
Dock funkar inte "system_avatar" ,
eller att den hämtar in användarens "riktiga" avatar
The_HulkMedlem sedan juni 20031 837 inlägg Det är lite svårt att avgöra vad som blir fel eftersom du inte visar all kod.
hur ser koden för is_valid_id(...) ut?
lägg till lite debug-kod så vi ser hur koden körs.
Förmodligen så är det något fel i is_valid_id(...) som gör att du alltid kommer in i den första delen av if-satsen.
if (is_valid_id($arr["sender"]))
{
echo "test 1"; // debug
$res2 = mysql_query("SELECT username, avatar FROM users WHERE id=" . $arr["sender"]) or sqlerr();
$arr2 = mysql_fetch_assoc($res2);
$sender = "<a href=userdetails.php?id=" . $arr["sender"] . ">" . ($arr2["username"]?$arr2["username"]:"[Raderat]") . "</a>";
$avatar = ($CURUSER["avatars"] == "yes" ? htmlspecialchars($arr2["avatar"]) : "");
if (!$avatar)
$avatar = "pic/default_avatar.jpg";
}
else
{
echo "test 2"; // debug
$sender = "System";
}
if ($sender == "System")
$avatar = "pic/system_avatar.jpg";
SoulGodMedlem sedan aug. 20051 200 inlägg Här kommer hela koden:
<?
require "include/bittorrent.php";
dbconn(false);
loggedinorreturn();
$out = $_GET['out'];
if ($out) // Sentbox
{
stdhead("Utkorgen", false);
print("<form method=post action=takedelspm.php>");
print("<table class=main width=750 border=0 cellspacing=0 cellpadding=10><tr><td class=embedded>\n");
print("<h1 align=center>Utkorgen</h1>\n");
print("<div align=center>(<a href=" . $_SERVER['PHP_SELF'] . ">Inkorgen</a>)</div>\n");
$res = mysql_query("SELECT * FROM messages WHERE sender=" . $CURUSER["id"] . " AND location IN ('out','both') ORDER BY added DESC") or die("barf!");
if (mysql_num_rows($res) == 0)
stdmsg("Information","Här var det tomt!");
else
while ($arr = mysql_fetch_assoc($res))
{
$res2 = mysql_query("SELECT username FROM users WHERE id=" . $arr["receiver"]) or sqlerr();
$arr2 = mysql_fetch_assoc($res2);
$receiver = "<a href=userdetails.php?id=" . $arr["receiver"] . ">" . $arr2["username"] . "</a>";
$elapsed = get_elapsed_time(sql_timestamp_to_unix_timestamp($arr["added"]));
print("<p><table width=100% border=1 cellspacing=0 cellpadding=10><tr><td class=text>\n");
print("Till <b>$receiver</b> den\n" . $arr["added"] . " ($elapsed sedan) GMT\n");
if (get_user_class() >= UC_MODERATOR && $arr["unread"] == "yes")
print("<b>(<font color=red>Oläst!</font>)</b>");
print("<p><table class=main width=100% border=1 cellspacing=0 cellpadding=10><tr><td class=text>\n");
print(format_comment($arr["msg"]));
print("</td></tr></table></p>\n<p>");
print("<table width=100% border=0><tr><td class=embedded>\n");
print("<a href=deletemessage.php?id=" . $arr["id"] . "&type=out><b>Radera</b></a></td><input type=\"checkbox\" name=\"delpm[]\" value=\"" . $arr[id] . "\" /></td>\n");
print("</tr></table></tr></table></p>\n");
}
}
else // Inbox
{
stdhead("Inkorgen", false);
print("<form method=post action=takedelpms.php>");
print("<table class=main width=750 border=0 cellspacing=0 cellpadding=10><tr><td class=embedded>\n");
print("<h1 align=center>Inkorgen</h1>\n");
print("<div align=center>(<a href=" . $_SERVER['PHP_SELF'] . "?out=1>Utkorgen</a>)</div>\n");
$res = mysql_query("SELECT * FROM messages WHERE receiver=" . $CURUSER["id"] . " AND location IN ('in','both') ORDER BY added DESC") or die("barf!");
if (mysql_num_rows($res) == 0)
stdmsg("Information","Här var det tomt!");
else
while ($arr = mysql_fetch_assoc($res))
{
if (is_valid_id($arr["sender"]))
{
$res2 = mysql_query("SELECT username, avatar FROM users WHERE id=" . $arr["sender"]) or sqlerr();
$arr2 = mysql_fetch_assoc($res2);
$sender = "<a href=userdetails.php?id=" . $arr["sender"] . ">" . ($arr2["username"]?$arr2["username"]:"[Raderat]") . "</a>";
$avatar = ($CURUSER["avatars"] == "yes" ? htmlspecialchars($arr2["avatar"]) : "");
if (!$avatar != "")
$avatar = "pic/default_avatar.jpg";
}
else
$sender = "System";
if ($sender == "System")
$avatar = "pic/system_avatar.jpg";
$elapsed = get_elapsed_time(sql_timestamp_to_unix_timestamp($arr["added"]));
print("<p><table width=100% border=1 cellspacing=0 cellpadding=10><tr><td class=text>\n");
print("Från <b>$sender</b> klockan\n" . $arr["added"] . " ($elapsed sedan) GMT\n");
if ($arr["unread"] == "yes")
{
print("<b>(<font color=red>Nytt!</font>)</b>");
mysql_query("UPDATE messages SET unread='false' WHERE id=" . $arr["id"]) or die("arghh");
}
print("<p><table class=main width=100% border=1 cellspacing=0 cellpadding=10><tr><td class=text>\n");
print("<tr valign=top><td width=110 align=center style='padding: 0px'>" .
($avatar ? "<img src=\"$avatar\">" : ""). "</td><td>\n");
print(format_comment($arr["msg"]));
print("</td></tr></table></p>\n<p>");
print("<table width=100% border=0><tr><td class=embedded>\n");
print(($arr["sender"] ? "<a href=sendmessage.php?receiver=" . $arr["sender"] . "&replyto=" . $arr["id"] .
"><b>Svara</b></a>" : "<font class=gray><b>Svara</b></font>") .
" | <a href=deletemessage.php?id=" . $arr["id"] . "&type=in><b>Radera</b></a></td><input type=\"checkbox\" name=\"delpm[]\" value=\"" . $arr[id] . "\" /></td>\n");
print("</tr></table></tr></table></p>\n");
}
}
print("</td></tr></table>\n");
print("<p align=center><input type=button value=\"Markera alla\" onClick=\"this.value=check(form)\"><input type=submit value=\"Radera markerade\"></p>");
print("</form>");
print("<p align=center>Behöver du <a href=users.php>hitta</a> någon?</p>\n");
stdfoot();
?>
The_HulkMedlem sedan juni 20031 837 inlägg Du har fortfarande inte visat vad funktionen is_valid_id(...) gör.
Har du testat med mina debug-rader?
När du klistrar in php-kod använd helst [ php] istället för [ kod], då blir koden färglagd vilket är lättare att läsa. Dessutom hade det varit mycket trevligare med indentering i koden (som jag gjorde).
Jag orkar inte hjälpa dig förrän du testat att lägga till debug-koden. det är omöjligt att säga varför du får fel när du inte hjälper till mer.