Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Lista rozwijalna_zmienne
Forum PHP.pl > Forum > Przedszkole
tompibed
Witam mam taki problem, otóż chciałbym zrobić listę która ma wyglądać mniej więcej w taki sposób, do podtytulu numeru grupy byly filtrowane tylko te osoby co przynależa do danej grupy.


NUMER GRUPY(L11)
dane z grupy L11

NUMER GRUPY(L12)
dane z grupy L12
.
.
.

nie za bardzo wiem jak to zrobic, generalnie jak w kodzie zamienic
  1. $numer='L11';
ażeby była jakaś zmienna, ale nie chce mi nic dzialać i ażeby to w pętli było.
Z góry dzięki za pomoc


  1. <?php require_once("includes/session.php"); ?>
  2. <?php require_once("includes/connection.php"); ?>
  3.  
  4. <?php require_once("includes/functions.php"); ?>
  5. <?php include("includes/header.php"); ?>
  6.  
  7.  
  8.  
  9. <table id="structure">
  10. <tr>
  11. <td id="navigation">
  12. <td bgcolor="#993300" width="140" valign="top" >
  13. <center><a href="staff.php" class="navigation"><?php echo iconv('CP1250', 'utf-8', "MENU GŁÓWNE");?></a>
  14. <a href="logout.php"class="navigation">WYLOGUJ</a></center>
  15. </td>
  16.  
  17. <?php
  18.  
  19. $numer='L11';
  20.  
  21. $result=mysql_query("select * from student s,grupa g where numer_g=numer AND symbol_g=symbol AND numer='$numer'", $connection);
  22. $result1=mysql_query("select nazwa,symbol,numer from grupa where numer='$numer' ",$connection);
  23.  
  24. // $wynik=$result && $result1;
  25.  
  26. if(!$result){
  27. }
  28. ?>
  29.  
  30. </td>
  31.  
  32. <td id="page">
  33. <?php if (!empty($message)) {echo "<p class=\"message\">" . $message . "</p>";} ?>
  34. <?php if (!empty($errors)) { display_errors($errors); } ?>
  35. <form action="lista_student.php" method="post">
  36.  
  37. <br /><p align="left" class="menu"><?php echo iconv('CP1250', 'utf-8', "LISTA studentow");?></p> <br />
  38.  
  39. <dl id="menu1">
  40.  
  41. <dt>
  42. <?php
  43. if($result1==true){
  44. while($row1=mysql_fetch_array($result1))
  45. {
  46. echo $row1["numer"].' '.$row1["symbol"].' '.$row1["nazwa"];
  47. }}
  48. ?>
  49. </dt>
  50.  
  51. <dd style="display: none; ">
  52.  
  53. <?php
  54.  
  55. echo '<table border="5" bgcolor="lime">';
  56. $txt= '<th style="width: 75px;border-left: 5px solid black">ID studenta</th>'
  57. .'<th style="width: 150px;border-left: 5px solid black">Imie</th>'
  58. .'<th style="width: 180px;border-left: 5px solid black">Nazwisko</th>'
  59. .'<th style="width: 200px;border-left: 5px solid black">numer_indexu</th>'
  60. .'<th style="width: 200px;border-left: 5px solid black">Symbol grupy</th>'
  61. .'<th style="width: 200px;border-left: 5px solid black">Numer grupy</th>'
  62. .'<th style="width: 50px;border-left: 5px solid black">edycja student</th>'
  63. ;
  64.  
  65. echo iconv('CP1250', 'utf-8', $txt);
  66. echo '</table>';
  67. while($row=mysql_fetch_array($result)){
  68. echo '<table border="5"><th style="width: 75px;border-left: 5px solid black"bgcolor="#D1763F">'
  69. .$row["student.id"].'</td>';
  70. echo '<td style="width: 150px;border-left: 5px solid black">'.$row["imie"]
  71. .'<td style="width: 180px;border-left: 5px solid black">'.$row["nazwisko"]
  72. .'<td style="width: 200px;border-left: 5px solid black">'.$row["numer_indexu"]
  73. .'<td style="width: 200px;border-left: 5px solid black">'.$row["symbol_g"]
  74. .'<td style="width: 200px;border-left: 5px solid black">'.$row["numer_g"]
  75. .'<td style="width: 200px;border-left: 5px solid black">'.'<img src="images/b_edit.png">'.'<a href="edit_student.php">Edit'
  76. .'</table>';
  77. }
  78. echo '</td>';
  79.  
  80. ?>
  81.  
  82. </dd>
  83.  
  84. </form>
  85. </td>
  86. </tr>
  87. </table>
  88.  
  89.  
  90. <script type="text/javascript">
  91. // <![CDATA[
  92. new Menu('menu1','',false,false,10,0);
  93. // ]]>
  94. </script>
  95. <?php include("includes/footer.php"); ?>


czy naprawdę nikt mi nie pomoże... co_jest.gif
Chelo
Połącz kod w jeden php, następnie całe wypisywanie na ekran wpleć do pętli for i po sprawie.
mortus
Skoro nie są to dane pobierane asynchronicznie z pomocą AJAX-a, to trzeba je pobrać wszystkie tzn. wszystkich studentów i wszystkie grupy i utworzyć odpowiednią tablicę w PHP. Można to zrobić za pomocą jednego zapytania:
  1. SELECT `g`.`numer`, `g`.`symbol`, `g`.`nazwa`, `s`.* FROM `student` `s` LEFT JOIN `grupa` `g` ON `s`.`numer_g` = `g`.`numer`

Otrzymamy wtedy wiersze, których liczba odpowiada ilości studentów. Każdy wiersz będzie zawierał:
numer grupy, symbol grupy, nazwę grupy, dane studenta
Oczywiście tworzymy w ten sposób pewną nadmiarowość danych, ale ta nadmiarowość w tym przypadku jest uzasadniona. Można ją zniwelować przy pomocy MySQL-owego GROUP_CONCAT, jednak nie jest to konieczne.
Jeśli użyjemy powyższego zapytania, to listę studentów w określonych grupach możemy wygenerować w takiej oto pętli:
  1. $grupy = array();
  2. while($row = mysql_fetch_assoc($result)) {
  3. $grupy[$row['numer']]['numer'] = $row['numer'];
  4. $grupy[$row['numer']]['symbol'] = $row['symbol'];
  5. $grupy[$row['numer']]['nazwa'] = $row['nazwa'];
  6. $grupy[$row['numer']]['studenci']['imie'] = $row['imie'];
  7. $grupy[$row['numer']]['studenci']['nazwisko'] = $row['nazwisko'];
  8. $grupy[$row['numer']]['studenci']['numer_indexu'] = $row['numer_indexu'];
  9. // ...
  10. }

Taką oto tablicę można już sobie ładnie wyświetlić w pętli foreach, przy czym musisz wykorzystać pętlę w pętli do wyświetlenia studentów, mniej więcej wyglądałoby to tak:
  1. foreach($grupy as $grupa) {
  2. echo $grupa['numer'] . ' ' . $grupa['symbol'] . ' ' . $grupa['nazwa'] . '<br />';
  3. foreach($grupa['studenci'] as $student) {
  4. echo $student['imie'] . ' ' . $student['nazwisko'] . ' ' .$student['numer_indexu'] . '...<br />';
  5. }
  6. }

Pozostaje jedynie kwestia opatrzenia wszystkiego odpowiednimi znacznikami HTML.

EDIT: Pisane z palca, więc mogą być "nieporozumienia".
tompibed


niby wszystko gra, musiałem nieco przekształcić
  1. $grupy[$row['numer']]['studenci']['']['imie'] = $row['imie'];

bo odwracało mi tablice,


wystąpił kolejny problem, otóż wyświetla mi tylko po jednej linii w danej grupie.
Przykladowo, do grupy mam dodanych 3 uczniow a wyswietla mi tylko 1

proszę o ponowną pomoc.
mortus
No tak, rzeczywiści czegoś brakuje, a mianowicie numeru studenta:
  1. $grupy = array();
  2. $numer_studenta = 0;
  3. while($row = mysql_fetch_assoc($result)) {
  4. $grupy[$row['numer']]['numer'] = $row['numer'];
  5. $grupy[$row['numer']]['symbol'] = $row['symbol'];
  6. $grupy[$row['numer']]['nazwa'] = $row['nazwa'];
  7. $grupy[$row['numer']]['studenci']['numer_studenta']['imie'] = $row['imie'];
  8. $grupy[$row['numer']]['studenci']['numer_studenta']['nazwisko'] = $row['nazwisko'];
  9. $grupy[$row['numer']]['studenci']['numer_studenta']['numer_indexu'] = $row['numer_indexu'];
  10. // ...
  11. $numer_studenta++;
  12. }

I chyba teraz powinno działać, cho jak mówie, to wszystko pisane "z palca".
tompibed
niestety nadal nic... sad.gif

Wyświetla mi tylko ostatnią osobę która przynależy do danej grupy
Chelo
tompibed, niemożliwe. Pokaż twój kod.
tompibed
Oto cały kod
  1. <?php require_once("includes/session.php"); ?>
  2. <?php require_once("includes/connection.php"); ?>
  3.  
  4. <?php require_once("includes/functions.php"); ?>
  5. <?php include("includes/header.php"); ?>
  6.  
  7.  
  8.  
  9. <table id="structure">
  10. <tr>
  11. <td id="navigation">
  12. <td bgcolor="#993300" width="140" valign="top" >
  13. <center><a href="staff.php" class="navigation"><?php echo iconv('CP1250', 'utf-8', "MENU GŁÓWNE");?></a>
  14. <a href="logout.php"class="navigation">WYLOGUJ</a></center>
  15. </td>
  16.  
  17. <?php
  18.  
  19.  
  20.  
  21. $result=mysql_query("SELECT `g`.`numer`, `g`.`symbol`, `g`.`nazwa`, `s`.* FROM `student` `s` LEFT JOIN `grupa` `g` ON `s`.`numer_g` = `g`.`numer` ", $connection);
  22.  
  23.  
  24. if(!$result){
  25. }
  26. ?>
  27.  
  28. </td>
  29.  
  30. <td id="page">
  31. <?php if (!empty($message)) {echo "<p class=\"message\">" . $message . "</p>";} ?>
  32. <?php if (!empty($errors)) { display_errors($errors); } ?>
  33. <form action="lista_student.php" method="post">
  34.  
  35. <br /><p align="left" class="menu"><?php echo iconv('CP1250', 'utf-8', "LISTA studentow");?></p> <br />
  36.  
  37. <dl id="menu1">
  38. <dd style="display: none; ">
  39. <dt>
  40.  
  41.  
  42. <?php
  43.  
  44. $grupy = array();
  45. $numer_studenta=0;
  46.  
  47. while($row = mysql_fetch_assoc($result)) {
  48.  
  49. $grupy[$row['numer']]['numer'] = $row['numer'];
  50. $grupy[$row['numer']]['symbol'] = $row['symbol'];
  51. $grupy[$row['numer']]['nazwa'] = $row['nazwa'];
  52. $grupy[$row['numer']]['studenci']['numer_studenta']['imie'] = $row['imie'];
  53. $grupy[$row['numer']]['studenci']['numer_studenta']['nazwisko'] = $row['nazwisko'];
  54. $grupy[$row['numer']]['studenci']['numer_studenta']['numer_indexu'] = $row['numer_indexu'];
  55.  
  56. $numer_studenta++;
  57. }
  58. foreach($grupy as $grupa) {
  59. echo $grupa['numer'] . ' ' . $grupa['symbol'] . ' ' . $grupa['nazwa'] . '<br />';
  60. foreach( $grupa['studenci'] as $student)
  61. {
  62. echo $student['imie'] . ' ' . $student['nazwisko'] . '<br />';
  63.  
  64. }
  65. }
  66.  
  67.  
  68. ?>
  69.  
  70. </dd>
  71.  
  72. </form>
  73. </td>
  74. </tr>
  75. </table>
  76.  
  77.  
  78. <script type="text/javascript">
  79. // <![CDATA[
  80. new Menu('menu1','',false,false,10,0);
  81. // ]]>
  82. </script>
  83. <?php include("includes/footer.php"); ?>




dane jakie mam w tabeli
imie1 nazwisko1 G10
imie2 nazwisko2 G11
imie3 nazwisko3 G10
imie4 nazwisko4 G11
imie5 nazwisko5 G10

Wyswietla mi w taki sposob



Grupa G10
imie5 nazwisko5
Grupa G11
imie4 nazwisko4

mortus
Zamiast 'numer_studenta' daj $numer_studenta. Pisałem z głowy i się walnąłem.
tompibed
No tak mogłem sam na to wpaść, dzięki za pomoc biggrin.gif

muszę się jeszcze dużo nauczyć.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.