Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > связаные списки


Автор: Snoooppy 19.9.2008, 14:51
Доброго времени суток уважаемые форумчане!
Сори за возможно элементарный вопрос, но поиск по инету ничего не дал Огорчение
Собсвенно описываю трабл...

Есть база на mySQL следующего содержания:
Таблица отделов (id, depname)
Таблица должностей (id, position)
Таблица пользователей (id, lname, fname, mname, depid, posid, iphone, ephone)

Есть сайт где все это должно отображаться в виде:
ComboBox с названиями отделов
Таблица с данными на пользователей из текущего отдела выбранного в ComboBox-е

Так вот, все это я сделал на PHP кроме одного, не могу понять как сделать чтобы при выборе в ComboBox-е отдела автоматом перерисовывалась таблица пользователей...
Собственно текст скрипта:
Код

<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
$host = "localhost";
$user = "vasy";
$password = "111";
$db = "users_data";
if (!mysql_connect($host, $user, $password))
{
echo "<h2>MySQL Error!</h2>";
exit;
}
mysql_select_db($db);
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
$q = mysql_query ("SELECT * FROM department");

print '<form name=form1>';
print '<label>Выберете отдел :</label><select name=cbDep id=select>';
while($results = mysql_fetch_array($q))
{
print '<option value="'.$results['id'].'">'.$results['depname'].'</option>';
}
print '</select>';

mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
$comb=mysql_query("SELECT employ.lastname, employ.firstname, employ.middlename, position.posname, employ.intphone, employ.extphone FROM employ, position where (employ.posid=position.id) and (employ.depid=1)");
$q=mysql_query("SELECT employ.lastname, employ.firstname, employ.middlename, position.posname, employ.intphone, employ.extphone FROM employ, position where (employ.posid=position.id) and (employ.depid=1)");

// Выводим заголовок таблицы:
$num_results2 = mysql_num_rows($comb);
print "<table border=\"1\" width=\"100%\" bgcolor=\"#FFFFE1\">";
print "<tr><td>Имя</td><td>Фамилия</td><td>Отчество</td><td>Должность</td><td>Внутренний телефон</td><td>Городской телефон</td>";
for ($c=0; $c<mysql_num_rows($q); $c++)
{
print "<tr>";
$f = mysql_fetch_array($q);
print "<tr><td>$f[lastname]</td><td>$f[firstname]</td><td>$f[middlename]</td><td>$f[posname]</td><td>$f[intphone]</td><td>$f[extphone]</td>";
echo "</tr>";
}
echo "</table>";
print '</form>';

?>

Если я правильно понял надо передать значение выбора в запрос
Код

$q=mysql_query("SELECT employ.lastname, employ.firstname, employ.middlename, position.posname, employ.intphone, employ.extphone FROM employ, position where (employ.posid=position.id) and (employ.depid=1)");


и подставить вместо 1 в employ.depid=1 но как это сделать не могу въехать...

Автор: Snoooppy 19.9.2008, 15:49
т.е. при выборе параметра из комбобокса перерисовывается таблица в соответствии с этим параметром.
Пример, в комбобоксе содержатся названия отделов, выбрав отдел - аппарат управления заново перерисовывается таблица  и выдает ФИО с телефонами для этоого отдела, как сделать такую фичу с кнопочкой запроса (ок, сеарч и т.д.) примерно ясно а вот без нее, непосредственно после выбора отдела, нет((((помогите пожалуйста!

Автор: bars80080 19.9.2008, 16:17
Цитата(Snoooppy @  19.9.2008,  15:49 Найти цитируемый пост)
как сделать такую фичу с кнопочкой запроса (ок, сеарч и т.д.) примерно ясно а вот без нее, непосредственно после выбора отдела, нет

в таком контексте это не вопрос по пхп, а вопрос по js

т.е. тебе надо получить position.id в последний запрос, если ты можешь сделать это с кнопочкой и тескстовым полем, то не проблема

было
Код

<input type="text" name="id" />
<input type="submit" value="send" />


получаем:
Код

<script>
function func() {
    var el = getElementById('select').getElementsByTagName('option');
    var ell = el.length;
    for(var i = 0; i < ell; i++) {
        if(el[i].selected) { var idn = el[i].value; break; }
    }
    if(idn) { window.location.href = 'http://server.ru/page.php?id=' + idn; }
}
</script>
...
<select name="cbDep" id="select" onchange="func();">
ну а дальше подставляешь, как там у тебя задумано из $_GET['id'];

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)