Наличие только ссылки появляется, если зарегистрированный пользователь появляется в динамическом списке

0

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

В редакторе .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>";
Теги:

3 ответа

0

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

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

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

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
} 

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню