За последние 24 часа нас посетили 19045 программистов и 1595 роботов. Сейчас ищут 1016 программистов ...

Уменьшение количества запросов

Тема в разделе "PHP для новичков", создана пользователем shmarovoz, 28 янв 2012.

  1. shmarovoz

    shmarovoz Активный пользователь

    С нами с:
    3 янв 2011
    Сообщения:
    8
    Симпатии:
    0
    Всем привет!
    У меня есть следующая вещь:
    Из базы в цикле вытягиваются данные, человеки, за которых можно проголосовать за или против. Ограничение только по айпи. Так вот, я задумал сделать так, что если пользователь уже голосовал, то сама кнопка для голосования не будет ему показываться, но я никак не могу сообразить как организовать это все дело так, чтобы не использовать запросы каждый раз в самом цикле, как это организовано сейчас у меня.

    Подскажите, пожалуйста, как сделать так, чтобы выбрать из базы сначала все айпи-адреса и уже только потом вложенным циклом проверять или он есть в списке? То есть как уменьшить количество запросов?

    Свой код привожу ниже:

    Код (Text):
    1. <?php
    2.  
    3.  
    4.         $result = mysql_query("SELECT * FROM people ".$where." ORDER ".$sortby."");
    5.         $myrow = mysql_fetch_array($result);
    6.        
    7.         if (mysql_num_rows($result) > 0)
    8.  
    9. {
    10.  
    11.  
    12.         $realip = getenv(HTTP_X_FORWARDED_FOR);
    13.         if ($realip == ''){$realip = $_SERVER['REMOTE_ADDR'];}
    14.        
    15.  
    16.         do
    17.         {  
    18.        
    19.         if ($myrow['avatar'] == '-')
    20.         {
    21.             if ($myrow['sex'] == '1') {$avatar = 'images/man.png';}
    22.             if ($myrow['sex'] == '0') {$avatar = 'images/woman.png';}
    23.         }
    24.         if ($myrow['avatar'] != '-') {$avatar = "timthumb.php?src=".$myrow['avatar']."&a=t&w=195&h=200&q=100";}
    25.        
    26.        
    27.         $resultfindip = mysql_query("SELECT * FROM votestat WHERE peopleid='$myrow[id]' AND likedis='like' AND ipadress='$realip'",$db);
    28.         if (mysql_num_rows($resultfindip) > 0) {$likehref = "";}
    29.         else {$likehref = "<a class='like' name='$myrow[id]'>ХОРОШО! (<strong>$myrow[likes]</strong>)</a>";}
    30.    
    31.        
    32.         $stroka='';
    33.         if(($i+1)%4==0) $stroka='</tr><tr>';
    34.         printf ("
    35.           <td align='center' valign='middle' width='200'>
    36.           <img src='$avatar' />
    37.           <br />
    38.           <strong>%s</strong><br />
    39.           %s<br />
    40.           <a href='comments.php?id=%s' class='comments fancybox.iframe'><img title='Отзывы' src='images/comments.png'></a>
    41.           <a href='add_comment.php?id=%s' class='addcomment fancybox.iframe'><img title='Добавить отзыв' src='images/addcomments.png'></a>
    42.           <br>
    43.           $likehref
    44.           <a class='dislike' name='%s'>ПЛОХО! (<strong>%s</strong>)</a>
    45.           </td>
    46.         $stroka
    47.         ",$myrow["posada"],$myrow["name"],$myrow["id"],$myrow["id"],$myrow["id"],$myrow["dislikes"]);
    48.         $i++;
    49.         }
    50.         while ($myrow= mysql_fetch_array($result));
    51. }
    52. else
    53. {
    54.     echo '<br /><p align="center"><strong>У цій групі поки нікого немає!</strong></p>';
    55. }
    56.  
    57. ?>
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    цик...цик...цик...цик...цик...цикл(удался).
    Взять и написать новое!
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    цикл поповский. тут мы бессильны.