|
|
|
| В общем для того, что бы меня лучше понять, предлагаю посмотреть этот код.
Главные разделы</b><br><br><form method=post action='edcat.php'><select name='categor' onchange='this.form.submit();'><option value=47>Культура, Искусство</option><option value=2>Муниципальные учреждения</option><option value=37>Образование, наука</option><option value=27>Общественные организации</option><option value=1>Разное</option><option value=53>Средства массовой информации</option></form></select><br><form action='edcat_p.php' method='post'><input type='hidden' name='p' value='911'><input type='text' name='title_add' size='20'><input type='submit' value='Добавить'><br><br><b>Подразделы</b><br><br><select name='subcategor'></select><br><form action='edcat_p.php' method='post'><input type='hidden' name='p' value='911'><input type='text' name='title_add' size='20'><input type='submit' value='Добавить'><br><br>
</font>
|
Данный код уже прошел php и mysql. Вообщем пишу Желтые Страницы. И сейчас пишу форму для админ-панели, где буду добавлять разделы для желтых страниц. Принцип такой. В меню главных разделов я выбираю нужный пункт и после этого автоматоматически в меню подразделов по этому пункту открываются другие разделы. Т.е. я выбрал раздел средства массовой информации, то в подразделах выскакивает пункты "Радио", "ТВ", "Газеты". Все это работает и все хорошо. Проблема в другом.
вот тут
после того как мне вывелись подразделы, то менюшка с главными разделами возвращается на свое первое значение. а т.е. если тот же пункт СМИ стоит в самом конце, то он после все обработки останется не выделеным.
Что надо. Надо что бы после обработки, в главной менюшке на выбранном пункте стоял пункт selected
ну а все остальные соответственно нет.
Подскажите, как это сделать... уже день пытаюсь найти. В книге Вашей такие вопросы помоему вообще не затрагиваются. =( | |
|
|
|
|
|
|
|
для: speaker_ya
(19.02.2006 в 22:56)
| | >Подскажите, как это сделать... уже день пытаюсь найти. В
>книге Вашей такие вопросы помоему вообще не затрагиваются.
>=(
Эти вопросы обсуждатся в книге "PHP 5. Практика создания Web-сайтов".
Смысл в том, что при перезагрузке в цикле вывода необходимо сравнивать выбранный пункт с выгружаемыми из базы данных - если находится совпадение выводить selected. Лучше вместо первого блока привести цикл - тогда будет легче показать, как управиться с такой проблемой. | |
|
|
|
|
|
|
|
для: cheops
(20.02.2006 в 02:16)
| | ну есть у меня эта книга.. а где именно там об этом сказано... на какой страничке или в каком разделе? | |
|
|
|
|
|
|
|
для: speaker_ya
(21.02.2006 в 00:07)
| | Пример с selected приведён на странице 662 при построении системы мониторинга сайта. В ней используется выпадающий список с поисковыми системами, при перезагрузке системы выбор пользователя остаётся за счёт анализа переданных методом POST-данных. Такой же пример можно найти на стр 297. Однако в этом примере не используется цикл, поэтому лучше обратиться к странице 346: во втрой части страницы приведён цикл while
<?php
while($cat = mysql_fetch_array($ctg))
{
...
?>
|
и демонстрируется использование блока if для помещения в переменную $strhide текущего статуса каталога. Допустим каталоги выводятся в выпадающем списке
<?php
if(mysql_num_rows($ctg) > 0)
{
echo "<select name=id_catalog>";
while($cat = mysql_fetch_array($ctg))
{
if($cat['id_catalog'] == $_GET['id_catalog']) $selected = "selected";
else $selected = "";
echo "<option value=$cat[id_catalog] $selected>$cat[name]</option>";
}
echo "</select>";
}
?>
|
Блок
<?php
if($cat['id_catalog'] == $_GET['id_catalog']) $selected = "selected";
else $selected = "";
?>
|
осуществляет сравнение текущего первичного ключа $cat['id_catalog'] с переданным методом $_GET['id_catalog'] и если они совпадают - пункт будет отмечен как выбранный.
PS Приведите ваш PHP - на нём будет удобнее продемонстрировать куда вставить подобный блок. | |
|
|
|
|
|
|
|
для: cheops
(21.02.2006 в 13:17)
| | вот мой php
mysql_select_db( "esol_cat") ;
$categor = $HTTP_POST_VARS['categor'];
if(!$categor)
{
// Выбрать все категории, названия которых начинаются с '911'
$cat = mysql_query("select * from categor WHERE p=911 order by title");
if ($cat)
echo"<b>Главные разделы</b><br><br><form method=post action='edcat.php'><select name='categor' onchange='this.form.submit();'>";
while($full_db = mysql_fetch_array($cat))
{
echo"<option value=".$full_db['cat_id'].">".$full_db['title']."</option>";
}
echo"</form></select><br><form action='edcat_p.php' method='post'><input type='hidden' name='p' value='911'><input type='text' name='title_add' size='20'><input type='submit' value='Добавить'><br><br>";
}
else
{
// Выбрать все товары, названия которых начинаются с 'р'
$cat = mysql_query("select * from categor WHERE cat_id='".$categor."' order by title");
if ($cat)
echo"<b>Главные разделы</b><br><br><form method=post action='edcat.php'><select name='categor' onchange='this.form.submit();'>";
while($full_db = mysql_fetch_array($cat))
{
echo"<option value=".$full_db['cat_id'].">".$full_db['title']."</option>";
}
echo"</form></select><br><form action='edcat_p.php' method='post'><input type='hidden' name='p' value='911'><input type='text' name='title_add' size='20'><input type='submit' value='Добавить'><br><br>";
};
$subcat = mysql_query("select * from categor WHERE p='".$categor."' order by title");
if ($subcat)
echo"<b>Подразделы</b><br><br><select name='subcategor'>";
while($full_db = mysql_fetch_array($subcat))
{
echo"<option value=".$full_db['cat_id'].">".$full_db['title']."</option>";
}
echo"</select><br><form action='edcat_p.php' method='post'><input type='hidden' name='p' value='911'><input type='text' name='title_add' size='20'><input type='submit' value='Добавить'><br><br>";
|
| |
|
|
|
|
|
|
|
для: speaker_ya
(21.02.2006 в 17:09)
| | Первый блок
<?php
while($full_db = mysql_fetch_array($cat))
{
echo"<option value=".$full_db['cat_id'].">".$full_db['title']."</option>";
}
?>
|
исправьте следующим образом
<?php
while($full_db = mysql_fetch_array($cat))
{
if($full_db['categor'] == $_POST['cat_id']) $selected = "selected";
else $selected = "";
echo"<option value=".$full_db['cat_id']." $selected>".$full_db['title']."</option>";
}
?>
|
А второй так:
<?php
while($full_db = mysql_fetch_array($subcat))
{
if($full_db['categor'] == $_POST['subcategor']) $selected = "selected";
else $selected = "";
echo"<option value=".$full_db['cat_id'].">".$full_db['title']."</option>";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(21.02.2006 в 21:20)
| | короче... сначало ничего не работало ... только ошибки шли. Думал, что не получилось, хотя смотря на код, понимал, что должно работать. . . потом дошло.
В предложенном Вами коде ошибка.
вместо
$full_db['categor'] == $_POST['cat_id'])
|
надо ставить
$full_db['cat_id'] == $_POST['categor'])
|
и все заработало! ТАК ЧТО ОГРОМНОЕ СПАСИБО.... пойду дальше писать скрипт и читать Вашу книгу. | |
|
|
|