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

Форум PHP

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

 

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

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

тема: Проблема с выборкой.
 
 автор: Antik_   (16.05.2007 в 07:43)   письмо автору
 
 

Вообщем суть такая есть как бы каталог, в нём категории при просмотре одной из категории выводиться всё что в ней находиться буквально по 3-4 столбца, далее по сцылке переход на детальный просмотр, суть проблемы, при переходе выводиться тока одна позиция всё время.
Во собственно код.

echo "<p align=center class=\"box\">$navi_h";

$query = mysql_query("SELECT * FROM catalog
            WHERE id_catalog=".$_GET['id_parent'])or die("Invalid query: " . mysql_error());
while ($row = mysql_fetch_row($query)){echo "$row[1]";}


$query="SELECT * FROM obiev WHERE id_catalog=".$_GET['id_parent']."";
$result = mysql_query($query) or die("Ошибка обработки данных: " . mysql_error());
while ($row = mysql_fetch_assoc($result))
{

switch ($row['tips'])
          {
            case 'tip':
              $tips = "Тип объявления";
              break;
            case 'serch':
              $tips = "Поиск Работы";
              break;
                          case 'pred_rab':
              $tips = "Предложение работы";
              break;
            case 'bay':
              $tips = "Покупка";
              break;
            case 'sel':
              $tips = "Продажа";
              break;
            case 'yslygi':
              $tips = "Услуги";
              break;

           }

           switch ($row['cena'])
          {
            case 'tvcen':
              $cena = "Твёрдая цена";
              break;
            case 'torg':
              $cena = "Торг";
              break;
            case 'max':
              $cena = "Максимальная";
              break;
                          case 'min':
              $cena = "Минимальная";
              break;
          }
              }
echo "&nbsp;->&nbsp;$tips";
$query = mysql_query("SELECT * FROM obiev WHERE id_catalog=".$_GET['id_parent']);
$row = mysql_fetch_row($query);
echo"&nbsp;&nbsp;&nbsp;&nbsp;просмотров[$row[13]]";



echo "</a>";

echo "</p>";



      // Выбираем из базы product товарные позиции относящиеся к
      // текущему каталогу
 $query= mysql_query("SELECT * FROM obiev
                WHERE id_catalog=".$_GET['id_parent']);
$row = mysql_fetch_row($query);
      {
        // Выводим заголовок таблицы
      ?>
     <table class=bodytable width="100%" border="1" cellpadding=2 cellspacing=0 bordercolorlight=gray bordercolordark=white>
      <?
        
echo "<tr align=center class='tableheader'>
                <td><p class=help>ТИП</td>
                <td><p class=help>Заголовок</td>
                <td><p class=help>Цена</td>
                <td><p class=help>Имя</td>
                <td><p class=help>Email</td>
                <td><p class=help>Телефон</td>
                <td><p class=help>Страна</td>
                <td><p class=help>Город</td>
                <td><p class=help>Сообщение</td>
                <td><p class=help>Дата</td>
                                             </tr>"
;

          
// Определяем район
          
switch ($row['tips'])
          {
            case 
'tip':
              
$tips "Тип объявления";
              break;
            case 
'serch':
              
$tips "Поиск Работы";
              break;
                          case 
'pred_rab':
              
$tips "Предложение работы";
              break;
            case 
'bay':
              
$tips "Покупка";
              break;
            case 
'sel':
              
$tips "Продажа";
              break;
            case 
'yslygi':
              
$tips "Услуги";
              break;

           }

          switch (
$row['cena'])
          {
            case 
'tvcen':
              
$cena "Твёрдая цена";
              break;
            case 
'torg':
              
$cena "Торг";
              break;
            case 
'max':
              
$cena "Максимальная";
              break;
                          case 
'min':
              
$cena "Минимальная";
              break;
          }



          echo 
"<tr>
                  <td><p class=small>&nbsp;
$tips</td>
                  <td><p class=small>&nbsp;"
.$row['2']."</td>
                  <td><p class=small>&nbsp;
$cena</td>
                  <td><p class=small>&nbsp;"
.$row['5']."</td>
                  <td><p class=small>&nbsp;"
.$row['4']."</td>
                  <td><p class=small>&nbsp;"
.$row['6']."</td>
                  <td><p class=small>&nbsp;"
.$row['9']."</td>
                  <td><p class=small>&nbsp;"
.$row['10']."</td>
                  <td><p class=small>&nbsp;"
.$row['1']."</td>
                  <td><p class=small>&nbsp;"
.$row['11']."</td>
             </tr></table>"
;
        }



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

<a href=detail.php?id_parent=".$_GET['id_parent']."&id_catalog=".$par['id_catalog']."&id_product=".$par['id_product'].">$tips</a>

   
 
 автор: cheops   (16.05.2007 в 10:16)   письмо автору
 
   для: Antik_   (16.05.2007 в 07:43)
 

Прикрепите дамп таблиц catalog и obiev (лучше в виде архива), чтобы можно было воспроизвести ситуацию?

   
 
 автор: Antik_   (16.05.2007 в 10:26)   письмо автору
 
   для: cheops   (16.05.2007 в 10:16)
 

Базу зачистил...

CREATE TABLE `obiev` (
  `id_product` int(11) NOT NULL auto_increment,
  `post` tinytext NOT NULL,
  `note` tinytext NOT NULL,
  `tips` enum('tip','serch','bay','sel','yslygi','pred_rab') NOT NULL default 'tip',
  `email` tinytext NOT NULL,
  `name` tinytext NOT NULL,
  `tel` tinytext NOT NULL,
  `cena` enum('tvcen','torg','max','min') NOT NULL default 'tvcen',
  `tcen` tinytext NOT NULL,
  `strana` tinytext NOT NULL,
  `gorod` tinytext NOT NULL,
  `time` datetime NOT NULL default '0000-00-00 00:00:00',
  `reiting` smallint(6) default '0',
  `id_catalog` int(8) NOT NULL default '0',
  PRIMARY KEY  (`id_product`),
  KEY `id_catalog` (`id_catalog`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


CREATE TABLE `catalog` (
  `id_catalog` int(8) NOT NULL auto_increment,
  `name` text NOT NULL,
  `id_parent` int(8) NOT NULL default '0',
  PRIMARY KEY  (`id_catalog`),
  KEY `id_parent` (`id_parent`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

   
 
 автор: Trianon   (16.05.2007 в 10:45)   письмо автору
 
   для: Antik_   (16.05.2007 в 10:26)
 

>Базу зачистил...

Ну на пустой базе ой как классно отлаживаться.
С другой стороны, при пустой базе всё должно работать нормально :)

   
 
 автор: Antik_   (16.05.2007 в 11:00)   письмо автору
 
   для: Trianon   (16.05.2007 в 10:45)
 

Вот, если я правильно понел ваш вопрос.

      echo "<p align=center class=\"box\">$navi_h";
 if($_GET['id_parent'] != 0)
 {
$query = mysql_query("SELECT * FROM catalog
            WHERE id_catalog=".$_GET['id_parent'])or die("Invalid query: " . mysql_error());
while ($row = mysql_fetch_row($query)){echo "[$row[1]]";}

$query = mysql_query("SELECT * FROM obiev WHERE id_catalog='$id_catalog'")or die("Invalid query: " . mysql_error());
$row = mysql_fetch_array($query);
echo " &nbsp;&nbsp;Объявлений (всего $row[12]) Страница:[$page]</p>";
$list_news_delete=20;
if(!$block && !$page_b){$block=0;}
$query = mysql_query("SELECT * FROM catalog WHERE id_catalog=".$_GET['id_parent'])or die("Invalid query: " . mysql_error());
$row = mysql_fetch_array($query);
$total_messages=$row["4"];

$query = mysql_query("SELECT MAX(id_catalog) FROM obiev WHERE reiting='$reiting'");
$row = mysql_fetch_array($query);
$total_block=($total_messages-($total_messages % 200))/200 ;
$total_page=($total_messages-($total_messages % 20))/20 +1;

if($page<1)
{
$page=1;
$start_page=0;
$end_page=$list_news_delete;
}


// если послана страница ввыводим станиц
if($page || $page_p || $page_m)
{
if($page_p) {
$block++;
$page=$page_p;
}
if($page_m) {
$block--;
$page=$page_m;
}
$start_page=$page*$list_news_delete-$list_news_delete;
$end_page=$list_news_delete;

$i=$block*200;
}
$nu=1;

$query = "SELECT * FROM obiev
                WHERE id_catalog=".$_GET['id_parent']." AND
                      '$lasttime'<time
                ORDER BY time";
      $prt = mysql_query($query);
      if($prt)
      {

echo "
<p class=\"box\">";
echo "<table width=\"100%\">";
echo "<tr align=center>
                <td><p class=box>ТИП</td>
                <td><p class=box>Заголовок</td>
                <td><p class=box>Цена</td>
                <td><p class=box>Имя</td>
                <td><p class=box>Email</td>
                <td><p class=box>Телефон</td>
                <td><p class=box>Страна</td>
                <td><p class=box>Добавленно</td>

                             </tr>

</tr>";

$str1="<tr bgcolor=#e6e6e6>";
$str2="<tr bgcolor=#ffffff>";
$istr=2505;

$nom=($page-1)*30;
while($par = mysql_fetch_array($prt))
        {


          // Определяем район
          switch ($par['tips'])
          {
            case 'tip':
              $tips = "Тип объявления";
              break;
            case 'serch':
              $tips = "Поиск Работы";
              break;
                          case 'pred_rab':
              $tips = "Предложение работы";
              break;
            case 'bay':
              $tips = "Покупка";
              break;
            case 'sel':
              $tips = "Продажа";
              break;
            case 'yslygi':
              $tips = "Услуги";
              break;

           }
$nom=$nom+1;

$istr=$istr+1;
if($istr%2==0)
{$str=$str1;}
 else {$str=$str2;}

echo "<tr>
                  <p class=\"box\"><td>&nbsp;<a href=detail.php?id_parent=".$_GET['id_parent']."&id_catalog=".$par['id_catalog']."&id_product=".$par['id_product'].">$tips</a></td></p>
                  <td>&nbsp;".$par['note']."</td>
                  <td>&nbsp;".$par['name']."</td>
                  <td>&nbsp;".$par['email']."</td>
                  <td>&nbsp;".$par['tel']."</td>
                  <td>&nbsp;".$par['strana']."</td>
                  <td>&nbsp;".$par['gorod']."</td>
                  <td>&nbsp;".$par['time']."</td>
 <br>             </tr>";
        }
      }

if ($nu==2)
$nu=1;
else
$nu=2;
}
echo "
</tr>
</table>

</p>

";
echo"

<p class=\"box\"><table>
<tr><td><a class=menu href=\"addprodform.php?id_parent=$id_parent&id_catalog=$id_parent\">Добавить Объявление</a>
</td></tr></table></p>";

   
 
 автор: Trianon   (16.05.2007 в 11:05)   письмо автору
 
   для: Antik_   (16.05.2007 в 11:00)
 

неправильно поняли.
Вот фрагмент Вашего кода.

  // Выбираем из базы product товарные позиции относящиеся к 
      // текущему каталогу 
 $query= mysql_query("SELECT * FROM obiev 
                WHERE id_catalog=".$_GET['id_parent']); 
$row = mysql_fetch_row($query); 
      { 
        // Выводим заголовок таблицы   


Такой код выдаст лишь первую строку результата запроса.
Для вытягивания всех нужен цикл.
Где оператор цикла?

   
 
 автор: Antik_   (16.05.2007 в 11:16)   письмо автору
 
   для: Trianon   (16.05.2007 в 11:05)
 

Гм запутался сам, суть в том что он при нажатии на сцылку выводить один и тот же аргумент, тоесть сцылка будет товар2_сатаог1_перент1 то он выведит товар1_сатаог1_перент1 вот в чем проблема.

   
 
 автор: Trianon   (16.05.2007 в 10:43)   письмо автору
 
   для: Antik_   (16.05.2007 в 07:43)
 

а где опрератор цикла, шагающий по объявлениям?

   
Rambler's Top100
вверх

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