2010-06-08 1 views
0

Для функции ниже я хотел бы, чтобы ссылка <div class="footervote"><a href="http://www...com/.../footervote.php">Vote</a></div> появлялась только в том случае, если вошедший в систему пользователь отображается в настоящее время на editorlist.php. (I. e. Если loginid в функции соответствует любому из username s, которые в настоящее время отображаются в редакторе.php.)Наличие ссылки появляется только в том случае, если зарегистрированный пользователь появляется в динамическом списке

Появляется на editorlist.php, это динамическое.

Как я могу это сделать?

Спасибо заранее,

Джон

function show_userbox() 
{ 
    // retrieve the session information 
    $u = $_SESSION['username']; 
    $uid = $_SESSION['loginid']; 
    // display the user box 
    echo '<div id="userbox"> 

       <div class="username">'.$u.'</div>    
       <div class="submit"><a href="http://www...com/.../submit.php">Submit an item.</a></div> 
       <div class="changepassword"><a href="http://www...com/.../changepassword.php">Change Password</a></div> 
       <div class="logout"><a href="http://www...com/.../logout.php">Logout</a></div> 
       <div class="footervote"><a href="http://www...com/.../footervote.php">Vote</a></div> 

     </div>'; 
} 

На editorlist.php:

$sqlStr = "SELECT 
    l.loginid, 
    l.username, 
    l.created, 
    DATEDIFF(NOW(), l.created) AS days, 
    COALESCE(s.total, 0) AS countSubmissions, 
    COALESCE(c.total, 0) AS countComments, 
    COALESCE(s.total, 0) * 10 + COALESCE(c.total, 0) AS totalScore, 
    DATEDIFF(NOW(), l.created) + COALESCE(s.total, 0) * 10 + COALESCE(c.total, 0) AS totalScore2 
FROM login l  
LEFT JOIN (
    SELECT loginid, COUNT(1) AS total 
    FROM submission 
    GROUP BY loginid 
) s ON l.loginid = s.loginid 
LEFT JOIN (
    SELECT loginid, COUNT(1) AS total 
    FROM comment 
    GROUP BY loginid 
) c ON l.loginid = c.loginid 
GROUP BY l.loginid 
ORDER BY totalScore2 DESC 
LIMIT 10"; 

    $result = mysql_query($sqlStr); 

$arr = array(); 
echo "<table class=\"samplesrec1edit\">"; 
while ($row = mysql_fetch_array($result)) { 
    echo '<tr>'; 
    echo '<td class="sitename1edit1"><a href="http://www...com/.../members/index.php?profile='.$row["username"].'">'.stripslashes($row["username"]).'</a></td>'; 
    echo '<td class="sitename1edit2">'.($row["countSubmissions"]).'</td>'; 
    echo '<td class="sitename1edit2">'.($row["countComments"]).'</td>'; 
    echo '<td class="sitename1edit2">'.($row["days"]).'</td>'; 
    echo '<td class="sitename1edit2">'.($row["totalScore2"]).'</td>'; 
    echo '</tr>'; 
    } 
echo "</table>"; 

ответ

0

Вы можете попробовать запустить запрос SQL из editorlist.php, чтобы определить, является ли пользователь в списке , вместо того, чтобы пытаться извлечь данные с самой страницы editorlist.php.

0

Я хотел бы сделать свой редактор SQL-то более управляемым, как:

function getEditors($editor = false) { 
    $sqlStr = "SELECT l.loginid, l.username, l.created, 
    DATEDIFF(NOW(), l.created) AS days, COALESCE(s.total, 0) AS countSubmissions, 
    COALESCE(c.total, 0) AS countComments, COALESCE(s.total, 0) * 10 + COALESCE(c.total, 0) AS totalScore, DATEDIFF(NOW(), l.created) + COALESCE(s.total, 0) * 10 + COALESCE(c.total, 0) AS totalScore2 
FROM login l LEFT JOIN (
    SELECT loginid, COUNT(1) AS total FROM submission 
    GROUP BY loginid) s ON l.loginid = s.loginid LEFT JOIN ( SELECT loginid, COUNT(1) AS total 
    FROM comment GROUP BY loginid) c ON l.loginid = c.loginid "; 

    if($editor !== false) { //if we specified an editor, find it 
    $sqlStr .= " WHERE `l.loginid` = '" . $editor . "'"; 
    } 

    $sqlStr .= "GROUP BY l.loginid 
    ORDER BY totalScore2 DESC 
    LIMIT 10"; 

$result = mysql_query($sqlStr); 

    if($editor !== false) { // if we specified an editor, return that editor or false 
    if($row = mysql_fetch_assoc($result)) { 
     return $row; 
    } 
    return false; 
    }else { // otherwise, return the array of editors 
    $editors = array(); 
    while($row = mysql_fetch_assoc($result)) { 
     $editors[] = $row; 
    } 
    return $editors; 
    } 
} 

и таким образом для вашего editorlist.php вы могли бы сделать

$editors = getEditors(); 
foreach($editors as $editors) { 
    // echo your table row like you were doing 
} 

и в show_userbox() вы могли бы сделать

$editor = getEditors(12); 
if($editor) { 
    // echo your vote html stuff 
} 

Я не говорю об этом неявно .. но я думаю, что это даст вам правильную идею о том, где скачок от ..

0

Если пользователь указан как редактор на всем сайте, я бы рекомендовал установить переменную $_SESSION[] для записи, является ли Пользователь редактором или нет, в то же время вы обрабатываете свой логин.

В случае, если редакторы ограничены в отношении того, что они контролируют, возможно, установка переменной сеанса в массив элементов, которые они могут редактировать, может быть вариантом.

Просто подумайте - проверьте один раз и помните, а не проверяйте каждый. Один. время.

Смежные вопросы