Вы не зашли.
Главная » PHP » Общие вопросы по PHP
#641. Gemorroj Off (107)
Administrator
2012.03.16 14:02
ВАДИМ, покажи свой код. либо скажи какой драйвер для работы с бд используется? mysql, mysqli, pdo?
#642. ВАДИМ
Гость
2012.03.16 17:05
Драйвер mysql
Вот код вывода категорий и подкатегорий
Код:
if ($id)
{
$tip = mysql_query("SELECT * FROM `chop` WHERE `id`= '" . $id .
"' LIMIT 1");
$type = mysql_fetch_assoc($tip);
$tips = $type['type'];
switch ($tips)
{
 
case 'r':
echo '<div class="phdr">';
echo '<b>Магазин | ' . $type['name'] . '</b></div>';
 
$count = mysql_result(mysql_query("SELECT COUNT(*) FROM `chop` WHERE `refid`='" .
$id . "'"), 0);
if ($count)
{
$req = mysql_query("SELECT * FROM `chop` WHERE `refid`='$id'");
 
while ($res = mysql_fetch_array($req))
{
 
//подкаталоги
$t = mysql_fetch_assoc(mysql_query("SELECT * FROM `chop` WHERE `id`= '" .
$res['id'] . "' LIMIT 1"));
$ts = $t['type'];
if ($ts == 'k')
{
$count = mysql_result(mysql_query("SELECT COUNT(*) FROM `tovar` WHERE `refid`='" .
$t['id'] . "'"), 0);
}
else
{
$count = mysql_result(mysql_query("SELECT COUNT(*) FROM `chop` WHERE `refid`='" .
$res['id'] . "'"), 0);
}
 
echo '<a class="menu" href="index.php?id=' . $res['id'] .
'"><img src="/images/dir.png" alt="*"/> ' . checkout($res['name'],
1, 1) . ' [' . $count . '/' . $cuntsss . ']</a>';
 
if ($rights >= 7)
echo '<a class="delete" href="submit.php?id=' . $res['id'] .
'">X</a>';
if (!empty($res['opis']))
{
$text = $res['opis'];
$text = mb_substr($text, 0, 100);
$text = checkout($text, 1, 1);
}
 
++$i;
}
}
else
{
echo '<div class="list">Каталог пуст</div>';
}
 
if ($rights >= 7)
{
echo '<div class="gr">Создаем каталог</div>';
echo '<form action="submit.php?id=' . $id .
'" method="post"><div class="list">';
echo '<b>Название:</b><br/><input type="text" name="name" maxlength="40" value="" /><br />';
echo '<b>Описание:<small>max 150</small></b><br/><input type="text" name="opis" /><br/>';
echo '<input type="checkbox" name="type" value="k" /> Для файлов<br/>';
echo '<input type="submit" name="chop_kat" value="Создать"/></div></form>';
}
echo '<a class="menu" href="?id=' . $type['refid'] . '">Назад</a>';
break;
 
case 'k':
echo '<div class="phdr">';
echo '<b>Магазин | ' . $type['name'] . '</b></div>';
$count = mysql_result(mysql_query("SELECT COUNT(*) FROM `tovar` WHERE `refid`='" .
$id . "'"), 0);
if ($count)
{
$req = mysql_query("SELECT * FROM `tovar` WHERE `refid`='$id'");
 
while ($res = mysql_fetch_array($req))
{
 
//тут выводы товаров
 
$count = mysql_result(mysql_query("SELECT COUNT(*) FROM `tovar` WHERE `refid`='" .
$id . "'"), 0);
echo '<a class="menu" href="tovar.php?id=' . $res['id'] . '">' .
checkout($res['name'], 1, 1) . '</a> ';
if ($rights >= 7)
echo '<a class="delete" href="submit.php?id=' . $res['id'] .
'">X</a>';
if (!empty($res['opis']))
{
$text = $res['opis'];
$text = mb_substr($text, 0, 100);
$text = checkout($text, 1, 1);
}
 
++$i;
}
 
}
else
{
echo '<div class="gr">Товар еще не добавлен</div>';
}
if ($user_id && !$ban['1'] && !$ban['11'])
{
echo '<div class="list"><form action="add.php?&amp;id=' . $id .
'" method="post"><input type="submit" value="Добавить товар" /></form></div>';
}
echo '<div class="list"><a href="?id=' . $type['refid'] .
'"><font color="red">Назад</font></a></div>';
break;
 
default:
 
echo '<div class="list"><b>Ошибка!</b><br />Товар удален или же не существует!</p></div>';
break;
}
 
}
else
{
// Список разделов магазина
 
echo '<div class="gr">';
echo '<b>Магазин</b></div>';
 
$req = mysql_query("SELECT * FROM `chop` WHERE `type`='r' and `refid`='0' ORDER BY `real`");
 
while ($res = mysql_fetch_array($req))
{
 
$count = mysql_result(mysql_query("SELECT COUNT(*) FROM `chop` WHERE `refid`='" .
$res['id'] . "'"), 0);
echo '<a class="menu" href="index.php?id=' . $res['id'] .
'"><img src="/images/dir.png" alt="*"/> ' . $res['name'] . ' [' .
$count . '/' . $c . ']</a>';
if ($rights >= 7)
echo '<a class="delete" href="submit.php?id=' . $res['id'] .
'">X</a>';
if (!empty($res['opis']))
{
$text = $res['opis'];
$text = mb_substr($text, 0, 100);
$text = checkout($text, 1, 1);
 
}
 
++$i;
}
 
if ($rights >= 7)
{
echo '<div class="gr">Создание раздела магазина</div>';
echo '<form action="submit.php" method="post"><div class="list">';
echo '<b>Имя раздела:</b><br/><input type="text" name="name" maxlength="40" value="" /><br />';
echo '<b>Описание:<small>max 150</small></b><br/><input type="text" name="opis" /><br/>';
echo '<input type="submit" name="chop_raz" value="Создать"/></div></form>';
}
}
#643. Gemorroj Off (107)
Administrator
2012.03.16 18:06
многабукав)
Код:
span style="color: #0000BB"><?php$id = 1; //ID родительской категорииfunction getCategories (array $ids){ $out = array(); $q = mysql_query('SELECT id FROM categories WHERE parent_id IN(' . implode(',', array_map('intval', $ids)) . ')'); while ($row = mysql_fetch_assoc($q)) { $out[] = $row['id']; } return $out;}$out = array();while ($id = getCategories((array)$id)) { $out = array_merge($out, $id);}$offers = array();$q = mysql_query('SELECT * FROM offers WHERE category IN (' . implode(',', $out) . ')');while ($row = mysql_fetch_assoc($q)) { $offers[] = $row;}
я не проверял, но вроде должно работать.
Отредактировано Gemorroj (2012.03.17 00:12)
#644. ВАДИМ
Гость
2012.03.16 20:08
Спасибо,но код не работает почему то.
#645. Gemorroj Off (107)
Administrator
2012.03.16 21:09
что именно не работает?)
#646. ВАДИМ
Гость
2012.03.16 21:09
Ничего не выводит,решил проверить что в массивах вывел их функцией prinr_r там пусто
#647. Gemorroj Off (107)
Administrator
2012.03.16 22:10
эм,напиши вверху скрипта:
error_reporting(-1);
ini_set('display_errors', '1');
и напиши сюда какие ошибки пишет.
#648. ВАДИМ
Гость
2012.03.16 23:11
Ошибки вот

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /var/www/freeze/data/www/wapseller.ru/schop/index.php on line 23

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /var/www/freeze/data/www/wapseller.ru/schop/index.php on line 179
Array
(
)


Код в 23 строке,это код из функции
Код:
while ($row = mysql_fetch_assoc($q))
Функция записанна так
Код:
function getCategories(array $id)
{
$out = array();
$q = mysql_query('SELECT (*) FROM `chop` WHERE `refid` IN(' .
implode(',', array_map('intval', $id)) . ')');
while ($row = mysql_fetch_assoc($q))
{
$out[] = $row['id'];
}
return $out;
}
Код в 179 строке
Код:
while ($row = mysql_fetch_assoc($q))
Записанно так
   
Код:
$offers = array();
$q = mysql_query('SELECT (*) FROM `tovar` WHERE `refid` IN (' .
implode(',', $out) . ')');
$i = 0;
while ($row = mysql_fetch_assoc($q))
{
$offers[] = $row;
}
#649. Gemorroj Off (107)
Administrator
2012.03.17 00:12
ВАДИМ написал:
SELECT (*)
SELECT *

Вообще, в первом селекте лучше только id бери, а не все. Т.к. избыточная информация повышает нагрузку на канал между mysql и php. Это, конечно, мелочи, но как о хорошей практике это надо знать и желательно применять.
#650. ВАДИМ
Гость
2012.03.17 00:12
В общем методом проб и ошибок сократил до одной ошибки

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /var/www/freeze/data/www/wapseller.ru/schop/index.php on line 180


Сделал такой трюк дабы узнать что за ошибка
Код:
print mysql_error();
И мне вывело что

Unknown column 'Array' in 'where clause'Array
(
)

Собственно сам код в 180 строке
Код:
while ($row = mysql_fetch_assoc($qaa))
А вот блок используемого кода
Код:
$qaa = mysql_query('SELECT * FROM `tovar` WHERE `refid` in ( '.$out.')');
$i = 0;
while ($row = mysql_fetch_assoc($qaa))
{
$offers[] = $row;
}
Страниц: 163 64 65 66 67118 Все
Главная
WEB
PunBB Mod v0.6.2
0.032 s