2010-09-29 2 views
-1

Кто-нибудь знает, как вносить все результаты таблицы mysql, показывать только первый X (скажем, 10), а затем скрывать остальные с помощью jquery? В принципе, поскольку у меня уже есть jquery, мне просто нужно знать, как показывать только первые результаты X в одном div, а затем остальные в отдельном div.PHP/MySQL Показать первые X результатов, скрыть остальные

Моя цель - показать только первые 10 результатов, но предоставить ссылку внизу страницы, позволяющую пользователю показывать все результаты. Думал, что гиперссылка может просто повторно выполнить запрос, но подумала, что было бы проще показать/скрыть с помощью jquery.

Большое спасибо заранее. S

Мысль я добавил код, я использую ниже

$query = "SELECT * FROM ispress WHERE active = '1' ORDER BY YEAR(date) DESC, MONTH(date) DESC LIMIT 0, 7"; 
         $resultSet = mysql_query($query); 

         if (mysql_num_rows($resultSet)) 
         { 
          $newsArray = array(); 
          while ($newsResult = mysql_fetch_array($resultSet)) 
          {         
         $newDate = $newsResult['date'] ;  
         $timePeriod = date('F Y ',strtotime($newDate));  
         $bFirstTime = true; 

         if (!isset($newsArray[$timePeriod])) 
         { 
          $newsArray[$timePeriod] = array(); 
         } 
         $newsArray[$timePeriod][] = $newsResult;        
          } 
          foreach ($newsArray as $timePeriod => $newsItems) 
          {                      
         echo '<div class="date">' . $timePeriod . '</div>' . PHP_EOL;   
          echo '<ul class="press">' . PHP_EOL; 
         foreach ($newsItems as $item) 
         {      
         if ($bFirstTime) { 
         echo '<li>'; 
         echo '<img src="'.$wwwUrl.'images/news/'.$item['image'].'" width="'.$item['imgWidth'].'" height="'.$item['imgHeight'].'" title="'.$item['title'].'" alt="'.$item['title'].'" /> 
           <h3><a href="'.$wwwUrl.'press-releases/'.$item["id"].'/'.$item["title"].'.php">'.$item["title"].'</a></h3>          
           <p>'.substr($item['descrip'],0,244).'...</p> 
           <p><a href="'.$wwwUrl.'press-releases/'.$item["id"].'/'.$item["title"].'.php">Read more</a></p>  
           '; 
         echo '</li>' . PHP_EOL;  
         $bFirstTime = false; 
         } else { 
          echo '<li>'; 
         echo '<a href="'.$wwwUrl.'press-releases/'.$item["id"].'/'.$item["title"].'.php"><img src="'.$wwwUrl.'images/news/'.$item['image'].'" width="'.$item['tnWidth'].'" height="'.$item['tnHeight'].'" title="'.$item['title'].'" alt="'.$item['title'].'" /></a> 
           <h3><a href="'.$wwwUrl.'press-releases/'.$item["id"].'/'.$item["title"].'.php">'.$item["title"].'</a></h3>          
           <p>'.substr($item['descrip'],0,100).'...</p> 
           <p><a href="'.$wwwUrl.'press-releases/'.$item["id"].'/'.$item["title"].'.php">Read more</a></p>  
           '; 
         echo '<div class="clear"></div>' . PHP_EOL; 
         echo '</li>' . PHP_EOL;        
          }               
          } 
         echo '</ul>' . PHP_EOL;        
           } 
          echo '<p><a href="#" id="slick-toggle">Older posts...</a></p>'. PHP_EOL; 
          echo '<div id="slickbox">This is the box that will be shown and display the rest of the news results. :)</div>'. PHP_EOL; 
         }             
         else 
          { 
          echo 'We currently have no press releases available'; 
         } 
+2

Предоставьте некоторые из ваших html-кода! – Thariama

+0

Yuck! Пожалуйста, укажите код шаблона html, а не код шага. Просмотрите страницу в браузере, просмотрите источник, скопируйте, вставьте. – Keyo

+2

Надеюсь, у вас есть только несколько записей в вашей таблице, потому что если вы используете javascript для разбивки на несколько тысяч записей, ваш код, скорее всего, окажется на TheDailyWTF –

ответ

2

Это скроет первые 10 детей. Как вы планируете показывать другие результаты? Кнопки, поля, jqueryui виджеты? Вам просто нужно добавить событие click, которое вызывает эту функцию.

function limit_results(start, end) { 
    $('#things > .thing').each(index) { 
     if(index < end && index >= start) { 
      $(this).hide(); 
     } 
    } 
} 
limit_results(1,10); 
0

в запросе предел 0,10 для остальных предела 11, ххх

+0

Теги не показывали его, но это jquery вопрос - он хочет скрыть часть результатов с помощью jQuery. – Extrakun

+0

ха-ха, чтение и чтение, извините – Grumpy

0

При печати выведите данные каждой строки на каждую итерацию, увеличив счетчик. Когда вы дойдете до 11, запустите новый div, у которого есть другой идентификатор, отличный от идентификатора вашего первого div, для которого вы уже определили идентификатор. Теперь, используя jQuery, вы можете скрыть и показать второй div с остальными результатами, как вам будет угодно.

2

Если у вас уже есть элементы в объекте jQuery (например, $ ('# sql-results') содержит все ваши результаты), вы всегда можете сделать это: $ ('# sql-results: lt (10) ') для работы с первыми десятью элементами и $ (' # sql-results: gt (9) ') для работы с остальными элементами.

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

правый, так и для конкретной структуры разметки, вы можете добавить это к вашему JS:

// Obviously this is untested and probably not bug-/typo-free 

(
    function($) { 
    var $slickbox = $('#slickbox').hide(); 

    $('<ul></ul>') 
     .appendTo($slickbox) 
     .append('ul.press li:gt(9)'); 

    $('#slick-toggle') 
     .bind(
     'click', 
     function(){ 
      $slickbox.toggle(); 
     } 
    ); 
    } 
)(jQuery); 
1

Это потребует много переписывания, но JQuery имеет datatables plugin, который будет отображать данные. Для этого вам нужно сделать что-то вроде

echo '<table id="news-table">' 
echo '<thead>';//Datatables needs a thead with the correct number of columns. However you don't need to fill them in. 
echo '<th>Date</th>'; 
echo '<th>Time Period</th>' 
echo '</thead><tbody>'; 
while ($data = my_sql_fetch_array($result)) { 
    echo '<td>Whatever</td>'; 
    echo '<td>Another Field</td>'; 
} 
echo '</tbody></table>'; 

Jquery затем

$('#news-table').dataTable(); 

Я не знаю, как это не будет делать пользовательские сообщения данных, и я знаю, что с кодом вы написали это может быть не очень полезно для вас прямо сейчас, но я отправляю его, потому что это может быть полезно для тех, кто ищет информацию разбивки на страницы или для вас, если вы хотите снова сделать что-то подобное. Datatables также полезен, потому что пользователь может выбрать количество результатов, которые они хотят показать, в каком столбце они хотят сортировать и в каком направлении сортировать.

0

Divide возвращаемые значения в файле PHP с характером например:

echo "this is first value +"; 

echo "this is second value +"; 

echo "this is third value +"; 



использование Javascript, чтобы отделить возвращение значения Ex:

var ajaxArray = ajaxValues.split("+"); 



теперь все three values ​​размещаются в ajaxArray, и вы можете использовать всех, кого хотите ex:

ajaxArray[0] = this is first value 
Смежные вопросы