2016-05-12 3 views
2

Я пытаюсь создать систему для отображения информации из пользовательской базы данных, и она отобразит ее в таблице, однако проблема у меня есть pageload, и мне понадобятся три из них и Я думаю, что у меня был самый длинный путь. страница должна будет отображать получателя и тип, теперь в моей базе данных у меня есть 5 типов информации, и она в настоящее время подсчитывает их каждый, а затем отображает их как неплохие и помеченные. я могу использовать меньше MySQLИспользовать меньше запросов MySQLi

<?php 
    $conn = new mysqli($servername, $username, $password, $dbname); 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 
    $result = mysqli_query($conn,"SELECT * 
     FROM `user_flags` 
     ORDER BY user_flags.timestamp DESC 
     LIMIT 15"); 
    ?> 
           <tbody> 
    <?php 

    while($row = mysqli_fetch_assoc($result)) { 

     $GoodRepSql = mysqli_query($conn, "SELECT COUNT(*) 
      FROM user_flags 
      WHERE user_flags.recipient = {$row['recipient']} 
      AND type = 'Good Rep' "); 

     if ($GoodRepSql->num_rows > 0) { 
      while($goodrow = $GoodRepSql->fetch_assoc()) { 
       $GoodRep = $goodrow["COUNT(*)"] ; 
      } 
     } else { 
      $GoodRep = $goodrow["COUNT(*)"] ; 
     } 

     $BadRepSql = mysqli_query($conn, "SELECT COUNT(*) 
      FROM user_flags 
      WHERE user_flags.recipient = {$row['recipient']} 
      AND type = 'Bad Rep' "); 

     if ($BadRepSql->num_rows > 0) { 
      while($badrow = $BadRepSql->fetch_assoc()) { 
       $BadRep = $badrow["COUNT(*)"] ; 
      } 
     } else { 
      $BadRep = $badrow["COUNT(*)"] ; 
     } 

     $FlagSql = mysqli_query($conn, "SELECT COUNT(*) 
      FROM user_flags 
      WHERE user_flags.recipient = {$row['recipient']} 
      AND type IN ('Smurfing', 'Griefing', 'Suspicious')"); 
     if ($FlagSql->num_rows > 0) { 
      while($flagrow = $FlagSql->fetch_assoc()) { 
       $Flags = $flagrow["COUNT(*)"] ; 
      } 
     } else { 
      $Flags = $flagrow["COUNT(*)"] ; 
     } 

     echo 
      "<tr onclick=\"document.location = '{$url}/{$row['recipient']}';\"> 
      <td>{$Recipient->players->player->personaname}</td> 
      <td>{$BadRep}</td> 
      <td>{$GoodRep}</td> 
      <td>{$Flags}</td> 
      </tr>\n"; 
    } 

?> 
+0

добавить индекс в столбцы 'user_flags.recipient' и' user_flags.type', чтобы ускорить ваши запросы. –

+0

Ваш отпечаток стиля может быть желательным ... Не возражаете, если я отредактирую ваш вопрос? – Mike

+0

'if ($ GoodRepSql-> num_rows> 0) {' * et al * - Это не имеет смысла для запроса SELECT COUNT (*) '. У него никогда не будет 0 строк. Также в ваших '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''' '' '' ' – Mike

ответ

0

Если вам нужен счетчик для каждого типа вы можете использовать: GROUP BY

SELECT COUNT(*),type FROM user_flags WHERE user_flags.recipient = {$row['recipient']} GROUP BY type 

Так как вы хотите, чтобы некоторые из типов, которые будут добавлены вместе, вы должны добавить их с помощью PHP.

$RepSql = mysqli_query($conn, "SELECT COUNT(*) as repcount,type FROM user_flags WHERE user_flags.recipient = {$row['recipient']} GROUP BY type "); 
    $GoodRep=$BadRep=$Flags=0; 
if ($RepSql->num_rows > 0) { 
      while($rep_row = $RepSql->fetch_assoc()) { 
       if($rep_row["type"]=='Smurfing'||$rep_row["type"]=='Griefing'||$rep_row["type"]=='Suspicious'){ 
        $Flags+=$rep_row["repcount"]; 
       }else if($rep_row["type"]=="Good Rep"){ 
        $GoodRep=$rep_row["repcount"]; 
       }else if($rep_row["type"]=="Bad Rep"){ 
        $BadRep=$rep_row["repcount"]; 
       } 
      } 
     } 
+1

Вы, вероятно, хотите выбрать 'type', а также – Mike

+0

Вы правы Mike Спасибо –

+0

Эй, это фантастика, ха-ха, глупые SQL-запросы, спасибо много! однако у меня проблема с - \t \t 'if ($ Sql-> num_rows> 0) { while ($ row = $ Sql-> fetch_assoc()) { if ($ row [" type "] == 'Smurfing' || $ row ["type"] == 'Griefing' || $ row ["type"] == 'Suspicious') { $ Флаги + = $ row ["repcount"]; } else if ($ row ["type"] == "Good Rep") { $ GoodRep = $ row ["repcount"]; } else if ($ row ["type"] == "Bad Rep") { $ BadRep = $ row ["repcount"]; } } } '- не объект –

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