|
|
|
| Ситуация такая есть выпадающий список,который позволяет выбирать либо первый массив данных либо второй.Количество элементов в каждом массиве равно двум, по этой причине внизу этого списка есть две гипперсылки "1" и "2". Сценарий должен делать следующее:пусть из выпадающего списка я выбираю первый массив. Тогда по нажатию гипперсылок должно происходить следующее : если я нажму на гипперссылку "1", то должно вывестись значение нулевого элемента первого массива(т.к. в списке выбран первый массив), если я нажму "2", то должно вывестись значению первого элемента массива. Если же я выбиру из спика массив второй , то соответственно при нажатии гипперсылок должно выводиться значения элементов второго массива. Ниже представлен код моих трудов, помогите плиз.
<
HTML>
<table>
<tr>
<td width=150><b>Выбирете массив</b></td>
<td><select arr size=1>
<option value=1 selected>Первый массив</option>
<option value=2>Второй массив</option>
</select></td>
</tr>
</table>
<a href="Ex.php?Element=0">1</a>
<a href="Ex.php?Element=1">2</a><br>
<?php
$first[0]="f_1";
$first[1]="f_2";
$second[0]="s_1";
$second[1]="s_2";
Если в списке выбран "Первый массив", то выводим то что в нем
{
if (isset($_GET['Element']))
echo $first[$_GET['Element']];
}
Если в списке выбран "Второй массив", то выводим то что в нем
{
if (!isset($_GET['Element']))
echo $second[$_GET['Element']];
}
?>
</HTML>
|
Помогите пожалуйста. | |
|
|
|
|
|
|
|
для: usik
(25.11.2008 в 19:41)
| | Для решения нужно выучить как создавать HTML-формы. | |
|
|
|
|
|
|
|
для: usik
(25.11.2008 в 19:41)
| |
<?php
$arr = array(
"1" => "first",
"2" => "second"
);
$first = array(
"0" => "f_1",
"1" => "f_2"
);
$second = array(
"0" => "s_1",
"1" => "s_2"
);
if(isset($_REQUEST['select'])) $select = intval($_REQUEST['select']); else $select = '';
if(isset($_REQUEST['submit'])) $submit = intval($_REQUEST['submit']); else $submit = '';
if($select and $submit) {
if($submit == 1) $submit = 0; else $submit = 1;
if(isset($arr[$select])) {
$arr2 = $$arr[$select];
echo $arr2[$submit];
}else echo "гулять отдыхать";
}
?>
<style type="text/css">
<!--
.zzz {
text-decoration: underline;
border-style: none;
background-color: #FFFFFF;
margin-right: 12px;
color: #0000FF;
}
-->
</style>
<form action="" method="post" name="form_">
<table>
<tr>
<td width="150"><strong>Выбирете массив</strong></td>
<td><select name="select" size="1">
<option value="1" selected="selected">Первый массив</option>
<option value="2">Второй массив</option>
</select></td>
</tr>
</table>
<input class="zzz" type="submit" name="submit" value="1" />
<input class="zzz" type="submit" name="submit" value="2" />
</form>
|
| |
|
|
|
|
|
|
|
для: usik
(25.11.2008 в 19:41)
| |
<?php
$arr = array(
"1" => "first",
"2" => "second"
);
$first = array(
"0" => "f_1",
"1" => "f_2"
);
$second = array(
"0" => "s_1",
"1" => "s_2"
);
if(isset($_REQUEST['select'])) $select = intval($_REQUEST['select']); else $select = '';
if(isset($_REQUEST['hidden'])) $hidden = intval($_REQUEST['hidden']); else $hidden = '';
if($select and $hidden) {
if($hidden == 1) $hidden = 0; else $hidden = 1;
if(isset($arr[$select])) {
$arr2 = $$arr[$select];
echo $arr2[$hidden];
}else echo "гулять отдыхать";
}
?>
<script language="JavaScript1.2">
<!--
function doSel(n){
document.getElementById('hidden').value = n;
form_.submit();
}
//-->
</script>
<form action="" method="post" name="form_">
<table>
<tr>
<td width="150"><strong>Выбирете массив</strong></td>
<td><select name="select" size="1">
<option value="1" selected="selected">Первый массив</option>
<option value="2">Второй массив</option>
</select></td>
</tr>
</table>
<a href="#" onClick="doSel('1')">1</a> <a href="#" onClick="doSel('2')">2</a>
<input name="hidden" type="hidden" id="hidden" value="" />
</form>
|
| |
|
|
|
|
|
|
|
для: mikha
(26.11.2008 в 04:33)
| | Спаибо за код, но тут есть один моментик, который я не знаю как исправить:
-Когда в списке выбран "первый массив" , и я щелкаю на гипперсылки ,то все нормально.
-Когда в списке выбран "второй массив" то происходит следующее:
По нажатии на любую из гипперсылок выводится правильное значение содержимого элемента второго массива, но....Допустим я нажал на гипперсылку "1". Мне выводится содержимое нулевого элемента второго массива с последующей перезагрузкой страницы. После перезагрузки страницы
в списке стоит "первый массив". Т.е. для второго массива я могу просмотреть только один элемент. Я так понимаю нужно сделать, так чтобы если был выбран "второй массив" то после нажатия на любую из гипперсылок и после перезагрузки страницы в списке должен стоять второй массив. Как с этим быть ? Как решить такую задачу? Помогите плиз. | |
|
|
|
|
|
|
|
для: usik
(29.11.2008 в 02:35)
| | Т.е. когда работаю со вторым массивом и щелкаю на гипперсылки , то в списке автоматически выставляется первый массив, что не дает мне возможность просмотреть все элементы как в случае с первым массивом. | |
|
|
|
|
|
|
|
для: usik
(29.11.2008 в 02:39)
| |
<?php
$arr = array(
"1" => "first",
"2" => "second"
);
$first = array(
"0" => "f_1",
"1" => "f_2"
);
$second = array(
"0" => "s_1",
"1" => "s_2"
);
$style = "";
if(isset($_REQUEST['select'])) $select = intval($_REQUEST['select']); else $select = '';
if(isset($_REQUEST['hidden'])) $hidden = intval($_REQUEST['hidden']); else $hidden = '';
if($select and $hidden) {
if($hidden == 1) {
$style = 1;
$hidden = 0;
}else{
$style = 2;
$hidden = 1;
}
if(isset($arr[$select])) {
$arr2 = $$arr[$select];
echo $arr2[$hidden];
}else echo "гулять отдыхать";
}
?>
<script language="JavaScript1.2">
<!--
function doSel(n){
document.getElementById('hidden').value = n;
form_.submit();
}
//-->
</script>
<form action="" method="post" name="form_">
<table>
<tr>
<td width="150"><strong>Выбирете массив</strong></td>
<td><select name="select" size="1">
<option value="1"<?php if($select == 1) echo ' selected="selected"'; ?>>Первый массив</option>
<option value="2"<?php if($select == 2) echo ' selected="selected"'; ?>>Второй массив</option>
</select></td>
</tr>
</table>
<a href="#" onClick="doSel('1')"<?php if($style == 1) echo " style=\"color:#FF0000;\""; ?>>1</a>
<a href="#" onClick="doSel('2')"<?php if($style == 2) echo " style=\"color:#FF0000;\""; ?>>2</a>
<input name="hidden" type="hidden" id="hidden" value="" />
</form>
|
| |
|
|
|
|
|
|
|
для: usik
(29.11.2008 в 02:39)
| | Вникай)))
<?php
function selectDropDown($options, $name, $selected) {
$out = "<select name=\"$name\">\r\n";
foreach($options as $value => $description) {
$out .= "<option value=\"$value\"";
if($selected == $value) $out .= " selected=\"selected\"";
$out .= ">$description</option>\r\n";
}
$out .= "</select>\r\n";
return $out;
}
function linc($linc_arr, $linc_a) {
$out = "";
foreach($linc_arr as $value => $description) {
if($value == $linc_a) $style = " style=\"color:#FF0000;\""; else $style = "";
$out .= "<a href=\"#\" onClick=\"doSel('$value')\"$style>$description</a> ";
}
return $out;
}
$selected = false;
$linc_a = false;
$options_arr = array(
"0" => "Первый массив",
"1" => "Второй массив"
);
$linc_arr = array(
"0" => "элемент 0",
"1" => "элемент 1"
);
$arr = array(
"0" => "first",
"1" => "second"
);
$first = array(
"0" => "f_1",
"1" => "f_2"
);
$second = array(
"0" => "s_1",
"1" => "s_2"
);
if(isset($_REQUEST['select']) and isset($_REQUEST['hidden'])) {
$select = $_REQUEST['select'];
$hidden = $_REQUEST['hidden'];
if(!isset($arr[$select[0]]) or !isset($linc_arr[$hidden[0]])) {
echo "гулять отдыхать";
}else{
$arr2 = $$arr[$select[0]];
$selected = $select[0];
$linc_a = $hidden[0];
echo $arr2[$hidden[0]];
}
}
?>
<script language="JavaScript">
<!--
function doSel(n){
document.getElementById('hidden').value = n;
form_name.submit();
}
//-->
</script>
<form action="" method="post" name="form_name">
<table>
<tr>
<td width="150"><strong>Выбирете массив</strong></td>
<td><?php echo selectDropDown($options_arr, "select[]", $selected) ?></td>
</tr>
</table>
<?php echo linc($linc_arr, $linc_a); ?>
<input name="hidden[]" type="hidden" id="hidden" value="" />
</form>
|
| |
|
|
|
|
|
|
|
для: mikha
(29.11.2008 в 05:40)
| | mikha, спасибо тебе огромное все работает. А ты не мог бы сделать еще один малненький штрих: в общем как сделать так чтобы при смене массива из списка показывался только список и гипперсылки ,т.е. как бы перезагрузка что ли. Т.е. пусть в списке первый массив и я щелкаю на гипперсылку "элемент 0" , как результат выводится нулевой элемент. Потом в списке я выбираю второй массив и...в этот момент должна отобразиться исходная страница (типа псевдо перезагрузка,псевдо потому что она отличается от простой тем ,,что в простой перезагрузке страницы будет стоять первый массив в списке, но я то выбрал второй , поэтому все должно быть как при простой перезагрузке ,но только в спике должен быть второй элемент ) , т.е. только список и две гипперсылки, а нулевой элемент первого массива убрался. Если не затруднит помоги(те), пожалуйста. | |
|
|
|
|
|
|
|
для: mikha
(29.11.2008 в 05:40)
| | mikha, спасибо тебе огромное все работает. А ты не мог бы сделать еще один малненький штрих: в общем как сделать так чтобы при смене массива из списка показывался только список и гипперсылки ,т.е. как бы перезагрузка что ли. Т.е. пусть в списке первый массив и я щелкаю на гипперсылку "элемент 0" , как результат выводится нулевой элемент. Потом в списке я выбираю второй массив и...в этот момент должна отобразиться исходная страница (типа псевдо перезагрузка,псевдо потому что она отличается от простой тем ,,что в простой перезагрузке страницы будет стоять первый массив в списке, но я то выбрал второй , поэтому все должно быть как при простой перезагрузке ,но только в спике должен быть второй элемент ) , т.е. только список и две гипперсылки, а нулевой элемент первого массива убрался. Если не затруднит помоги(те), пожалуйста. | |
|
|
|
|
|
|
|
для: usik
(01.12.2008 в 23:17)
| | Честно говоря не совсем пойму что нужно.
А ещё больше для чего. | |
|
|
|
|
|
|
|
для: mikha
(02.12.2008 в 02:02)
| | Ну это мне нужно например для этого: Пусть у нас есть список с городами. В этом списке есть два города Питер и Москва (наша аналогия -массив первый и массив второй). Далее есть гипперсылки "А","Б"В","Г"Д" и т.д. (наша аналогия гипперсылка элемент 0 и элемент 1), по нажатию которых будет идти запрос к базе и выводить соответствующие улицы,у которых первая буква начинается с нажатой гипперсылки (наша аналогия-вывод элементов массива). Не буду же я сюда пихать свою базу ... Вот по этому и придумал такую задачу с массивами. А суть в последней просьбы в том что ,пусть я выбрал в списке городов (наша аналогия -массив первый и массив второй) город Питер (наша аналогия массив первый). Щелкаю на гипперсылку "А" (у нас-элемент 0) и мне выводятся все улицы Питера на букву "А". Потом я вдруг вспоминаю ,что мне нужны улицы москвы на "А". Для этого я меняю в списке городов Питер на Москву , и (в этом суть моей последней просьбы) улицы Питера на "А" которые вывелись при смене на новый город (в данном случае Москва), должны исчезнуть , а в броузере должно остаться только список с городами, в которм выбрана Москва и гипперсылки букв. Т.е. все что ты писал мне до этого так и должно рабоать, только + еще то что я сказал выше. Попробую написать на псевдо языке то что нужно подправить
Когда запустился первый раз сценарий видим список и гипперсылки ,т.е.
show_List();
showl_inks();
Когда щелкаю на гипперсылки имеем:
show_List();
showl_inks();
show_Соответствующую информацию.
Это у нас есть остался один пунктик:
Когда выставляю новое значение в списке
show_List();
showl_inks();
Ну вроде объяснил ,что и для чего нужно, теперь на тебя надежда. | |
|
|
|
|
|
|
|
для: usik
(02.12.2008 в 16:23)
| | Ну более или мененее понятно.
Только надо подумать, во первых всё должно работать при отключеном javascript (вообще весь сайт должен сохранять полную работоспособность, не только в данном случае),
ну и во вторых у нас уже ночь, да я ещё на работе)))
В общем надо бы поспать, завтра, на свежую голову подумаю.
Мне всё равно решать подобную проблему, только с регионами, областями и городами.
Надо было сразу объяснить что нужно, мне кажется надо было подойти к решению задачи совершенно с другой стороны. | |
|
|
|
|
 43.2 Кб |
|
|
для: usik
(25.11.2008 в 19:41)
| | Вот. Сначало сделал для себя, потом внёс некоторые изменения для вас.
Выкинете лишнее и будет счастье. Со ссылками не советую замарачиваться.
ЗЫ. Больше вам помогать не смогу. Всё , что необходимо, у вас есть, разбирайте, изучайте и т.д.
ЗЫЫ. Дамп базы данных в прикрепленном файле.
<?php
$db_host = "localhost"; $db_name = "test15"; $db_user = "test15"; $db_pass = "1111";
mysql_connect($db_host, $db_user, $db_pass) or die (mysql_error());
mysql_select_db($db_name) or die (mysql_error());
mysql_query ("/*!40101 SET NAMES 'cp1251' */");
$tpl = array ('stop' => '', 'select_country' => '', 'select_areal' => '', 'select_stadt' => '', 'select_letter' => '');
$country_id = false; $areal_id = false; $letter_id = false; $stadt_id = false;
if (isset ($_REQUEST['select_country'])) $country = $_REQUEST['select_country']; else $country = '';
if (isset ($_REQUEST['select_areal'])) $areal = $_REQUEST['select_areal']; else $areal = '';
if (isset ($_REQUEST['select_stadt'])) $stadt = $_REQUEST['select_stadt']; else $stadt = '';
if (isset ($_REQUEST['select_letter'])) $letter = $_REQUEST['select_letter']; else $letter = '';
$sql = "SELECT * FROM `m_country` ORDER BY `name` ASC";
$result = mysql_query ($sql) or die (mysql_error());
if (!mysql_num_rows($result)) $tpl['stop'] .= "Нет стран.<br />";
else {
$tpl['select_country'] .= '<select name="select_country" style="width: 95%;" onChange="NoneCountry();">';
$tpl['select_country'] .= '<option value="">Выбор страны</option>';
while ($row = mysql_fetch_assoc ($result)) {
if ($country == $row['numer']) {
$selected = ' selected="selected"';
$country_id = $row['numer'];
} else $selected = '';
$tpl['select_country'] .= '<option value="'.$row['numer'].'"'.$selected.'>'.$row['name'].'</option>';
}
$tpl['select_country'] .= '</select>';
}
if ($country_id) {
$sql = "SELECT * FROM `m_areal` WHERE `country`='".$country_id."' ORDER BY `name` ASC";
$result = mysql_query ($sql) or die (mysql_error());
if (!mysql_num_rows($result)) $tpl['stop'] .= "Нет областей.<br />";
else {
$tpl['select_areal'] .= '<select name="select_areal" style="width: 95%;" onChange="NoneAreal();">';
$tpl['select_areal'] .= '<option value="">Выбор области</option>';
while ($row = mysql_fetch_assoc ($result)) {
if ($areal == $row['numer']) {
$selected = ' selected="selected"';
$areal_id = $row['numer'];
} else $selected = '';
$tpl['select_areal'] .= '<option value="'.$row['numer'].'"'.$selected.'>'.$row['name'].'</option>';
}
$tpl['select_areal'] .= '</select>';
}
}
if ($areal_id) {
$sql = "SELECT SUBSTRING(`name`, 1, 1) AS `result` FROM `m_stadt` WHERE areal='".$areal_id."' GROUP BY `result` ORDER BY `name` ASC";
$result = mysql_query ($sql) or die (mysql_error());
if (!mysql_num_rows($result)) $tpl['stop'] .= "Нет букв.<br />";
else {
$tpl['select_letter'] .= '<select name="select_letter" style="width: 95%;" onChange="NoneLetter();">';
$tpl['select_letter'] .= '<option value="">Выбор буквы</option>';
while ($row = mysql_fetch_assoc ($result)) {
if ($letter == $row['result']) {
$selected = ' selected="selected"';
$letter_id = $row['result'];
} else $selected = '';
$tpl['select_letter'] .= '<option value="'.$row['result'].'"'.$selected.'>'.$row['result'].'</option>';
}
$tpl['select_letter'] .= '</select>';
}
}
if ($letter_id) {
$sql = "SELECT * FROM `m_stadt` WHERE MID(`name`, 1, 1) = '".$letter_id."' and `areal`='".$areal_id."' ORDER BY `name` ASC";
$result = mysql_query ($sql) or die (mysql_error());
if (!mysql_num_rows($result)) $tpl['stop'] .= "Нет городов.<br />";
else {
$tpl['select_stadt'] .= '<select name="select_stadt" style="width: 95%;">';
$tpl['select_stadt'] .= '<option value="">Выбор города</option>';
while ($row = mysql_fetch_assoc ($result)) {
if ($stadt == $row['numer']) {
$selected = ' selected="selected"';
$stadt_id = $row['numer'];
} else $selected = '';
$tpl['select_stadt'] .= '<option value="'.$row['numer'].'"'.$selected.'>'.$row['name'].'</option>';
}
$tpl['select_stadt'] .= '</select>';
}
}
if (isset ($_REQUEST['send_data'])) {
if (!$country_id) $tpl['stop'] .= "Необходимо выбрать страну.<br />";
if($country_id and !$areal_id) $tpl['stop'] .= "Необходимо выбрать область.<br />";
if($country_id and $areal_id and !$letter_id) $tpl['stop'] .= "Необходимо выбрать букву.<br />";
if($country_id and $areal_id and $letter_id and !$stadt_id) $tpl['stop'] .= "Необходимо выбрать город.<br />";
}
if ($tpl['stop']) $tpl['stop'] = '<div style="border:2px solid #FF0000;">'.$tpl['stop'].'</div>';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>-</title>
<style type="text/css">
<!--
-->
</style>
</head>
<body>
<script type="text/javascript">
<!--
function NoneCountry(){
document.getElementById('select_areal').style.display = 'none';
document.getElementById('select_letter').style.display = 'none';
document.getElementById('select_stadt').style.display = 'none';
}
function NoneAreal(){
document.getElementById('select_letter').style.display = 'none';
document.getElementById('select_stadt').style.display = 'none';
}
function NoneLetter(){
document.getElementById('select_stadt').style.display = 'none';
}
//-->
</script>
<?php echo $tpl['stop']; ?>
<form action="" method="post" name="name_form">
<table cellspacing="10">
<tr>
<td nowrap="nowrap">Выбирете страну:</td>
<td><?php echo $tpl['select_country']; ?></td>
</tr>
<tr id="select_areal">
<td nowrap="nowrap">Выберете область:</td>
<td><?php echo $tpl['select_areal']; ?></td>
</tr>
<tr id="select_letter">
<td nowrap="nowrap">На какую букву город:</td>
<td><?php echo $tpl['select_letter']; ?></td>
</tr>
<tr id="select_stadt">
<td nowrap="nowrap">Выберете город:</td>
<td><?php echo $tpl['select_stadt']; ?></td>
</tr>
<tr>
<td nowrap="nowrap"> </td>
<td><input name="send_data" type="submit" value="Отправить данные" /></td>
</tr>
</table>
</form>
</body>
</html>
|
| |
|
|
|