|
 22.1 Кб |
|
| Привет. Не могу избавится от проблемы (см.Скриншот) дублируется вывод записей
Вывожу рекурсивной функцией категории с подкатегориями - а под ними вывожу строки, которые относятся к нужной категории - с этим все нормально. НО мне нужно сделать еще третий запрос к другой таблице - узнать есть ли там строки с нужным мне id ( их там от 0 до бесконечности может быть) и если есть - то нужно галку на чексе поставить. Галки ставятся :) только если в третьей таблице находится больше 1 товара - получается так - как на скриншоте.
Подскажите, пожалуйста как избавится от этого ?
$idprod = $_GET['idprod'];
function ShowTree($ParentID, $lvl) {
global $lvl,$tblName_s_cat,$tblName_s_prod,$idprod,$tblName_s_dp;
$lvl++;
$result = mysql_query("SELECT * FROM $tblName_s_cat WHERE pidcat = " . $ParentID . " ORDER BY pm ASC, name ASC");
if (mysql_num_rows($result) > 0) {
echo("<UL>\n");
while ( $row = mysql_fetch_array($result) ) {
$idcat = $row["idcat"];
$pidcat = $row["pidcat"];
echo("<LI>\n");
echo "$row[name]";
$ssw = mysql_query("SELECT * FROM $tblName_s_dp WHERE idprod = '$idprod'");
while ($ssw3 = mysql_fetch_array($ssw)) {
$socm = mysql_query("SELECT * FROM $tblName_s_prod WHERE idcat = '$idcat'");
while ( $rows = mysql_fetch_array($socm) ) {
if ($rows[idprod] == $ssw3[iddprod]) {
echo "$ssw3[iddprod]<input type=checkbox checked name='dopp[]' value='$rows[idprod]'>$rows[name]<br>";
} else {
echo "$ssw3[iddprod]<input type=checkbox name='dopp[]' value='$rows[idprod]'>$rows[name]<br>";}
}
}
echo "</div>";
ShowTree($idcat, $lvl);
$lvl--;
}
echo("</UL>\n");
}
}
ShowTree(0, 0);
|
| |
|
|
|
|
|
|
|
для: virtus1k
(12.10.2008 в 10:09)
| | Прям по (см.Скриншот) и предложить решение? Ну тогда в фотошоп - инструмент "выделить", иструмент "ластик" :) | |
|
|
|
|
|
|
|
для: sim5
(12.10.2008 в 10:12)
| | сорри - то я по ошибке нажал энтер - и он не дописав месаг - заслал!!! ВСЕ подкорректировал ;) | |
|
|
|
|
|
|
|
для: virtus1k
(12.10.2008 в 10:09)
| | Вас не затруднит причесать оформление кода?
Несложные же правила.
Открывающая фигурная скобка с новой строки .
Соответствующая фигурная закрывающая - под открывающей.
Внутри них текст сдвинут вправо.
function ShowTree($ParentID, $lvl)
{
global $lvl,$tblName_s_cat,$tblName_s_prod,$idprod,$tblName_s_dp;
$lvl++;
...
}
|
Сейчас текст читать очень тяжело. | |
|
|
|
|
|
|
|
для: Trianon
(12.10.2008 в 10:24)
| | Вот, что смог причесал :( плохой я парикмахер :) я это знаю
$idprod = $_GET['idprod'];
function ShowTree($ParentID, $lvl)
{
global $lvl,$tblName_s_cat,$tblName_s_prod,$idprod,$tblName_s_dp;
$lvl++;
$result = mysql_query("SELECT * FROM $tblName_s_cat WHERE pidcat = " . $ParentID . " ORDER BY pm ASC, name ASC");
if (mysql_num_rows($result) > 0)
{
echo("<UL>\n");
while ( $row = mysql_fetch_array($result) )
{
$idcat = $row["idcat"];
$pidcat = $row["pidcat"];
echo("<LI>\n");
echo "$row[name]";
$ssw = mysql_query("SELECT * FROM $tblName_s_dp WHERE idprod = '$idprod'");
while ($ssw3 = mysql_fetch_array($ssw))
{
$socm = mysql_query("SELECT * FROM $tblName_s_prod WHERE idcat = '$idcat'");
while ( $rows = mysql_fetch_array($socm) )
{
if ($rows[idprod] == $ssw3[iddprod])
{
echo "$ssw3[iddprod]<input type=checkbox checked name='dopp[]' value='$rows[idprod]'>$rows[name]<br>";
}
else
{
echo "$ssw3[iddprod]<input type=checkbox name='dopp[]' value='$rows[idprod]'>$rows[name]<br>";
}
}
}
echo "</div>";
ShowTree($idcat, $lvl);
$lvl--;
}
echo("</UL>\n");
}
}
ShowTree(0, 0);
|
| |
|
|
|
|
|
|
|
для: virtus1k
(12.10.2008 в 10:26)
| | горе луковое...
<?
$idprod = $_GET['idprod'];
function ShowTree($ParentID, $lvl)
{
global $lvl,$tblName_s_cat,$tblName_s_prod,$idprod,$tblName_s_dp;
$lvl++;
$result = mysql_query("SELECT * FROM $tblName_s_cat WHERE pidcat = " . $ParentID . " ORDER BY pm ASC, name ASC");
if (mysql_num_rows($result) > 0)
{
echo("<UL>\n");
while ( $row = mysql_fetch_array($result) )
{
$idcat = $row["idcat"];
$pidcat = $row["pidcat"];
echo("<LI>\n");
echo "$row[name]";
$ssw = mysql_query("SELECT * FROM $tblName_s_dp WHERE idprod = '$idprod'");
while ($ssw3 = mysql_fetch_array($ssw))
{
$socm = mysql_query("SELECT * FROM $tblName_s_prod WHERE idcat = '$idcat'");
while ( $rows = mysql_fetch_array($socm) )
{
if ($rows[idprod] == $ssw3[iddprod])
echo "$ssw3[iddprod]<input type=checkbox checked name='dopp[]' value='$rows[idprod]'>$rows[name]<br>";
else
echo "$ssw3[iddprod]<input type=checkbox name='dopp[]' value='$rows[idprod]'>$rows[name]<br>";
}
}
echo "</div>";
ShowTree($idcat, $lvl);
$lvl--;
}
echo("</UL>\n");
}
}
ShowTree(0, 0);
|
Неплохо было бы сообщить назначение таблиц $tblName_s_prod и $tblName_s_dp;
А заодно и привести их дампы. Только более осмысленные, чем у Вас на картинке.
Я, например, не понял, что эти две таблицы описывают. | |
|
|
|
|
 1.2 Кб |
|
|
для: Trianon
(12.10.2008 в 10:46)
| | дампы во вложении!
_prod - это таблица содержит продукты, которые относятся к _cat
_dp - это дополнительные продукты, которые привязываются к какому-либо продукту из _prod
Trianon - а скажиет, пожалуйста - Вы в редакторе причесывали каком-о ? или в блокноте? | |
|
|
|
|
|
|
|
для: virtus1k
(12.10.2008 в 11:14)
| | Конкретно Ваш - в блокноте.
Теперь еще раз.
Какие строки Вы хотите вывести?
И какие галки расставить?
PS. Дамп пониманию не поспособствовал. | |
|
|
|
|
|
|
|
для: Trianon
(12.10.2008 в 11:30)
| | значит. Открываю продукт для редактирования! id через гет его получаю. У меня этот кусок кода выводит категории с подкатегориями и продуктами, которые относятся к нужной категории. Рядом с каждым продуктом чекбокс (для привязки еще каких-то товаов к текущему редактируемому) Необходимо сделать чекбоксы checked - если в таблице _dp есть записи про этот товар.... т.е. при создании к нему привязали еще какие-то товары.
Вроде все | |
|
|
|
|
|
|
|
для: virtus1k
(12.10.2008 в 11:35)
| | >У меня этот кусок кода выводит категории с подкатегориями и продуктами, которые относятся к нужной категории.
Я вижу , что Вы ведете цикл не по той таблице.
echo "$row[name]";
$ssw = mysql_query("SELECT * FROM $tblName_s_dp WHERE idprod = '$idprod'");
while ($ssw3 = mysql_fetch_array($ssw))
{
|
Здесь Вы перебираете строки таблицы dp вместо того, чтобы перебирать строки таблицы prod | |
|
|
|
|
|
|
|
для: Trianon
(12.10.2008 в 11:46)
| | я _prod ниже перебираю. Перестановка их местами - не влияет :( | |
|
|
|
|
|
|
|
для: virtus1k
(12.10.2008 в 11:51)
| | нельзя перебирать ниже то, что по логике перебирается именно здесь.
Ниже Вы перебираете уже не элементы категории, а нечто другое.
Попробуйте вывести чекбоксы без галок вообще. | |
|
|
|
|
|
|
|
для: Trianon
(12.10.2008 в 11:53)
| | Если убрать проверку для checked - все выводится как нужно (но галки не ставятся понятное дело)
Если убрать это
$ssw = mysql_query("SELECT * FROM $tblName_s_dp WHERE idprod = '$idprod'");
while ($ssw3 = mysql_fetch_array($ssw))
{
if ($rows[idprod] == $ssw3[iddprod])
{
echo "$ssw3[iddprod]<input type=checkbox checked name='dopp[]' value='$rows[idprod]'>$rows[name]<br>";
}
else
{
echo "$ssw3[iddprod]<input type=checkbox name='dopp[]' value='$rows[idprod]'>$rows[name]<br>";
}
}
|
а, потом добавить
echo "$ssw3[iddprod]<input type=checkbox name='dopp[]' value='$rows[idprod]'>$rows[name]
|
то все нормально, но нужно ж checked ( | |
|
|
|
|
|
|
|
для: Trianon
(12.10.2008 в 11:53)
| | кто-то сможет помочь? %( | |
|
|
|