Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Lista rozwijalna_zmienne, Problem z listą rozwijalna
tompibed
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 1
Dołączył: 9.08.2011

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Chelo
post
Post #2





Grupa: Zarejestrowani
Postów: 178
Pomógł: 8
Dołączył: 19.03.2007

Ostrzeżenie: (0%)
-----


Połącz kod w jeden php, następnie całe wypisywanie na ekran wpleć do pętli for i po sprawie.
Go to the top of the page
+Quote Post
mortus
post
Post #3





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


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".

Ten post edytował mortus 4.02.2012, 17:51:33
Go to the top of the page
+Quote Post
tompibed
post
Post #4





Grupa: Zarejestrowani
Postów: 10
Pomógł: 1
Dołączył: 9.08.2011

Ostrzeżenie: (0%)
-----




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.

Ten post edytował tompibed 4.02.2012, 20:26:45
Go to the top of the page
+Quote Post
mortus
post
Post #5





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


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".
Go to the top of the page
+Quote Post
tompibed
post
Post #6





Grupa: Zarejestrowani
Postów: 10
Pomógł: 1
Dołączył: 9.08.2011

Ostrzeżenie: (0%)
-----


niestety nadal nic... sad.gif

Wyświetla mi tylko ostatnią osobę która przynależy do danej grupy

Ten post edytował tompibed 5.02.2012, 11:41:53
Go to the top of the page
+Quote Post
Chelo
post
Post #7





Grupa: Zarejestrowani
Postów: 178
Pomógł: 8
Dołączył: 19.03.2007

Ostrzeżenie: (0%)
-----


tompibed, niemożliwe. Pokaż twój kod.
Go to the top of the page
+Quote Post
tompibed
post
Post #8





Grupa: Zarejestrowani
Postów: 10
Pomógł: 1
Dołączył: 9.08.2011

Ostrzeżenie: (0%)
-----


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

Go to the top of the page
+Quote Post
mortus
post
Post #9





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Zamiast 'numer_studenta' daj $numer_studenta. Pisałem z głowy i się walnąłem.
Go to the top of the page
+Quote Post
tompibed
post
Post #10





Grupa: Zarejestrowani
Postów: 10
Pomógł: 1
Dołączył: 9.08.2011

Ostrzeżenie: (0%)
-----


No tak mogłem sam na to wpaść, dzięki za pomoc biggrin.gif

muszę się jeszcze dużo nauczyć.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 11:25