Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Постраничный вывод. и сортировка вместе с поиском
 
 автор: krok-m   (12.08.2006 в 01:27)   письмо автору
 
 

Есть рабочая БД, но как сделать Постраничный вывод. и сортировка вместе с поиском (объяснить понятно для простого пользавателя)

<?
$hostname = "baze.an-triumf.ru:64000";
$username = "??????";
$password = "??????";
$dbName = "triumf";
$userstable = "a_vtorkvr";

mysql_connect($hostname,$username,$password) or die ("Не могу создать соединение");
mysql_select_db("$dbName") or die ("Немогу выбрать базу данных");

$result = mysql_query("select * from $userstable order by name asc");
$number = mysql_numrows($result);


echo "<p>Всего объектов: $number </p><br>";

$i=0;
IF ($number == 0) {print "net";}
ELSEIF ($number > 0) {while ($i < $number){$name = mysql_result($result,$i,"name");
$rastoynie = mysql_result($result,$i,"rastoynie");
$status = mysql_result($result,$i,"status");
$mfot = mysql_result($result,$i,"mfot");
$dom = mysql_result($result,$i,"dom");
$btsp = mysql_result($result,$i,"btsp");
$adres = mysql_result($result,$i,"adres");
$dolznost = mysql_result($result,$i,"dolznost");
$text = mysql_result($result,$i,"text");
$cena = mysql_result($result,$i,"cena");
$foto = mysql_result($result,$i,"foto");
echo "

<table cellpadding=0 cellspacing=0 align=center width=420 height=5>
<tr>
<td colspan=10 height=1 bgcolor=#F67F17></td></tr>
<tr>

<td rowspan=1 width=10><img src=$mfot width=50 height=20></td>
<td> <img src=/images/metro.gif width=22 height=17></td>
<td><B><p class=domadown>$name</p></B></td>
<td><p class=domamain>$rastoynie</p></td>
<td><p class=domamain>$status</p></td>
<td><p class=domadown>$cena</p></td>
</tr>
</table>

<table cellpadding=0 cellspacing=0 align=center width=430 height=50>
<tr>
<td colspan=5 height=0 bgcolor=#0B3F72></td></tr>
<tr>
<td width=0 bgcolor=#ffffff></td>
<td rowspan=5 width=60><img src=$foto width=80 height=80></td>
<td width=0 bgcolor=#ffffff></td>
<td>

<table cellpadding=0 cellspacing=0 align=center width=330 bgcolor=#094073 height=50>
<tr>
<td><p class=domadown>$adres</p>

<td><p class=domamain>$dom</p><td><p class=domamain>$dolznost</p><td><p class=domamain>$btsp</p>

<tr>
<td colspan=4><p class=domamain>$text</p></tr>
<tr>
<td></td>
<td><p class=domadown></p></td></tr>
</table>

</td>
<td width=1 bgcolor=#ffffff></td></tr>
<tr>
<td colspan=5 height=1 bgcolor=#ffffff></td></tr>
</table><br>";
$i++;}
}

   
 
 автор: cheops   (12.08.2006 в 02:53)   письмо автору
 
   для: krok-m   (12.08.2006 в 01:27)
 

Возможно вас заинтересуют следующие ссылки
http://www.softtime.ru/info/articlephp.php?id_article=33
http://softtime.ru/forum/srchform.php?id_forum=1&name=%EF%EE%F1%F2%F0%E0%ED%E8%F7+%ED%E0%E2%E8%E3%E0&numberthemes=30&srchwhere=2&id_forum=1&logic=0&send=%CD%E0%E9%F2%E8

   
 
 автор: krok-m   (13.08.2006 в 15:40)   письмо автору
 
   для: cheops   (12.08.2006 в 02:53)
 

ЭЭЭ...... :(
А более детальней носом тыкнуть меня ?
Я простой пользователь и мне немного тяжедовато разбираться в терминах.
заранее спасибо

   
 
 автор: cheops   (13.08.2006 в 16:33)   письмо автору
 
   для: krok-m   (13.08.2006 в 15:40)
 

Тогда давайте дамп таблицы a_vtorkvr (полностью не нужно, главное, чтобы там было несколько записей), чтобы можно было воспроизвести ситуацию на локальной машине.

   
 
 автор: krok-m   (13.08.2006 в 23:45)   письмо автору
 
   для: cheops   (13.08.2006 в 16:33)
 

Спасибо Вам, что уделили моему вопросу время.
Вот так у меня выглядит шапка HTML файла.
Существует несколько проблем :(
1. БД не передает информацию на сайт (хотя вроде бы все работает)
2. И самое главное как сделать, чтобы количество выводимых Базой Данных позиций было ограниченным на странице.
3. И тут возникает проблема создания необходимых страниц.
Заранее огромное спасибо.

......................................................
$result = mysql_query("select * from $userstable order by name asc");
$number = mysql_numrows($result);

echo "<p>Все предложения: $number </p><br>";
$i=0;
IF ($number == 0) {print "net";}
ELSEIF ($number > 0) {while ($i < $number){$Id = mysql_result($result,$i,"Id");
$komnat = mysql_result($result,$i,"komnat");
$gorod = mysql_result($result,$i,"gorod");
$prodavec = mysql_result($result,$i,"prodavec");
$metro = mysql_result($result,$i,"metro");
$rastoynie = mysql_result($result,$i,"rastoynie");
$adres = mysql_result($result,$i,"adres");
$dom = mysql_result($result,$i,"dom");
$ploshd = mysql_result($result,$i,"ploshd");
$balkon = mysql_result($result,$i,"balkon");
$tel = mysql_result($result,$i,"tel");
$sanuzel = mysql_result($result,$i,"sanuzel");
$pol = mysql_result($result,$i,"pol");
$cenametr = mysql_result($result,$i,"cenametr");
$cena = mysql_result($result,$i,"cena");
$status = mysql_result($result,$i,"status");
$text = mysql_result($result,$i,"text");
echo"
....................................................................

   
 
 автор: cheops   (14.08.2006 в 00:50)   письмо автору
 
   для: krok-m   (13.08.2006 в 23:45)
 

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

   
 
 автор: krok-m   (14.08.2006 в 01:23)   письмо автору
 
   для: cheops   (14.08.2006 в 00:50)
 

Я правильно все сделал, или это опять не то ?
--
-- Дамп данных таблицы 'a_vtorkvr1'
--

INSERT INTO 'a_vtorkvr1' VALUES ('002', 'Одна', 'Москва', '775-27-27', 'Перово', '10 мин.пеш', 'Перовская ул., 46.кор 1', '3/5 К', '77/20,1/?', 'нет', 'есть', 'раздел', '?', '$ 584', '$ 45 000', 'Свободная продажа', 'Комнаты: 1/3, окна во двор, хорошее состояние');
INSERT INTO 'a_vtorkvr1' VALUES ('001', 'Одна', 'Москва', '775-27-27', 'Щелковская', '10 мин/тр', 'Алтайская ул., 11', '7/9 П', '37/21,5/6,4', 'балкон', 'есть', 'разд', 'паркет', '$ 3 648', '$ 135 000', 'альтернатива', 'Рядом парк, легкая альтернатива, окна во двор, хорошее состояние, мусоропровод, лифт');

   
 
 автор: cheops   (14.08.2006 в 01:27)   письмо автору
 
   для: krok-m   (14.08.2006 в 01:23)
 

Если не сложно выполните ещё оператор
SHOW CREATE TABLE a_vtorkvr1

   
 
 автор: krok-m   (14.08.2006 в 01:55)   письмо автору
 
   для: cheops   (14.08.2006 в 01:27)
 

Как это сделать ? чуть подробней намекните. плиз

   
 
 автор: Lelik   (14.08.2006 в 01:25)   письмо автору
 
   для: cheops   (14.08.2006 в 00:50)
 

уложи дамп и структуру БД в теги код /код, а то из-за одиночных кавычек читить неудобно

   
 
 автор: Lelik   (14.08.2006 в 01:31)   письмо автору
 
   для: Lelik   (14.08.2006 в 01:25)
 

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

<?php
$query 
"SELECT * FROM table ORDER BY имя_поля_по_которому_сортируем_данные";
// для обратной сортировки
$query "SELECT * FROM table ORDER BY имя_поля_по_которому_сортируем_данные DESC";
?>


для вывода данных из бд используем делаем так

<?php
$txt 
mysql_query($query);
while(
$text mysql_fetch_array($txt))
{
   echo 
$txt['name'];//И т.д.
}
?>

   
 
 автор: krok-m   (14.08.2006 в 01:34)   письмо автору
 
   для: Lelik   (14.08.2006 в 01:25)
 

Так правильно?!!
<!-- таблица a_vtorkvr1 -->
<a_vtorkvr1>
<Id>002</Id>
<komnat>Одна</komnat>
<gorod>Москва</gorod>
<prodave>775-27-27</prodave>
<merto>Перово</merto>
<rastoynie>10 мин.пеш</rastoynie>
<adres>Перовская ул., 46.кор 1</adres>
<dom>3/5 К</dom>
<ploshd>77/20,1/?</ploshd>
<balkon>нет</balkon>
<tel>есть</tel>
<sanuzel>раздел</sanuzel>
<pol>?</pol>
<cenametr>$ 584</cenametr>
<cena>$ 45 000</cena>
<status>Свободная продажа</status>
<text>Комнаты: 1/3, окна во двор, хорошее состояние</text>
</a_vtorkvr1>
<a_vtorkvr1>
<Id>001</Id>
<komnat>Одна</komnat>
<gorod>Москва</gorod>
<prodave>775-27-27</prodave>
<merto>Щелковская</merto>
<rastoynie>10 мин/тр</rastoynie>
<adres>Алтайская ул., 11</adres>
<dom>7/9 П</dom>
<ploshd>37/21,5/6,4</ploshd>
<balkon>балкон</balkon>
<tel>есть</tel>
<sanuzel>разд</sanuzel>
<pol>паркет</pol>
<cenametr>$ 3 648</cenametr>
<cena>$ 135 000</cena>
<status>альтернатива</status>
<text>Рядом парк, легкая альтернатива, окна во двор, хорошее состояние, мусоропровод, лифт</text>
</a_vtorkvr1>

   
 
 автор: Lelik   (14.08.2006 в 01:35)   письмо автору
 
   для: krok-m   (14.08.2006 в 01:34)
 

как ты ее создавал? дай этот запрос

CREATE TABLE ...

   
 
 автор: krok-m   (14.08.2006 в 01:54)   письмо автору
 
   для: Lelik   (14.08.2006 в 01:35)
 

Я ее не создавал, доделываю за другими, я не программер и в этом вся проблема. Но самое главное есть желание научиться. В книгах нифига не понимаю. :(
Сейчас попробую разобраться в Ваших советах. Я не тормоз :), я просто медленно соображаю.

   
 
 автор: Lelik   (14.08.2006 в 02:03)   письмо автору
 
   для: krok-m   (14.08.2006 в 01:54)
 

тогда через phpmyadmin зайди в структуру БД и скинь ее сюда в виде

Table NAME
имя поля 1
имя поля2
...

   
 
 автор: krok-m   (14.08.2006 в 02:11)   письмо автору
 
   для: Lelik   (14.08.2006 в 02:03)
 

Это то самое?
-- Структура таблицы 'a_vtorkvr1'
--

CREATE TABLE 'a_vtorkvr1' (
'Id' varchar(30) NOT NULL default '',
'komnat' varchar(10) NOT NULL default '',
'gorod' varchar(20) NOT NULL default '',
'prodave' varchar(50) NOT NULL default '',
'merto' varchar(50) NOT NULL default '',
'rastoynie' varchar(10) NOT NULL default '',
'adres' varchar(50) NOT NULL default '',
'dom' varchar(10) NOT NULL default '',
'ploshd' varchar(30) NOT NULL default '',
'balkon' varchar(10) NOT NULL default '',
'tel' varchar(20) NOT NULL default '',
'sanuzel' varchar(20) NOT NULL default '',
'pol' varchar(20) NOT NULL default '',
'cenametr' varchar(20) NOT NULL default '',
'cena' varchar(20) NOT NULL default '',
'status' varchar(20) NOT NULL default '',
'text' text NOT NULL,
UNIQUE KEY 'merto' ('merto'),
KEY 'Id' ('Id')
) TYPE=MyISAM;

   
 
 автор: Lelik   (14.08.2006 в 02:13)   письмо автору
 
   для: krok-m   (14.08.2006 в 02:11)
 

ага, ща чего-нибудь придумаем

   
 
 автор: Lelik   (14.08.2006 в 02:16)   письмо автору
 
   для: krok-m   (14.08.2006 в 02:11)
 

скрипт будет выглядеть примерно так

<?php
  
// Подсчитуем общее количество данных в БД
  
$quer "SELECT count(*) FROM a_vtorkvr1";
  
$res mysql_query($quer);
  
$total mysql_fetch_array($res);
  
$count $total['count(*)'];

  
// Устанавливаем количество сообщений, которое будем выводить
  // и количество страниц которое получится в итоге
  
$end 30;
  if(
$_GET['start'] == ""$_GET['start'] = 0;
  if(
$_GET['start'] < $_GET['start'] = 0;
  
$start $_GET['start'];
  if(
$_GET['page'] == ""$_GET['page'] = 1;
  
$page $_GET['page'];
  
$dln $count $end;
  
$col = (int)$dln 1;


  
// Выводим данные из бд

  
$query "SELECT * FROM a_vtorkvr1 ORDER BY komnat LIMIT ".$start.", ".$end;
  
$result mysql_query($query);
  if(!
$result) echo "Error - ".mysql_error();
  while(
$num mysql_fetch_array($result))
     {
         
$i++;
         if(
$num['gorod'] == ""$txt "";
         else
            
$txt " - ".$num['komnat'];
         echo 
"<b>".$i."</b> ".$num['gorod'].$txt."<br>";
     }
  echo 
'<br>$count ='.$count;
  echo 
'<br>'.$col.'<br>';

  
// Делаем навигацию
  
for ($i 0$i $col$i++)
     {
         if(
$page == ($i+1))
            {
                
$href $page;
            }
         else
             
$href "<A href=\"index.php?start=".($end $i)."&page=".($i+1)."\">".($i+1)."</A>";
         echo 
$href." ";
     }
?>

   
 
 автор: krok-m   (14.08.2006 в 02:28)   письмо автору
 
   для: Lelik   (14.08.2006 в 02:16)
 

Это нужно просто скопировать вместо того, Что у мя было? Заменить весь файл HTML?

   
 
 автор: Lelik   (14.08.2006 в 02:35)   письмо автору
 
   для: krok-m   (14.08.2006 в 02:28)
 

надо оставить часть кода для подключения к базе данных.

и в цикле while немного поменять код вывода, а точнее, то что выводить - под свой сайт.

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

   
 
 автор: krok-m   (14.08.2006 в 03:01)   письмо автору
 
   для: Lelik   (14.08.2006 в 02:35)
 

Я, наверное, полный тормоз, но перепробовал все варианты и нечего.....
Вот полный код моей страницы, куда что ставить?
------------------------------------------------------------------------------------------------------------
<?
$hostname = "baze.an-triumf.ru:64000";
$username = "*********";
$password = "*********";
$dbName = "triumf";
$userstable = "a_vtorkvr1";
mysql_connect($hostname,$username,$password) or die ("kkkkkkkkkkkkkkkkkkk");
mysql_select_db("$dbName") or die ("kkkkkkkkkkkkk");

$result = mysql_query("select * from $userstable order by name asc");
$number = mysql_numrows($result);


echo "<p>всего представлено вариантов: $number </p><br>";
$i=0;
IF ($number == 0) {print "net";}
ELSEIF ($number > 0) {while ($i < $number){$Id = mysql_result($result,$i,"Id");
$komnat = mysql_result($result,$i,"komnat");
$gorod = mysql_result($result,$i,"gorod");
$prodavec = mysql_result($result,$i,"prodavec");
$metro = mysql_result($result,$i,"metro");
$rastoynie = mysql_result($result,$i,"rastoynie");
$adres = mysql_result($result,$i,"adres");
$dom = mysql_result($result,$i,"dom");
$ploshd = mysql_result($result,$i,"ploshd");
$balkon = mysql_result($result,$i,"balkon");
$tel = mysql_result($result,$i,"tel");
$sanuzel = mysql_result($result,$i,"sanuzel");
$pol = mysql_result($result,$i,"pol");
$cenametr = mysql_result($result,$i,"cenametr");
$cena = mysql_result($result,$i,"cena");
$status = mysql_result($result,$i,"status");
$text = mysql_result($result,$i,"text");
echo"

<table width=440 height=5>
<tr>
<td><p class=domamain><font color=#FFCC00>
лот $Id &nbsp;<span style=background-color=#000066><font color=#FFCC00>
$komnat комнатная квартира &nbsp;</font><font color=#3399FF>
Город:</font> $gorod &nbsp;<font color=#3399FF>
Продавец:</font> $prodavec<font color=#3399FF>
<p class=domamain><font color=#3399FF>
Метро:</font> $metro &nbsp;<font color=#3399FF>
Время:</font> $rastoynie &nbsp;<font color=#3399FF>
Адрес:</font> $adres
<p class=domamain><font color=#3399FF>
Э/эт:</font> $dom &nbsp;<font color=#3399FF>
Пл:</font> $ploshd &nbsp;<font color=#3399FF>
Бал:</font> $balkon &nbsp;<font color=#3399FF>
Тел:</font> $tel &nbsp;<font color=#3399FF>
С/уз:</font> $sanuzel &nbsp;<font color=#3399FF>
Пол:</font> $pol
<p class=domamain><font color=#3399FF>
Цена за м.кв:</font> $cenametr &nbsp;<font color=#3399FF>
Цена:</font> $cena &nbsp;<font color=#3399FF>
Статус:</font> $status &nbsp;
<p class=domamain><font color=#3399FF>
Дополнительно:</font> $text<font color=#3399FF>
</p></td>
</tr>
</table>";
$i++;}
}

   
 
 автор: Lelik   (14.08.2006 в 03:58)   письмо автору
 
   для: krok-m   (14.08.2006 в 03:01)
 


<?php 
$hostname 
"baze.an-triumf.ru:64000";
$username "*********";
$password "*********";
$dbName "triumf";
$userstable "a_vtorkvr1";
mysql_connect($hostname,$username,$password) or die ("kkkkkkkkkkkkkkkkkkk");
mysql_select_db("$dbName") or die ("kkkkkkkkkkkkk");


  
// Подсчитуем общее количество данных в БД 
  
$quer "SELECT count(*) FROM a_vtorkvr1"
  
$res mysql_query($quer); 
  
$total mysql_fetch_array($res); 
  
$count $total['count(*)']; 

echo 
"<p>всего представлено вариантов: $count </p><br>";

  
// Устанавливаем количество сообщений, которое будем выводить 
  // и количество страниц которое получится в итоге 
  
$end 30
  if(
$_GET['start'] == ""$_GET['start'] = 0
  if(
$_GET['start'] < $_GET['start'] = 0
  
$start $_GET['start']; 
  if(
$_GET['page'] == ""$_GET['page'] = 1
  
$page $_GET['page']; 
  
$dln $count $end
  
$col = (int)$dln 1


  
// Выводим данные из бд 

  
$query "SELECT * FROM a_vtorkvr1 ORDER BY komnat LIMIT ".$start.", ".$end
  
$result mysql_query($query); 
  if(!
$result) echo "Error - ".mysql_error(); 
  while(
$num mysql_fetch_array($result)) 
     { 
         
$i 0;
         
$i++;
         
// Вот здесь выставляем выводимые данные
         // например - этот код выводит по очереди города записанные в БД
         // с их нумерацией от 1 и до последнего
         
echo "<b>".$i."</b> ".$num['gorod'].$txt."<br>"
     } 
  echo 
'<br>$count ='.$count
  echo 
'<br>'.$col.'<br>'

  
// Делаем навигацию 
  
for ($i 0$i $col$i++) 
     { 
         if(
$page == ($i+1)) 
            { 
                
$href $page
            } 
         else 
             
$href "<A href=\"index.php?start=".($end $i)."&page=".($i+1)."\">".($i+1)."</A>"
         echo 
$href." "
     } 
?>

   
 
 автор: krok-m   (14.08.2006 в 10:44)   письмо автору
 
   для: Lelik   (14.08.2006 в 03:58)
 

Большое Вам спасибо !!!
Очень помогли. Все работает и даже очень хорошо.
:)

   
 
 автор: Lelik   (14.08.2006 в 01:33)   письмо автору
 
   для: krok-m   (13.08.2006 в 23:45)
 

для ограничения вывода используй такой запрос

mysql_query("select * from $userstable order by name LIMIT 0, 30");

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования