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

Форум PHP

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

 

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

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

тема: Неправильно выводится информация
 
 автор: Dizels   (15.08.2008 в 13:02)   письмо автору
 
 

<?php
// выводим категории
$query "SELECT * FROM category WHERE id_parent = '$id_category'";
$cat mysql_query($query);
while (
$ca mysql_fetch_array($cat))
    {
        
$id_category $ca['id_category'];
        
$name $ca['name'];
        
$text $ca['text'];
        
$smallphoto $ca['smallphoto'];
        echo 
"
        <table  border=\"0\" cellpadding=\"5\" cellspacing=\"0\">
        <tr bgcolor=\"#c9c9c8\">
        <td><a href=\"index.php?id_category=
$id_category\"><font color=\"red\">$name</font></a></td>
        <td></td>
        </tr>
        <tr>
        <td><a href=\"index.php?id_category=
$id_category\"><img src=\"$smallphoto\" border=\"0\"></a></td>
        <td>
$text</td>
        </tr>
        </table>
        "
;
    }
// выводим продукцию
$sql "SELECT * FROM prodyct WHERE id_category = '$id_category'";
$rezult mysql_query($sql);
while (
$rez mysql_fetch_array($rezult))
    {
        
$id_prodyct $rez['id_prodyct'];
        
$name $rez['name'];
        
$text $rez['text'];
        
$id_category $rez['id_category'];
        
$photo $rez['photo'];
        
$smallphoto $rez['smallphoto'];    
        echo 
"
        <table  border=\"0\" cellpadding=\"3\" cellspacing=\"0\">
        <tr bgcolor=\"#c9c9c8\">
        <td>
$name</td>
        <td></td>
        </tr>
        <tr>
        <td><img src=\"
$smallphoto\"></td>
        <td>
$text</td>
        </tr>
        </table>
        "
;
    }
?>


Выводит все следующим образом: выводит категории и потом всю продукцию из последней категории - почему так - не пойму, подскажите плз.
В БД все заноситься правильно - проверял.

   
 
 автор: AcidTrash   (15.08.2008 в 13:09)   письмо автору
 
   для: Dizels   (15.08.2008 в 13:02)
 

А чего тут непонятного? Вы проанализируйте свой код.
После первого цикла у вас и получается что, $id_category равна последнему значению из цикла, которую вы потом успешно засовываете во второй SQL-запрос.

   
 
 автор: Dizels   (15.08.2008 в 13:15)   письмо автору
 
   для: AcidTrash   (15.08.2008 в 13:09)
 

А как тогда мне это поменять?

   
 
 автор: AcidTrash   (15.08.2008 в 13:16)   письмо автору
 
   для: Dizels   (15.08.2008 в 13:15)
 

Смотря, что вы хотите в итоге получить.

   
 
 автор: Dizels   (15.08.2008 в 13:21)   письмо автору
 
   для: AcidTrash   (15.08.2008 в 13:16)
 

Чтобы выводились каталоги и если в них есть подкаталоги или продукция - то выводить их, если нет - то соответственно нет.

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

   
 
 автор: OLI   (15.08.2008 в 13:21)   письмо автору
 
   для: Dizels   (15.08.2008 в 13:15)
 

<?php
// выводим категории
$id_category="14";

$query "SELECT * FROM category WHERE id_parent = '$id_category'";
$cat mysql_query($query);
while (
$ca mysql_fetch_array($cat))
    {
        
$id_cat $ca['id_category'];
        
$name $ca['name'];
        
$text $ca['text'];
        
$smallphoto $ca['smallphoto'];
        echo 
"
        <table  border=\"0\" cellpadding=\"5\" cellspacing=\"0\">
        <tr bgcolor=\"#c9c9c8\">
        <td><a href=\"index.php?id_category=
$id_category\"><font color=\"red\">$name</font></a></td>
        <td></td>
        </tr>
        <tr>
        <td><a href=\"index.php?id_category=
$id_cat\"><img src=\"$smallphoto\" border=\"0\"></a></td>
        <td>
$text</td>
        </tr>
        </table>
        "
;
    }
// выводим продукцию
$sql "SELECT * FROM prodyct WHERE id_category = '$id_category'";
$rezult mysql_query($sql);
while (
$rez mysql_fetch_array($rezult))
    {
        
$id_prodyct $rez['id_prodyct'];
        
$name $rez['name'];
        
$text $rez['text'];
        
$id_category $rez['id_category'];
        
$photo $rez['photo'];
        
$smallphoto $rez['smallphoto'];    
        echo 
"
        <table  border=\"0\" cellpadding=\"3\" cellspacing=\"0\">
        <tr bgcolor=\"#c9c9c8\">
        <td>
$name</td>
        <td></td>
        </tr>
        <tr>
        <td><img src=\"
$smallphoto\"></td>
        <td>
$text</td>
        </tr>
        </table>
        "
;
    }
?> 

   
 
 автор: Dizels   (15.08.2008 в 13:25)   письмо автору
 
   для: OLI   (15.08.2008 в 13:21)
 

OLI, переменная id_category у меня ерется из урла, так что это не выход) или я Вас не понял(

   
 
 автор: OLi   (15.08.2008 в 13:45)   письмо автору
 
   для: Dizels   (15.08.2008 в 13:25)
 

Тогда мой вариант не подходит. У тебя напутано с переменными-попробуй сам разобраться!

   
 
 автор: Apcen   (15.08.2008 в 13:46)   письмо автору
 
   для: Dizels   (15.08.2008 в 13:25)
 

покажите вес код, что бы посматреть откуда и как берёт id_category

   
 
 автор: Dizels   (15.08.2008 в 14:02)   письмо автору
 
   для: Apcen   (15.08.2008 в 13:46)
 

<?php
require_once "../admin/config.php";
require_once 
"../util/top.php";

if(empty(
$_GET['id_category']))$id_category=0;
else 
$id_category $_GET['id_category'];

// выводим дерево категорий
 // Выводим путь до текущего раздела
      
$path = array();
        
$name = array();
      
$curr $id_category;
      do
      {
        
$q mysql_query("SELECT id_parent, name FROM category WHERE id_category='$curr'") or die (db_error());
        
$row mysql_fetch_array($q);
        
$curr $row $row[0] : 0//get parent ID
        
$path[] = $curr;
        
$name[] = $row $row[1] : "<a href=\"index.php\">Продукция</a>";

      } while (
$curr);

      
//now reverse $path
      
$path array_reverse($path);
      
$name array_reverse($name);
    
      for(
$i=0;$i<count($name); $i++) {
        if (
$i == count($name) - ) echo ":: <font size=3>".$name[$i]."</font>";
        else echo 
" :: <a href=index.php?id_page=".$path[$i+1]."><font size=3>".$name[$i]."</font></a>";
      }
      
      echo 
"<br>";
?>
<table border="0" cellpadding="0" cellspacing="10">
<tr>
<td>
<?php

// выводим категории
$query "SELECT * FROM category WHERE id_parent = '$id_category'";
$cat mysql_query($query);
while (
$ca mysql_fetch_array($cat))
    {
        
$id_category $ca['id_category'];
        
$name $ca['name'];
        
$text $ca['text'];
        
$smallphoto $ca['smallphoto'];
        echo 
"
        <table  border=\"0\" cellpadding=\"5\" cellspacing=\"0\" width=\"100%\">
        <tr bgcolor=\"#c9c9c8\" width=\"100%\" align=\"left\">
        <td colspan=\"2\"><a href=\"index.php?id_category=
$id_category\"><font color=\"red\">$name</font></a></td>
        </tr>
        <tr align=\"left\">
        <td width=\"130\"><a href=\"index.php?id_category=
$id_category\"><img src=\"$smallphoto\" border=\"0\"></a></td>
        <td align=\"left\">
$text</td>
        </tr>
        </table>
        "
;
    }
// выводим продукцию
$sql "SELECT * FROM prodyct WHERE id_category = '$id_category'";
$rezult mysql_query($sql);
while (
$rez mysql_fetch_array($rezult))
    {
        
$id_prodyct $rez['id_prodyct'];
        
$name $rez['name'];
        
$text $rez['text'];
        
$id_category $rez['id_category'];
        
$photo $rez['photo'];
        
$smallphoto $rez['smallphoto'];    
        echo 
"
        <table  border=\"0\" cellpadding=\"3\" cellspacing=\"0\" width=\"100%\">
        <tr bgcolor=\"#c9c9c8\" width=\"100%\" align=\"left\">
        <td colspan=\"2\">
$name</td>
        </tr>
        <tr width=\"100%\" align=\"left\">
        <td width=\"100\"><img src=\"
$smallphoto\"></td>
        <td align=\"left\">
$text</td>
        </tr>
        </table>
        "
;
    }
?>
</td>
</tr>
</table>
<br><br>
<?php
require_once "../util/bottom.php";
?>

   
 
 автор: Dizels   (15.08.2008 в 14:54)   письмо автору
 
   для: Dizels   (15.08.2008 в 14:02)
 

up

   
 
 автор: mihdan   (15.08.2008 в 16:48)   письмо автору
 
   для: Dizels   (15.08.2008 в 14:02)
 

Оффтоп: просматривается SQL-инъекция

   
 
 автор: Dizels   (15.08.2008 в 17:23)   письмо автору
 
   для: mihdan   (15.08.2008 в 16:48)
 

можно тогда подробнее про инъекцию, всмысле где именно?
ну и как собственно решить ранее озвученный вопрос?

   
 
 автор: GeorgeIV   (15.08.2008 в 17:27)   письмо автору
 
   для: Dizels   (15.08.2008 в 14:02)
 

$id_category = $_GET['id_category']; 
$query = "SELECT * FROM category WHERE id_parent = '$id_category'"; 

вот пришлет хакер вместо id_category инъекцию и все! нельзя совать в запрос прямо с инета!
как минимум, если id_category число, то сделать
$id_category = intval($_GET['id_category']);

   
 
 автор: Dizels   (15.08.2008 в 17:34)   письмо автору
 
   для: GeorgeIV   (15.08.2008 в 17:27)
 

всем спасибо - топик закрыт.

   
Rambler's Top100
вверх

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