2015-04-15 5 views
0

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

Ниже мой сценарий:

<?php 
    $mysql_session = mysql_query("SELECT * FROM session"); 
    $no_of_rows_session = mysql_num_rows($mysql_session); 
    $msg_session=''; 
    $last_row = mysql_query("SELECT * from session ORDER BY id DESC LIMIT 1"); 
    $last_id = ''; 

    while($select_id_of_last_row = mysql_fetch_array($last_row)) { 
     $last_id = $select_id_of_last_row['id']; 
    } 
?> 



<?php echo $msg_session; ?> 
<?php 
    if($no_of_rows_session < 1) { 
     $msg_session = 'No Session has been added yet'; 
    } else { 
     for($i = 1; $i<=$last_id; $i++) {     
      ${'mysql_session_every_single_query_' . $i} = mysql_query("SELECT * FROM session WHERE id LIKE '%$i%'"); 
      ${'mysql_existance_of_session_id_' . $i} = mysql_num_rows(${'mysql_session_every_single_query_' . $i}); 
      while(${'mysql_every_session_data_' . $i} = mysql_fetch_array(${'mysql_session_every_single_query_' . $i})){ 
       ${'id_session_' . $i} = ${'mysql_every_session_data_' . $i}['id']; 
       ${'session_start_' . $i} = ${'mysql_every_session_data_' . $i}['start']; 
       ${'session_end_' . $i} = ${'mysql_every_session_data_' . $i}['end']; 
       echo "<table>"; 
        echo "<tr id='tr_session_hover_" . $i . "' 
           class='tr_session_hover' 
           onClick=\"document.location='session_edit.php?ss=${'session_start_' . $i}&se=${'session_end_' . $i}';\"> 
          <td>" . ${'session_start_' . $i} . "-" . ${'session_end_' . $i} . "</td> 
         </tr>"; 
       echo "</table>"; 
      } 
     } 

    }  
?> 
+1

Почему вы используете переменные переменные везде? – Bankzilla

+0

Я собираюсь использовать эти переменные в другом скрипте методом GET. Я также нашел способ разбиения на страницы результатов, я отвечу на этот вопрос, как только подтвержу, что метод, о котором я думаю, работает. –

+0

Не было бы более разумным создание массива со всеми данными, хранящимися в каждой итерации, вместо создания того, как много динамических переменных? – Bankzilla

ответ

0

У меня есть решение. Если вы столкнулись с такой проблемой и хотите продолжить только переменные (например, я):

Предположим, вам нужно показать 6 результатов на одной странице и ваш auto_increment (предположим, что столбец с именем id - это auto_increment one, в таблице) значения are't регулярно, то, что вы можете сделать это, получить идентификатор элемента 6 по

Я предполагающий, что вы уже подключены к PHPMyAdmin и выбрали базу данных

$no_of_results_per_page = 6; 

if(isset($_GET['page_no'])) { 
    $page_no = $_GET['page_no']; 
} else{ 
    $page_no = 1; 

} 


    $upper_limit = ($page_no - 1)*$no_of_result_per_page - 1; 

if($page_no > 1){ 
    $mysql_getting_id_le = mysql_query("SELECT id FROM table LIMIT $upper_limit, 1"); 

    while($getting_id_last_elem = mysql_fetch_array($mysql_getting_id_le)) { 
    $id_last_element = $getting_id_last_elem['id']; 
    } 
} else { 
    $mysql_getting_id_le = mysql_query("SELECT id FROM table LIMIT 0, 1"); 

    while($getting_id_last_elem_p_1 = mysql_fetch_array($mysql_getting_id_le)) { 
    $id_last_element = $getting_id_last_elem_p_1['id']; 
$id_last_element = $id_last_element - 1; 
    } 
} 

выше запрос поможет нам получить идентификатор последнего элемента на странице

Теперь мы будем создавать кнопки для перехода с одной страницы на другую.

$final_mysql_query = mysql_query("SELECT * FROM table WHERE id > '%id_last_element%' LIMIT $no_of_results_per_page"); 

//Now, we can get all data limited to show no. of results you have defined per page using a loop 

$total_results = mysql_query("SELECT * FROM table"); 

$total_results_count = mysql_num_rows($total_results); 

$total_pages = ceil($total_results_count/$no_of_results_per_page); 

$page_no = ''; 

for($i = 1; $i <= $total_pages; $i++) { 
    $page_no .= "<a href='?page_no=" . $i . "'>" . $i . "</a>"; 
} 
0

Я думаю, что вы на неверном пути. Подобные вещи просты, когда вы выбираете некоторые критерии заказа и внедряете их в свою таблицу - например, время последнего редактирования или создания строки. После этого, когда у вас есть длина страницы и номер страницы, вы должны использовать предложения OFFSET/LIMIT для SELECT, упорядоченные по критериям, - таким образом вы позволяете движку MySQL создавать правильные страницы.

+0

извините, но я в правильном направлении, чего хочу. –

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