У меня к Вам токов вопрос целый день домаю мозги как зделать вертикальное меню которое добавляеться с админки
написалвот такой код
<?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
и прекрастно генерировать подобные списки.
хотя непонятно зачем создавать такую немасштабируемую структуру, раскиданную по разным таблицам?
можно хранить все категории в 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 вариант: при выборе пункта родительского селекта отдавать гет запрос для перерисовки страницы и формирвоании дочерних селектов в 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 категории.
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.
2. в нем там где:
нужно проверять GET параметр и подставляеть его соответственно в запрос через WHERE.
3. я же говорил сразу - нужен вид таблиц как миниму - гадать как у тебя там структура организована?
<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.
2. перед строкой: $sql = mysql_query("SELECT * FROM precategory order by precategory desc"); надо брать GET параметр pre и вставлять его в запрос, типа: if (isset($_GET['pre'])) $where = " WHERE cat=".$_GET['pre']." "; else $where = ''; но см. п.1. |
оно передает в гете
0
1
2
Спустя 8 минут, 34 секунды (18.01.2012 - 16:21) redreem написал(а):
замечательно. теперь тебе нужно просто сопоставить 0,1,2... с реальным идентификатором каталога в таблице precategory.
иии.... в 100500 раз говорю - без показа структуры таблиц рассказывать дальше нечего
иии.... в 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
Я прочитал причину твоих нервов, я с тобой согласен, я бы тоже нервничал
BeerMan88
Эта функция должна перебросить страницу на САМУ СЕБЯ, только добавить $_GET переменную для выборки из БД по категории.
По клику передаётся индекс выбранного в селекте, тебе надо перед редиректом получить значение из этого же селекта (value, text), не важно, главное передавать не индекс. Если уж передаёшь индекс, то индекс начинается с 0, посмотри порядок и в зависимости от переданного индекса подставь нужное значение для переменной, при обращении к БД.
Хотя я не думаю, что моё объяснение будет куда лучше объяснения другого человека, потому что тебе надо самому посмотреть, что ты делаешь и какие функции используешь.
Ты же программист, проверь сам переменные, проверь передащиеся параметры в скрипт. И обязательно, прочитай, что делают функции. Не я же буду за тебя весь скрипт идеально подгонять.
Я прочитал причину твоих нервов, я с тобой согласен, я бы тоже нервничал

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

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