26

Re: Выпадающий список

Maxnight сказал:

а как теперь сделать чтоб при нажатии кнопки "Вывести" отправлялся этот запрос

Добавьте еще один список выбора студента, если его еще нет, конечно. Остальное по аналогии с предыдущим полем.

Maxnight сказал:

почему-то выводится только одна группа и один студент

Проверяйте SQL запросы в phpMyAdmin подставляя нужные значения. Только так можно понять почему что-то не выводится.

27 (изменено: Maxnight, 2011-05-14 11:48:44)

Re: Выпадающий список

SELECT *
FROM Groups, Students
WHERE Groups.id_groups = Students.id_student

У меня запросы получаются одназначными! Петров учится в группе ДИ-106(кот присвоен Id-1), но при таком запросе он относится к группе ДИ-206(кот. стоит под Id-2 в таблице групп), а Петров относится к id-2 в таблице студентов....
но студентов у меня больше,кот онтносятся к группе с id=1. А выводятся только только равнозначно сколько у меня групп в базе (пока что 2) добавлю 3ю, то 3й студент будет относится к ней, но он то учится в 1й группе!

Какой запрос нужен чтобы вывести всех студентов, кот учатся в определенной группе? 

http://s40.radikal.ru/i088/1105/2a/f753ad720f20t.jpg

28

Re: Выпадающий список

Может у вас ошибка в запросе и он должен выглядеть так:

SELECT *
FROM Groups, Students
WHERE Groups.id_groups = Students.id_groups

29 (изменено: Maxnight, 2011-05-14 20:27:21)

Re: Выпадающий список

Наверно только так можно: У меня линия всех 4 списков все ID=1

ЦК РПЗ      id=1 (1 список)                  или        (1 список)  Id=2
РПЗ           id=1 (2 список)                                 (2 список) Id=2   
ДИ-106     id=1 (3 список)                                 (3 список)  Id=2
Студенты id=1 (4 список)                                  (4 список) Id=2 

Я немогу сделать разветление т.е. если у меня две группы на одной специальности (я должен группе ДИ-206 присвоить Id=2,а связь со специальностью по Id=1, но тогда эта группа при выборе будет уже в списе если выбирать ЦК и специльностей со всеми Id=2 )

2 варианта связей Групп в запросе первичный с первичным ключем (Specialnost.id_specialnost=Groups.id_groups)
  для разветвления      и первичный с внешним ключем (Specialnost.id_specialnost=Groups.id_specialnost) тогда студенты в этих группах будут одинаковы

В запросе специльности только первичный с первичным (CiklovKomis.id_ciklovKomis=Specialnost.id_specialnost)
а чтоб сделать разветление (CiklovKomis.id_ciklovKomis=Specialnost.id_ciklovKomis) - ошибка

В Запросе Студенты только первичный с внешним ключем (Groups.id_groups=Students.id_groups)
                                           первичный с первичным (Groups.id_groups=Students.id_student) Только один студент

30

Re: Выпадающий список

Извините, но я совершенно ничего не смог понять.

Если не сможете сами разобраться, то покажите структуры таблиц и часть данных в них. Как вы составляете запросы, что они выводят и что должны выводить. Пока только запросы, без вывода данных в html.

31 (изменено: Maxnight, 2011-05-14 22:51:01)

Re: Выпадающий список

http://s011.radikal.ru/i317/1105/6b/9e02c454ca01t.jpg

например у меня 2 специальности на одной ЦК (кафедре) и 2 группы на одной специальности!

А у меня выводится только 1!

Выбор Специальности: $query = mysql_query("SELECT * FROM Specialnost,CiklovKomis WHERE CiklovKomis.id_ciklovKomis=Specialnost.id_specialnost
AND CiklovKomis.id_ciklovKomis = '" . addslashes($_POST['nazv_ciklovKomis']) . "' ORDER BY id_specialnost");

Выбор Группы: $query = mysql_query("SELECT * FROM Groups, Specialnost WHERE Specialnost.id_specialnost=Groups.id_groups
AND Specialnost.id_specialnost='" . addslashes($_POST['nazv_ciklovKomis']) . "'    ORDER BY id_groups");

Выбор студентов в группе:$query = mysql_query("SELECT * FROM Groups, Students WHERE Groups.id_groups=Students.id_groups
AND Groups.id_groups='" . addslashes($_POST['nazv_ciklovKomis']) . "' ORDER BY id_student");

32

Re: Выпадающий список

Хорошо, только структуры таблиц и данные в виде sql запросов, либо файла желательно. Сделать это можно через экспорт. Я разверну эти таблицы у себя и попробую составить запрос.

33

Re: Выпадающий список

выложил на рапидшаре https://rapidshare.com/files/1935908473/____l.rar

34

Re: Выпадающий список

Выбор Специальности: $query = mysql_query("SELECT * FROM specialnost
WHERE id_ciklovKomis = '" . addslashes($_POST['nazv_ciklovKomis']) . "' ORDER BY id_specialnost");

Обратите внимание на $_POST['nazv_specialnosti'].
Выбор Группы: $query = mysql_query("SELECT * FROM Groups
WHERE id_specialnost='" . addslashes($_POST['nazv_specialnosti']) . "'    ORDER BY id_groups");

Обратите внимание на $_POST['nazv_groups'].
Выбор студентов в группе: $query = mysql_query("SELECT * FROM Students
WHERE id_groups='" . addslashes($_POST['nazv_groups']) . "' ORDER BY id_student");

35

Re: Выпадающий список

Большое при БОльшое спасибо работает!

36

Re: Выпадающий список

НА таком запросе для специальности: $query = mysql_query("SELECT * FROM specialnost
WHERE id_ciklovKomis = '" . addslashes($_POST['nazv_ciklovKomis']) . "' ORDER BY id_specialnost");

только выбираю в первом поле значение и сразу ошибка:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\College_db\www\form3.php on line 49

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\College_db\www\form3.php on line 54

в этих строках:                       $result = mysql_fetch_array($query);

только если в  добавлю  таблицу "CiklovKomis" тогда выводятся все специальности  и дальше все работает нормально....
$query = mysql_query("SELECT * FROM specialnost, CiklovKomis
WHERE id_ciklovKomis = '" . addslashes($_POST['nazv_ciklovKomis']) . "' ORDER BY id_specialnost");

37 (изменено: Maxnight, 2011-05-15 14:32:50)

Re: Выпадающий список

А теперь нужно в запросе изменить на  Students.id_student='" . addslashes($_POST['lastname']) . "' ?
Я покачто сделал отдельно чтоб все работало, а теперь это все нужно включить в ту форму?

<table border = "1">
          <tr>
          <th>Название дисциплины</th>
          <th>Вид контроля</th>
          <th>Оценка</th>
          <th>Дата сдачи</th>
          </tr>
<?php         
         
$result = mysql_query ("SELECT nazv_discipline, vid_kontrolya, otsenka, date_sdachi FROM Students, Discipline, Uspevaemost WHERE Students.id_student='1' AND Discipline.Id_Discipline=Uspevaemost.Id_Uspevaemost",$db);

while ($myrow = mysql_fetch_array ($result)){

    $nazv_discipline = $myrow["nazv_discipline"];
    $vid_kontrolya = $myrow["vid_kontrolya"];
    $otsenka = $myrow["otsenka"];
    $date_sdachi = $myrow["date_sdachi"];
    echo "<tr>";
    echo "<td>$nazv_discipline</td>";
    echo "<td>$vid_kontrolya</td>";
    echo "<td>$otsenka</td>";
    echo "<td>$date_sdachi</td>";
    echo "</tr>";
}

mysql_close($db);
           
            ?>
       </table>

http://s50.radikal.ru/i128/1105/b9/7415f1df7059t.jpg

38

Re: Выпадающий список

Maxnight сказал:

только если в  добавлю  таблицу "CiklovKomis" тогда выводятся все специальности

Я не вижу смысла в этом добавлении. Проверяйте SQL запросы в phpMyAdmin подставляя значения и отлавливая возвращаемые ошибки.

Maxnight сказал:

Я покачто сделал отдельно чтоб все работало, а теперь это все нужно включить в ту форму?

Я не знаю, наверное. Это вы скрипт делаете.

39 (изменено: Hanut, 2011-05-17 21:53:46)

Re: Выпадающий список

подскажите пожалуйста как правильно экранировать двойные кавычки таблицы внутри тега php:

   
<?php       
echo '<table border = "1">
          <tr>
          <th>Название дисциплины</th>
          <th>Вид контроля</th>
          <th>Оценка</th>
          <th>Дата сдачи</th>
          </tr>';
          $result = mysql_query ("SELECT nazv_discipline, vid_kontrolya, otsenka, date_sdachi FROM Students, Discipline, Uspevaemost WHERE Students.id_student=Uspevaemost.id_student AND Discipline.id_Discipline=Uspevaemost.id_Discipline",$db);

while ($myrow = mysql_fetch_array ($result)){

    $nazv_discipline = $myrow["nazv_discipline"];
    $vid_kontrolya = $myrow["vid_kontrolya"];
    $otsenka = $myrow["otsenka"];
    $date_sdachi = $myrow["date_sdachi"];
    echo "<tr>";
    echo "<td>$nazv_discipline</td>";
    echo "<td>$vid_kontrolya</td>";
    echo "<td>$otsenka</td>";
    echo "<td>$date_sdachi</td>";
    echo "</tr>";
}

mysql_close($db);
echo '</table>';
?>

а то у меня на левый блок сдвигается

http://s61.radikal.ru/i172/1105/af/93ba2b6915bct.jpg

40

Re: Выпадающий список

С экранированием проблем нет, просто забыли функцию echo.

41

Re: Выпадающий список

спасибо! а такая строка будет правильная?
echo '<input name="disc" type="submit" value="Вывести" onchange=\"this.form.submit();\"/>';

а то у меня эта таблица сразу выводится на экран! а не после нажатия кнопки

if (!empty($_POST['nazv_ciklovKomis']) && !empty($_POST['nazv_specialnosti']) && !empty($_POST['nazv_groups'])&& !empty($_POST['lastname']) && !empty($_POST['nazv_discipline'])); {
}
mysql_close($db);
echo '</table>';
echo "</form>";
?>

42

Re: Выпадающий список

Здесь лишнее экранирование двойных кавычек. Если двойные кавычки находятся внутри двойных, то их надо экранировать, а внутри одинарных - не надо.
echo '<input name="disc" type="submit" value="Вывести" onchange="this.form.submit();"/>';

43

Re: Выпадающий список

Связные списки есть, а вот как сделать, чтоб принажатии на кнопку выводилась табличка на этой же странице?
может есть какието примеры? а то со списками понятно а как с кнопкой это делать?
как тут:http://i076.radikal.ru/1105/17/82ecb31b9105t.jpg

44

Re: Выпадающий список

Все я сделал, только без нажатия кнопки, обновление на странице происходит по клику:

if (!empty($_POST['nazv_ciklovKomis']) && !empty($_POST['nazv_specialnosti']) && !empty($_POST['nazv_groups'])&& !empty($_POST['lastname'])); {
}

echo '<input name="disc" type="submit" value="Вывести" onchange=\"this.form.submit();\"/>';
echo '<p><table border = "1">
          <tr>
          <th>Название дисциплины</th>
          <th>Вид контроля</th>
          <th>Оценка</th>
          <th>Дата сдачи</th>
          </tr>';
          $result = mysql_query ("SELECT nazv_discipline, vid_kontrolya, otsenka, date_sdachi
FROM Students, Discipline, Uspevaemost
WHERE Students.id_student= '" . addslashes($_POST['lastname']) . "'
AND Students.id_student=Uspevaemost.id_student AND Discipline.id_Discipline=Uspevaemost.id_Discipline",$db);

while ($myrow = mysql_fetch_array ($result)){
    $nazv_discipline = $myrow["nazv_discipline"];
    $vid_kontrolya = $myrow["vid_kontrolya"];
    $otsenka = $myrow["otsenka"];
    $date_sdachi = $myrow["date_sdachi"];
    echo "<tr>";
    echo "<td>$nazv_discipline</td>";
    echo "<td>$vid_kontrolya</td>";
    echo "<td>$otsenka</td>";
    echo "<td>$date_sdachi</td>";
    echo "</tr>";
}

if (!empty($_POST['nazv_ciklovKomis']) && !empty($_POST['nazv_specialnosti']) && !empty($_POST['nazv_groups'])&& !empty($_POST['lastname']) && !empty($_POST['nazv_discipline'])); {
}
mysql_close($db);
echo '</table>';
echo "</form>";
?>

45

Re: Выпадающий список

Maxnight сказал:

Все я сделал, только без нажатия кнопки

Эту строку поправьте убрав лишние символы экранирования.
echo '<input name="disc" type="submit" value="Вывести" onchange=\"this.form.submit();\"/>';

Эта строка не будет работать. Лишняя точка с запятой и, по видимости, лишняя фигурная скобка.
if (!empty($_POST['nazv_ciklovKomis']) && !empty($_POST['nazv_specialnosti']) && !empty($_POST['nazv_groups'])&& !empty($_POST['lastname'])); {
}

46

Re: Выпадающий список

методом тыка и перебирания этот код работает выводит в табличке оценки того студента, которого я выбрал:
http://s011.radikal.ru/i315/1105/86/63e54eac2d5dt.jpg

только кнопка по-видимому сдесь лишняя.... если работает и без нажатия на нее

47

Re: Выпадающий список

а есть возможность рядом с со списком, где выводится фамилия студента вывести его Имя и Отчество?(причем того студента которого выбрал) или както сделать препроверку?
нельзя же 3 строки с одной таблицы вывести в один список?

48

Re: Выпадающий список

Maxnight сказал:

сть возможность рядом с со списком, где выводится фамилия студента вывести его Имя и Отчество?

Если необходимо в выпадающем списке объединить имя, фамилию и отчество, то при выборке из БД необходимо объединять поля содержащие данные значения в одну строку, что называется конкатенацией.

CONCAT(`family`, " ", `name`, " ", `patronymic`) AS `full_name`

49

Re: Выпадающий список

это делается в одном запросе?

        $query = mysql_query("SELECT CONCAT(`lastname`, " ", `name`, " ", `otchestvo`) AS `full_name` FROM Students WHERE AND id_groups='" . addslashes($_POST['nazv_groups']) . "' ORDER BY id_student");

50

Re: Выпадающий список

Верно, только уберите лишнее AND и не забудьте остальные поля (звездочка).

Maxnight сказал:

$query = mysql_query("SELECT *, CONCAT(`lastname`, " ", `name`, " ", `otchestvo`) AS `full_name` FROM Students WHERE AND id_groups='" . addslashes($_POST['nazv_groups']) . "' ORDER BY id_student");