401

Re: Выпадающий список

Вот здесь начинаются условия с запросами

if (count($aUnion) > 0) { $sql = '( ' . implode(' ) UNION ( ', $aUnion) . ' ) limit '.$start_pos.', '.$perpage.'';
} else if ( count($aSQL) <= 0) {$sql = '(
  
    SELECT * FROM `achilles` limit '.$start_pos.', '.$perpage.' GROUP BY model
  )';


}






 else {
$sql = '(
  
    SELECT * FROM `achilles`  WHERE ' . implode('AND', $aSQL) . ' limit '.$start_pos.', '.$perpage.'  GROUP BY model
  ) UNION (
  
    SELECT * FROM `aeolus`  WHERE ' . implode('AND', $aSQL) . ' limit '.$start_pos.', '.$perpage.' GROUP BY model
  )  ';
   
}

  здесь вывод таблиц с добавлением новой функции 

<?php 

$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {

        
      
    print "<table width='900' border='1'>
      <tr>
        <td colspan='9'>  Шины " . $row["brand"] . " ...  Модель " . $row["model"] . "</td>
      </tr>
      <tr>
        <td colspan='2'>фото</td>
        <td colspan='7' rowspan='2'>текст</td>
      </tr>
      <tr>
        <td>" . $row["sezon"] . "</td>
        <td>" . $row["tip"] . "</td>
      </tr>
      <tr>
        <td  width='100'>Ширина</td>
        <td width='100'>Профиль</td>
        <td width='100'>Диаметр</td>
        <td width='150'>Инд.нагр</td>
        <td width='150'>Инд.скор</td>
        <td width='100'>Остаток</td>
        <td width='100'>Цена за 1</td>
        
        <td>Заказать</td>
      </tr>
      <tr>
      </tr>
    </table>" ;
    sub_func($row, $aSQL, $aName, $aUnion);
    link_bar($page, $pages_count);
    print "<br><br>";
    echo '<p>'.$row['some_field'].'</p>';
    }
   


?>

и сама функция только куда ее прописать  полный код

<?php
function link_bar($page, $pages_count)
{
for ($j = 1; $j <= $pages_count; $j++)
{
// Вывод ссылки
if ($j == $page) {
echo ' <a style="color: #808000;" ><b>'.$j.'</b></a> ';
} else {
echo ' <a style="color: #808000;" href='.$_server['php_self'].'?page='.$j.'>'.$j.'</a> ';
}
// Выводим разделитель после ссылки, кроме последней
// например, вставить "|" между ссылками
if ($j != $pages_count) echo ' ';
}
return true;
} // Конец функции

// Подключение к базе данных
mysql_connect('localhost', 'root', '') or die('error! Нет соединения с сервером mysql!');
mysql_select_db('data_base') or die('error! Нет соединения с базой данных!');

// Подготовка к постраничному выводу
$perpage = 10; // Количество отображаемых данных из БД

if (empty(@$_GET['page']) || ($_GET['page'] <= 0)) {
$page = 1;
} else {
$page = (int) $_get['page']; // Считывание текущей страницы
}
// Общее количество информации
$count = mysql_numrows(mysql_query('select * from table')) or die('error! Записей не найдено!');
$pages_count = ceil($count / $perpage); // Количество страниц

// Если номер страницы оказался больше количества страниц
if ($page > $pages_count) $page = $pages_count;
$start_pos = ($page - 1) * $perpage; // Начальная позиция, для запроса к БД

// Вызов функции, для вывода ссылок на экран
link_bar($page, $pages_count);

// Вывод информации из базы данных
echo '<p><b>Постраничный вывод информации</b></p>';
$result = mysql_query('select * from table limit '.$start_pos.', '.$perpage) or die('error!');
while ($row = mysql_fetch_array($result)) {
echo '<p>'.$row['some_field'].'</p>';
}
?>

402

Re: Выпадающий список

Функцию link_bar() удобнее будет вверх скрипта поместить, она внутри кода не нужна. Нужны только переменные $perpage и $start_pos.

403

Re: Выпадающий список

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

if (count($aUnion) > 0) { $sql = '( ' . implode(' ) UNION ( ', $aUnion) . ' ) limit '.$start_pos.', '.$perpage.'';
} else if ( count($aSQL) <= 0) {$sql = '(
  
    SELECT * FROM `achilles`  limit '.$start_pos.', '.$perpage.' 
  )';


}



 else {
$sql = '(
  
    SELECT * FROM `achilles`  WHERE ' . implode('AND', $aSQL) . ' limit '.$start_pos.', '.$perpage.' GROUP BY model
  ) UNION (
  
    SELECT * FROM `aeolus`  WHERE ' . implode('AND', $aSQL) . 'GROUP BY model
  ) 

тогда выводятся ссылки на страницы но по переходу на них указывает на ошибку в строке

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\localhost\www\autoshina\ACHILLES.php on line 717

строка

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

  если во втором запросе дописать

if (count($aUnion) > 0) { $sql = '( ' . implode(' ) UNION ( ', $aUnion) . ' ) limit '.$start_pos.', '.$perpage.'';
} else if ( count($aSQL) <= 0) {$sql = '(
  
    SELECT * FROM `achilles`  limit '.$start_pos.', '.$perpage.' GROUP BY model
  )';

  то выдает ту же ошибку

404

Re: Выпадающий список

написал функцию вверху над функцией

function link_bar($page, $pages_count)
{
for ($j = 1; $j <= $pages_count; $j++)
{
// Вывод ссылки
if ($j == $page) {
echo ' <a style="color: #808000;" ><b>'.$j.'</b></a> ';
} else {
echo ' <a style="color: #808000;" href='.$_server['php_self'].'?page='.$j.'>'.$j.'</a> ';
}
// Выводим разделитель после ссылки, кроме последней
// например, вставить "|" между ссылками
if ($j != $pages_count) echo ' ';
}
return true;
} // Конец функции

// Подключение к базе данных
mysql_connect('localhost', 'alex', '111') or die('error! Нет соединения с сервером mysql!');
mysql_select_db('shina') or die('error! Нет соединения с базой данных!');

// Подготовка к постраничному выводу
$perpage = 4; // Количество отображаемых данных из БД

if (empty($_GET['page']) || ($_GET['page'] <= 0)) {
$page = 1;
} else {
$page = (int) $_get['page']; // Считывание текущей страницы
}
// Общее количество информации
$count = mysql_numrows(mysql_query('select * from achilles')) or die('error! Записей не найдено!');
$pages_count = ceil($count / $perpage); // Количество страниц

// Если номер страницы оказался больше количества страниц
if ($page > $pages_count) $page = $pages_count;
$start_pos = ($page - 1) * $perpage; // Начальная позиция, для запроса к БД

// Вызов функции, для вывода ссылок на экран
link_bar($page, $pages_count);

// Вывод информации из базы данных
 echo '<p><b>Постраничный вывод информации</b></p>';
$result = mysql_query('select * from achilles limit '.$start_pos.', '.$perpage) or die('error!');
while ($row = mysql_fetch_array($result)) {

}


function sub_func($r, $aSQL, $aName) {

по переходу по ссылкам выводит ошибку ERROR! с етой строки

$result = mysql_query('select * from achilles limit '.$start_pos.', '.$perpage) or die('error!');

405

Re: Выпадающий список

GROUP BY должно идти перед LIMIT.

Смотрите какой запрос формируется из значения переменных, затем проверьте этот запрос в phpMyAdmin.
$result = mysql_query('select * from achilles limit '.$start_pos.', '.$perpage) or die('error!');

406

Re: Выпадающий список

запрос

 SELECT * FROM `achilles`  GROUP BY model limit '.$start_pos.', '.$perpage.' 

  ошибка в phpmyadmin такова

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''.$start_pos.', '.$perpage.'  LIMIT 0, 30' at line 1 

407

Re: Выпадающий список

Вот попробівал простой запрос

<?php
function link_bar($page, $pages_count)
{
for ($j = 1; $j <= $pages_count; $j++)
{
// Вывод ссылки
if ($j == $page) {
echo ' <a style="color: #808000;" ><b>'.$j.'</b></a> ';
} else {
echo ' <a style="color: #808000;" href='.$_server['php_self'].'?page='.$j.'>'.$j.'</a> ';
}
// Выводим разделитель после ссылки, кроме последней
// например, вставить "|" между ссылками
if ($j != $pages_count) echo ' ';
}
return true;
} // Конец функции

// Подключение к базе данных
mysql_connect('localhost', 'alex', '111') or die('error! Нет соединения с сервером mysql!');
mysql_select_db('shina') or die('error! Нет соединения с базой данных!');

// Подготовка к постраничному выводу
$perpage = 2; // Количество отображаемых данных из БД

if (empty($_GET['page']) || ($_GET['page'] <= 0)) {
$page = 1;
} else {
$page = (int) $_get['page']; // Считывание текущей страницы
}
// Общее количество информации
$count = mysql_numrows(mysql_query('select * from achilles')) or die('error! Записей не найдено!');
$pages_count = ceil($count / $perpage); // Количество страниц

// Если номер страницы оказался больше количества страниц
if ($page > $pages_count) $page = $pages_count;
$start_pos = ($page - 1) * $perpage; // Начальная позиция, для запроса к БД

// Вызов функции, для вывода ссылок на экран
link_bar($page, $pages_count);

// Вывод информации из базы данных
echo '<p><b>Постраничный вывод информации</b></p>';
$result = mysql_query('select * from achilles limit '.$start_pos.', '.$perpage) or die('error!');
while ($row = mysql_fetch_array($result)) {
echo '<p>'.$row['model'].'</p>';
}

?>

при етом віводит 2 записи на страницу но при переходе по ссілкам страниц віводит ERROR!

408

Re: Выпадающий список

Ну как вам еще объяснить?

Вот есть строка:
$result = mysql_query('select * from achilles limit '.$start_pos.', '.$perpage) or die('error!');

Посмотрите содержимое переменных $start_pos и $perpage прервав выполнение скрипта, например так:
exit($start_pos . ' - ' . $perpage);

Получив какие-то значения подставьте их в запрос:

select * from `achilles` LIMIT 1, 10

Выполните этот запрос в phpMyAdmin и посмотрите результат.

409

Re: Выпадающий список

если поставить

LIMIT 1, 10

  то выводит ссылки но по переходу по ним выводятся одни и теже записи из бызы а на переменную которая отвечяет за число выводимых записей не реагирует

410

Re: Выпадающий список

Замените эти цифры на значения переменных.

411

Re: Выпадающий список

Заменил на их значения 0, 10   выводятся записи, но по переходу поссылкам  все страницы одинаковые

412

Re: Выпадающий список

Вместо этих цифр должны находиться переменные.

413

Re: Выпадающий список

Так я же с переменных и начял беседу. Ведь когда стоят переменные то при переходе по ссылкам страниц выдает ошибку

414

Re: Выпадающий список

может сам код листалки неправильный?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Untitled Document</title>
</head>

<body>
<?php
function link_bar($page, $pages_count)
{
for ($j = 1; $j <= $pages_count; $j++)
{
// Вывод ссылки
if ($j == $page) {
echo ' <a style="color: #808000;" ><b>'.$j.'</b></a> ';
} else {
echo ' <a style="color: #808000;" href='.$_server['php_self'].'?page='.$j.'>'.$j.'</a> ';
}
// Выводим разделитель после ссылки, кроме последней
// например, вставить "|" между ссылками
if ($j != $pages_count) echo ' ';
}
return true;
} // Конец функции

// Подключение к базе данных
mysql_connect('localhost', 'alex', '111') or die('error! Нет соединения с сервером mysql!');
mysql_select_db('shina') or die('error! Нет соединения с базой данных!');

// Подготовка к постраничному выводу
$perpage = 10; // Количество отображаемых данных из БД

if (empty($_GET['page']) || ($_GET['page'] <= 0)) {
$page = 5;
} else {
$page = (int) $_get['page']; // Считывание текущей страницы
}
// Общее количество информации
$count = mysql_numrows(mysql_query('select * from achilles')) or die('error! Записей не найдено!');
$pages_count = ceil($count / $perpage); // Количество страниц

// Если номер страницы оказался больше количества страниц
if ($page > $pages_count) $page = $pages_count;
$start_pos = ($page - 1) * $perpage; // Начальная позиция, для запроса к БД

// Вызов функции, для вывода ссылок на экран
link_bar($page, $pages_count);

// Вывод информации из базы данных
echo '<p><b>Постраничный вывод информации</b></p>';
$result = mysql_query('select * from achilles limit '.$start_pos.', '.$perpage) or die('error!');
while ($row = mysql_fetch_array($result)) {
echo '<p>'.$row['model'].'</p>';
}

?>
</body>
</html>

вот в етом простом запросе он почемуто выводит 3 последние записи из указаной таблицы хотя в коде я указываю вывод 5 строк на страницу

415

Re: Выпадающий список

$page = 5; - Это означает пятую страницу.
$perpage = 10; - Это означает количество выводимых строк из БД.

павелsimon сказал:

Так я же с переменных и начял беседу. Ведь когда стоят переменные то при переходе по ссылкам страниц выдает ошибку

Что в переменных? Проверьте их.

416

Re: Выпадающий список

Поставил так чтоб отсчет начинался с первой записи и выводилось 3 записи на страницу, все нормально но когда перейти на страницу 2 то пишет ERROR!  и если вернуться на страницу1 то тоже выдает ERROR! тоесть при загрузке страницы адрес выглядит так

http://localhost/autoshina/post.php

  при переходе на страницу 2

http://localhost/autoshina/post.php?page=2

при возврате на страницу 1

http://localhost/autoshina/post.php?page=1

в двух последних случяях выводит ERROR!

417

Re: Выпадающий список

Нашел В чем беда в етой строке метод GET, был написан с маленькой буквы, потому все и летело в никуда.

418 (изменено: павелsimon, 2012-05-03 11:53:58)

Re: Выпадающий список

Теперь новая проблема выставляю чтоб на одну страницу выводилось 2 записи, в самой таблице их 3 но при ето ссылок на страницы стает 7 первые две нормально все выводится а вот остальные 5 пустые, но ведь они вообще не должны выводится

может у меня в запросе ошибка

if (count($aUnion) > 0) { $sql = '( ' . implode(' ) UNION ( ', $aUnion) . ' ) ';
} else if ( count($aSQL) <= 0) {$sql = '(
  
    SELECT * FROM `achilles`  GROUP BY model limit '.$start_pos.', '.$perpage.' 
  )';

а вот так сам вывод происходит

 <?php 

$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {

        
      
    print "<table width='900'  class='bigtable'>
      <tr>
        <td colspan='9'>  Шины " . $row["brand"] . " ...  Модель " . $row["model"] . "</td>
      </tr>
      <tr>
        <td colspan='2'>фото</td>
        <td colspan='7' rowspan='2'>текст</td>
      </tr>
      <tr>
        <td>" . $row["sezon"] . "</td>
        <td>" . $row["tip"] . "</td>
      </tr>
      <tr>
        <td  width='100'>Ширина</td>
        <td width='100'>Профиль</td>
        <td width='100'>Диаметр</td>
        <td width='150'>Инд.нагр</td>
        <td width='150'>Инд.скор</td>
        <td width='100'>Остаток</td>
        <td width='100'>Цена за 1</td>
        
        <td>Заказать</td>
      </tr>
      <tr>
      </tr>
    </table>" ;
    sub_func($row, $aSQL, $aName, $aUnion);
    
    print "<br><br>";
    
}
    
   

link_bar($page, $pages_count);
?>

419

Re: Выпадающий список

Нашол добавил сортировку по модели в запросе функции. Теперь другая проблема так как у меня несколько таблиц то функция выводит по две записи, из каждой в сумме выходит уже не 2 записи на странице, к томуже если перейти по ссылке то страница обновится и в се что было выбрано в чекбоксах обнулится можно както в запросе в самой функие добавить масив чтоли. Чтоб она учитывала выбор из списков и чекбоксов?


сама функция

function link_bar($page, $pages_count)
{
for ($j = 1; $j <= $pages_count; $j++)
{
// Вывод ссылки
if ($j == $page) {
echo ' <a style="color: #808000;" ><b>'.$j.'</b></a> ';
} else {
echo ' <a style="color: #808000;" href='.$_server['php_self'].'?page='.$j.'>'.$j.'</a> ';
}
// Выводим разделитель после ссылки, кроме последней
// например, вставить "|" между ссылками
if ($j != $pages_count) echo ' ';
}
return true;
} // Конец функции

// Подключение к базе данных


// Подготовка к постраничному выводу
$perpage = 2; // Количество отображаемых данных из БД

if (empty($_GET['page']) || ($_GET['page'] <= 0)) {
$page = 1;
} else {
$page = (int) $_GET['page']; // Считывание текущей страницы
}
// Общее количество информации
$count = mysql_numrows(mysql_query('select * from achilles group by model')) or die('error! Записей не найдено!');
$pages_count = ceil($count / $perpage); // Количество страниц

// Если номер страницы оказался больше количества страниц
if ($page > $pages_count) $page = $pages_count;
$start_pos = ($page - 1) * $perpage; // Начальная позиция, для запроса к БД

// Вызов функции, для вывода ссылок на экран


function sub_func($r, $aSQL, $aName) {

запросы с ограничением по LIMIT

if (count($aUnion) > 0) { $sql = '( ' . implode(' ) UNION ( ', $aUnion) . ' ) ';
} else if ( count($aSQL) <= 0) {$sql = '(
  
    SELECT * FROM `achilles`  GROUP BY model limit '.$start_pos.', '.$perpage.' 
  )';


}



 else {
$sql = '(
  
    SELECT * FROM `achilles`  WHERE ' . implode('AND', $aSQL) . ' GROUP BY model limit '.$start_pos.', '.$perpage.' 
  ) UNION (
  
    SELECT * FROM `aeolus`  WHERE ' . implode('AND', $aSQL) . 'GROUP BY model limit '.$start_pos.', '.$perpage.' 
  ) 

420

Re: Выпадающий список

Как правильно в етот запрос функции

$count = mysql_numrows(mysql_query('select * from achilles group by model')) or die('error! Записей не найдено!');

прописать ети 3 условия

if (isset($_POST[$checkbox])) {
    $aUnion[] = ' SELECT * FROM `' . $checkbox . '`  WHERE ' . implode('AND', $aSQL) . ' GROUP BY `model`  limit '.$start_pos.', '.$perpage.' ';
  }
}


if (count($aUnion) > 0) { $sql = '( ' . implode(' ) UNION ( ', $aUnion) . ' ) ';
} else if ( count($aSQL) <= 0) {$sql = '(
  
    SELECT * FROM `achilles`  GROUP BY model limit '.$start_pos.', '.$perpage.' 
  )';
}
 else {
$sql = '(
  
    SELECT * FROM `achilles`  WHERE ' . implode('AND', $aSQL) . ' GROUP BY model limit '.$start_pos.', '.$perpage.' 
  ) UNION (
  
    SELECT * FROM `aeolus`  WHERE ' . implode('AND', $aSQL) . 'GROUP BY model limit '.$start_pos.', '.$perpage.' 
  )   ';
   
}

421

Re: Выпадающий список

Чтобы при перелистывании не происходил сброс, необходимо отправлять данные формы через GET. Соответственно, все POST в коде заменить на GET.
<form method="get">

Для подсчета строк используйте уже имеющиеся запросы, но без LIMIT.

Здесь LIMIT не надо.
$aUnion[] = ' SELECT * FROM `' . $checkbox . '`  WHERE ' . implode('AND', $aSQL) . ' GROUP BY `model`  limit '.$start_pos.', '.$perpage.' ';

Это запрос для подсчета строк.
$sql = '( ' . implode(' ) UNION ( ', $aUnion) . ' ) ';
Это запрос на выборку данных.
$sql = '( ' . implode(' ) UNION ( ', $aUnion) . ' ) LIMIT ' . $start_pos . ', ' . $perpage;

422

Re: Выпадающий список

Извините я немного запутался у меня в функции всего один запрос для подсчета строк

$count = mysql_numrows(mysql_query('select * from achilles group by model')) or die('error! Записей не найдено!');

а дальше в коде есть 3 условия и 3 запроса на выборку, но действует лиш один

else if ( count($aSQL) <= 0) {$sql = '(
  
    SELECT * FROM `achilles`  GROUP BY model limit '.$start_pos.', '.$perpage.' 
  )';

потому что и в функции строки считаются только из таблицы achilles, я думал что в функции нужно было дописать 3 запроса при разных условиях, если выбрано в чекбоксах и в списках то считывать строки в чекбоксах и списках, разве не так?

423

Re: Выпадающий список

павелsimon сказал:

разве не так?

Так.

424

Re: Выпадающий список

Вы писали для подсчета строк брать уже имеющиеся запросы без LIMIT, я понял, просто незнаю как правильно написать
все три запроса с условием и связать их с строкой подсчета информации в таблице

$count = mysql_numrows(mysql_query( как сюда условие с всеми тремя запросами написать) or die('error! Записей не найдено!');

425

Re: Выпадающий список

Это запрос для подсчета строк.
$count_sql = '( ' . implode(' ) UNION ( ', $aUnion) . ' ) ';
$count = mysql_numrows(mysql_query($count_sql) or die('error! Записей не найдено!');
Это запрос на выборку данных.
$sql = '( ' . implode(' ) UNION ( ', $aUnion) . ' ) LIMIT ' . $start_pos . ', ' . $perpage;