[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Пункты меню
BeerMan88
Доброго времени суток дорогие форумчане!
У меня к Вам токов вопрос целый день домаю мозги как зделать вертикальное меню которое добавляеться с админки
написалвот такой код
<?php
$sql = mysql_query("SELECT * FROM `cat`");
while ($row = mysql_fetch_array($sql))
{
echo "<li><a href='index.php?category=".$row['category']."'>".$row['category']."</a>";
$raw = mysql_fetch_array(mysql_query("SELECT * FROM `precategory` where category='".$row['category']."'"));



echo "<ul>";
echo "<li><a href='index.php?category=".$row['category']."&".$raw['precategory']."'>".$raw['precategory']."</a>";


$rsw = mysql_fetch_array(mysql_query("SELECT * FROM `precategory2` where precategory='".$raw['precategory']."'"));
echo "<ul>";
echo "<li><a href='index.php?category=".$row['category']."&".$raw['precategory']."=".$rsw['precategory2']."'>".$rsw['precategory2']."</a></li>";
echo "</ul>";

echo "</li>";

echo "</ul>";

echo "</li>";
}
?>

но выводится не все я чейки меню
например :
-> меню
-> категория
-> подкатегория
хотя в одном пункте меню несколько категорий
например:
-> меню -> категория1
-> категория2 -> подкатегория
-> подкатегория



Спустя 58 минут, 7 секунд (18.01.2012 - 01:49) redreem написал(а):
как минимум нужен вид таблиц cat, precategory и precategory2.
хотя непонятно зачем создавать такую немасштабируемую структуру, раскиданную по разным таблицам?
можно хранить все категории в 1 таблице вида:
id | parentId | name

и прекрастно генерировать подобные списки.

Спустя 5 минут, 46 секунд (18.01.2012 - 01:55) BeerMan88 написал(а):
Цитата (redreem @ 17.01.2012 - 22:49)
как минимум нужен вид таблиц cat, precategory и precategory2.
хотя непонятно зачем создавать такую немасштабируемую структуру, раскиданную по разным таблицам?
можно хранить все категории в 1 таблице вида:
id | parentId | name

и прекрастно генерировать подобные списки.

с етим уже разобрался но есть ище один вопросик!
на одной странице есть 3 селекта с выбором категорий
как зделать так чтобы после выбора первого во втором появлялись только те пункти которые пренадлижат выбраному ну и так третий?

Спустя 2 минуты, 42 секунды (18.01.2012 - 01:57) redreem написал(а):
1 вариант: выгружать все дерево категорий в js и им формировать селекты.
2 вариант: при выборе пункта родительского селекта отдавать гет запрос для перерисовки страницы и формирвоании дочерних селектов в php.

Спустя 2 минуты, 9 секунд (18.01.2012 - 01:59) BeerMan88 написал(а):
Цитата (redreem @ 17.01.2012 - 22:57)
1 вариант: выгружать все дерево категорий в js и им формировать селекты.
2 вариант: при выборе пункта родительского селекта отдавать гет запрос для перерисовки страницы и формирвоании дочерних селектов в php.

а поподробней можно ?

Спустя 1 минута, 2 секунды (18.01.2012 - 02:00) BeerMan88 написал(а):
вот мои 3 селекта
form action="upload.php" method="post" enctype="multipart/form-data">

<
label><strong>Виберіть фото для завантаження:</strong></label><br>
<
input name="userfile" type="file" size="60" align="middle"><br><br>
Ціна: <input type=text value="" name="price" size=30 maxlength=10><br><br>
Меню:<select size='1' name='category'> <?
$sql = mysql_query("SELECT * FROM cat order by category desc");
while ($row = mysql_fetch_array($sql))
{
echo "<option value='".$row["category"]."'>".$row["category"]."</option>";
}
echo "</select>";
?><br><br>
Категорія:<select size='1' name='precategory'> <?
$sql = mysql_query("SELECT * FROM precategory order by precategory desc");
while ($row = mysql_fetch_array($sql))
{
echo "<option value='".$row["precategory"]."'>".$row["precategory"]."</option>";
}
echo "</select>";
?><br><br>
Підатегорія:<select size='1' name='precategory2'> <?
$sql = mysql_query("SELECT * FROM precategory2 order by precategory2 desc");
while ($row = mysql_fetch_array($sql))
{
echo "<option value='".$row["precategory2"]."'>".$row["precategory2"]."</option>";
}
echo "</select>";
?><br><br>
<
center>Опис:</center><textarea name="description" cols="40" rows="5"></textarea><br><br>
<
input name="submit" value="Загрузити фото" type="submit"><br><br>
</
form>

Спустя 9 минут, 32 секунды (18.01.2012 - 02:10) redreem написал(а):
ну например для 0-го селекта (тот который показывает cat) делаем
onchange="location.href = '/<php-генератор селектов>.php?pre='+this.selectedIndex"

тем самым мы вызовем обновление страницы с GET запросом, имеющем параметр pre=индеску выбранного селекта.

в php-генераторе страницы, при формировании селекта из таблицы pre нужно делать выборку, согласно GET параметру pre. правда проблема в том, что selectedIndex указывает всего лишь на порядковый номер выбранной позиции в селекте и ее надо как-то искуственно сопоставлять с реальным id или name категории.

Спустя 8 минут, 9 секунд (18.01.2012 - 02:18) BeerMan88 написал(а):
Цитата (redreem @ 17.01.2012 - 23:10)
ну например для 0-го селекта (тот который показывает cat) делаем
onchange="location.href = '/<php-генератор селектов>.php?pre='+this.selectedIndex"

тем самым мы вызовем обновление страницы с GET запросом, имеющем параметр pre=индеску выбранного селекта.

в php-генераторе страницы, при формировании селекта из таблицы pre нужно делать выборку, согласно GET параметру pre. правда проблема в том, что selectedIndex указывает всего лишь на порядковый номер выбранной позиции в селекте и ее надо как-то искуственно сопоставлять с реальным id или name категории.

(( чтото я в етом совсем ничего не вшарил почти понял про гет запрос но с ванклик глухо((

Спустя 34 минуты, 24 секунды (18.01.2012 - 02:53) BeerMan88 написал(а):
может кто побольше розкажет??

Спустя 8 часов, 5 минут, 6 секунд (18.01.2012 - 10:58) redreem написал(а):
1.
<select size='1' name='category' onchange="location.href = '/myscript.php?pre='+this.selectedIndex">
вместо myscript поставь название своего php-обработчика (того файла, в котором у тебя селекты генерируются).

2. в нем там где:
$sql = mysql_query("SELECT * FROM precategory order by precategory desc");


нужно проверять GET параметр и подставляеть его соответственно в запрос через WHERE.

3. я же говорил сразу - нужен вид таблиц как миниму - гадать как у тебя там структура организована?

Спустя 4 часа, 24 минуты, 6 секунд (18.01.2012 - 15:22) BeerMan88 написал(а):
Цитата (redreem @ 18.01.2012 - 07:58)
1.
<select size='1' name='category' onchange="location.href = '/myscript.php?pre='+this.selectedIndex">
вместо myscript поставь название своего php-обработчика (того файла, в котором у тебя селекты генерируются).

2. в нем там где:
$sql = mysql_query("SELECT * FROM precategory order by precategory desc");


нужно проверять GET параметр и подставляеть его соответственно в запрос через WHERE.

3. я же говорил сразу - нужен вид таблиц как миниму - гадать как у тебя там структура организована?

ну вот он
<?
include "auth.php";
?>
<center>
<
h3>Завантажити фото</h3>
</
center>
<
center>
<
form action="upload.php" method="post" enctype="multipart/form-data">
<
table width="100%" border=1px>
<
tr>
<
td><center><label><strong>Виберіть фото для завантаження:</strong></label>
<
br><input name="userfile" type="file" size="30" align="middle"></center>
</
td>
<
td rowspan="2"><center>Опис:<br><textarea name="description" cols="60" rows="7"></textarea></center></td>
<
td>
<
table width="100%" border=1px>
<
tr>
<
td>
Меню:</td><td>[u]<select size='1' name='category' onchange="location.href = '/addfoto.php?pre='+this.selectedIndex">[/u] <?
$sql = mysql_query("SELECT * FROM cat order by category desc");
while ($row = mysql_fetch_array($sql))
{
echo "<option value='".$row["category"]."'>".$row["category"]."</option>";
}
echo "</select>";
?>
</td>
</
tr>
<
tr>
<
td>
Фірма:</td><td><select size='1' name='precategory'> <?
$sql = mysql_query("SELECT * FROM precategory order by precategory desc");
while ($row = mysql_fetch_array($sql))
{
echo "<option value='".$row["precategory"]."'>".$row["precategory"]."</option>";
}
echo "</select>";
?>
</td>
</
tr>
<
tr>
<
td>
Модель:</td><td>
<
input type=text value="" name="precategory2" size=20 maxlength=20>
</
td>
</
tr>
</
table>
</
td>
</
tr>
<
tr>
<
td><center> </center>
<
table width="100%" border=1px>
<
tr>
<
td>: </td><td><input type=text value="" name="num" size=30 maxlength=10></td>
</
tr>
<
tr>
<
td>Назва: </td><td><input type=text value="" name="title" size=30 maxlength=10></td>
</
tr><tr>
<
td>Ціна: </td><td><input type=text value="" name="price" size=30 maxlength=10></td>
</
tr>
</
table>
</
td>
<
td><center><input name="submit" value="Загрузити фото" type="submit"></center>
<
small>1. Розмір фото не повине перевищувати 2 Мб</small><br>
<
small>2. Формати які підтримуються: jpg, png, jpeg</small></td>
</
tr>
</
table>
</
form>


</
center>

вставил но страницу не находит

Спустя 34 минуты, 22 секунды (18.01.2012 - 15:56) redreem написал(а):
1.

Цитата
правда проблема в том, что selectedIndex указывает всего лишь на порядковый номер выбранной позиции в селекте и ее надо как-то искуственно сопоставлять с реальным id или name категории


2. перед строкой:

  $sql = mysql_query("SELECT * FROM precategory order by precategory desc");


надо брать GET параметр pre и вставлять его в запрос, типа:

if (isset($_GET['pre'])) $where = " WHERE cat=".$_GET['pre']." "; else $where = '';
$sql = mysql_query("SELECT * FROM precategory ".$where." order by precategory desc");


но см. п.1.

Спустя 16 минут, 23 секунды (18.01.2012 - 16:13) BeerMan88 написал(а):
Цитата (redreem @ 18.01.2012 - 12:56)
1.

Цитата
правда проблема в том, что selectedIndex указывает всего лишь на порядковый номер выбранной позиции в селекте и ее надо как-то искуственно сопоставлять с реальным id или name категории


2. перед строкой:

  $sql = mysql_query("SELECT * FROM precategory order by precategory desc");


надо брать GET параметр pre и вставлять его в запрос, типа:

if (isset($_GET['pre'])) $where = " WHERE cat=".$_GET['pre']." "; else $where = '';
$sql = mysql_query("SELECT * FROM precategory ".$where." order by precategory desc");


но см. п.1.

оно передает в гете
0
1
2

Спустя 8 минут, 34 секунды (18.01.2012 - 16:21) redreem написал(а):
замечательно. теперь тебе нужно просто сопоставить 0,1,2... с реальным идентификатором каталога в таблице precategory.

иии.... в 100500 раз говорю - без показа структуры таблиц рассказывать дальше нечего

Спустя 4 минуты, 12 секунд (18.01.2012 - 16:25) BeerMan88 написал(а):
Цитата (redreem @ 18.01.2012 - 13:21)
замечательно. теперь тебе нужно просто сопоставить 0,1,2... с реальным идентификатором каталога в таблице precategory.

иии.... в 100500 раз говорю - без показа структуры таблиц рассказывать дальше нечего

таблица проста только id и category

Спустя 3 минуты, 13 секунд (18.01.2012 - 16:28) BeerMan88 написал(а):
Цитата (redreem @ 18.01.2012 - 13:21)
замечательно. теперь тебе нужно просто сопоставить 0,1,2... с реальным идентификатором каталога в таблице precategory.

иии.... в 100500 раз говорю - без показа структуры таблиц рассказывать дальше нечего

но 0,1,2 ето не id а нумерация выбора селекта

Спустя 18 минут, 41 секунда (18.01.2012 - 16:47) BeerMan88 написал(а):
вот так передает категорию
onchange="location.href = 'addfoto.php?pre='+this.options[this.selectedIndex].value"

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

Спустя 2 минуты, 18 секунд (18.01.2012 - 16:49) redreem написал(а):
так значит addfoto.php - это у тебя не страница, где генерируются селекты

Спустя 1 минута, 4 секунды (18.01.2012 - 16:51) redreem написал(а):
вот типа так надо попробовать (для изменения 2-го селекта):


<?php include "auth.php"; ?>

<center><h3>Завантажити фото</h3></center>

<
center>
<
form action="upload.php" method="post" enctype="multipart/form-data">
<
table width="100%" border=1px>
<
tr>
<
td>
<
center>
<
label><strong>Виберіть фото для завантаження:</strong></label>
<
br>
<
input name="userfile" type="file" size="30" align="middle">
</
center>
</
td>
<
td rowspan="2"><center>Опис:<br><textarea name="description" cols="60" rows="7"></textarea></center></td>
<
td>
<
table width="100%" border=1px>
<
tr>
<
td>Меню:</td>
<
td>[u]<select size='1' name='category' onchange="location.href = '/addfoto.php?pre='+this.selectedIndex">[/u]

<?php

$sql = mysql_query("SELECT * FROM cat order by category desc");
$catCounter = 0;
$catId = false;

while ($row = mysql_fetch_array($sql)) {
if (isset($_GET['cat'])) {
if ($catCounter == $_GET['cat']) $catId = $row["id"];
}
if ($catCounter == 0) $selected = 'selected'; else $selected = '';
echo "<option ".$selected." value='".$row["category"]."'>".$row["category"]."</option>";
$catCounter++;
}
echo "</select>";
?>
</td>
</
tr>
<
tr>
<
td>Фірма:</td>
<
td>
<
select size='1' name='precategory'>
<?php

if ($catId !== false) $whereCat = " WHERE cat=".$catId." "; else $whereCat = '';

$sql = mysql_query("SELECT * FROM precategory ".$whereCat." order by precategory desc");

while ($row = mysql_fetch_array($sql)) {
echo "<option value='".$row["precategory"]."'>".$row["precategory"]."</option>";
}
echo "</select>";
?>
</td>
</
tr>
<
tr>
<
td>Модель:</td>
<
td><input type=text value="" name="precategory2" size=20 maxlength=20></td>
</
tr>
</
table>
</
td>
</
tr>
<
tr>
<
td>
<
center> </center>
<
table width="100%" border=1px>
<
tr>
<
td>: </td>
<
td><input type=text value="" name="num" size=30 maxlength=10></td>
</
tr>
<
tr>
<
td>Назва: </td>
<
td><input type=text value="" name="title" size=30 maxlength=10></td>
</
tr>
<
tr>
<
td>Ціна: </td><td><input type=text value="" name="price" size=30 maxlength=10></td>
</
tr>
</
table>
</
td>
<
td>
<
center><input name="submit" value="Загрузити фото" type="submit"></center>
<
small>1. Розмір фото не повине перевищувати 2 Мб</small><br>
<
small>2. Формати які підтримуються: jpg, png, jpeg</small></td>
</
tr>
</
table>
</
form>
</
center>


Спустя 6 минут, 31 секунда (18.01.2012 - 16:57) BeerMan88 написал(а):
полюбому бросает на другую (пустую) страницу!

Спустя 6 минут, 32 секунды (18.01.2012 - 17:04) redreem написал(а):
на какую именно "другую"??? приведи 100% код php-файлов, учавствующих в обработке с их названиями.

Спустя 3 часа, 20 минут, 41 секунда (18.01.2012 - 20:24) BeerMan88 написал(а):
Цитата (redreem @ 18.01.2012 - 14:04)
на какую именно "другую"??? приведи 100% код php-файлов, учавствующих в обработке с их названиями.

при изменении первого селекта перекидывет на ету страницу
http://g/admin/addfoto.php?pre=1

Спустя 6 минут, 47 секунд (18.01.2012 - 20:31) redreem написал(а):
так ты сам сказал что страница с генератором селекта называется addfoto.php

Спустя 7 минут, 3 секунды (18.01.2012 - 20:38) BeerMan88 написал(а):
Цитата (redreem @ 18.01.2012 - 17:31)
так ты сам сказал что страница с генератором селекта называется addfoto.php

ну вот смотри там есть два селекта
"меню"
и
"фирма"
мне надо что при выборе в селекте "меню" в селекте "фирма" показывались только те опции что принадлежат выбору!

Спустя 10 минут, 36 секунд (18.01.2012 - 20:49) redreem написал(а):
ты вообще понимаешь что я тебе до этого писал?

Спустя 18 минут, 37 секунд (18.01.2012 - 21:07) inpost написал(а):
redreem
Я прочитал причину твоих нервов, я с тобой согласен, я бы тоже нервничал smile.gif

BeerMan88
Эта функция должна перебросить страницу на САМУ СЕБЯ, только добавить $_GET переменную для выборки из БД по категории.
По клику передаётся индекс выбранного в селекте, тебе надо перед редиректом получить значение из этого же селекта (value, text), не важно, главное передавать не индекс. Если уж передаёшь индекс, то индекс начинается с 0, посмотри порядок и в зависимости от переданного индекса подставь нужное значение для переменной, при обращении к БД.
Хотя я не думаю, что моё объяснение будет куда лучше объяснения другого человека, потому что тебе надо самому посмотреть, что ты делаешь и какие функции используешь.
Ты же программист, проверь сам переменные, проверь передащиеся параметры в скрипт. И обязательно, прочитай, что делают функции. Не я же буду за тебя весь скрипт идеально подгонять.

Спустя 3 минуты, 57 секунд (18.01.2012 - 21:11) redreem написал(а):
да я не нервничаю, просто обескуражил последний его ответ smile.gif

Спустя 50 минут, 8 секунд (18.01.2012 - 22:01) redreem написал(а):
резюмирую: видно что пока "плаваешь", разберись как адресуются страницы, как они сейчас адресуются у тебя на локальном сервере, как это будет происходить на хостинге - проверь корректность относительной адресации, убедись что с клиентской стороны адресуемость будет так же корректна на хостинге, как и с локальной машины - это основы - без этого дальше будет болото. нарпример адрес /addphoto.php всегда должен перекидывать тебя на одну и туже страницу, независимо от локального расположения или хостинга.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.