#641 2012.03.16 14:52

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Общие вопросы по PHP

ВАДИМ, покажи свой код. либо скажи какой драйвер для работы с бд используется? mysql, mysqli, pdo?

Неактивен

#642 2012.03.16 17:17

ВАДИМ
Гость

Re: Общие вопросы по PHP

Драйвер mysql
Вот код вывода категорий и подкатегорий

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
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 2012.03.16 18:03

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Общие вопросы по PHP

многабукав)

Код:

1
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:45)

Неактивен

#644 2012.03.16 20:10

ВАДИМ
Гость

Re: Общие вопросы по PHP

Спасибо,но код не работает почему то.

#645 2012.03.16 21:13

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Общие вопросы по PHP

что именно не работает?)

Неактивен

#646 2012.03.16 21:27

ВАДИМ
Гость

Re: Общие вопросы по PHP

Ничего не выводит,решил проверить что в массивах вывел их функцией prinr_r там пусто

#647 2012.03.16 22:00

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Общие вопросы по PHP

эм,напиши вверху скрипта:
error_reporting(-1);
ini_set('display_errors', '1');
и напиши сюда какие ошибки пишет.

Неактивен

#648 2012.03.16 23:58

ВАДИМ
Гость

Re: Общие вопросы по PHP

Ошибки вот

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 строке,это код из функции

Код:

1
while ($row = mysql_fetch_assoc($q))

Функция записанна так

Код:

1
2
3
4
5
6
7
8
9
10
11
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 строке

Код:

1
while ($row = mysql_fetch_assoc($q))

Записанно так
   

Код:

1
2
3
4
5
6
7
8
$offers = array();
$q = mysql_query('SELECT (*) FROM `tovar` WHERE `refid` IN (' .
implode(',', $out) . ')');
$i = 0;
while ($row = mysql_fetch_assoc($q))
{
$offers[] = $row;
}

#649 2012.03.17 00:08

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Общие вопросы по PHP

ВАДИМ написал:

SELECT (*)

SELECT *

Вообще, в первом селекте лучше только id бери, а не все. Т.к. избыточная информация повышает нагрузку на канал между mysql и php. Это, конечно, мелочи, но как о хорошей практике это надо знать и желательно применять.

Неактивен

#650 2012.03.17 00:24

ВАДИМ
Гость

Re: Общие вопросы по PHP

В общем методом проб и ошибок сократил до одной ошибки

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


Сделал такой трюк дабы узнать что за ошибка

Код:

1
print mysql_error();

И мне вывело что

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

Собственно сам код в 180 строке

Код:

1
while ($row = mysql_fetch_assoc($qaa))

А вот блок используемого кода

Код:

1
2
3
4
5
6
$qaa = mysql_query('SELECT * FROM `tovar` WHERE `refid` in ( '.$out.')');
$i = 0;
while ($row = mysql_fetch_assoc($qaa))
{
$offers[] = $row;
}

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.032 s