Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyświetlanie w select danych z sql
slawekxx
post 16.02.2014, 16:30:43
Post #1





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

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


Witam,

nie wiem jak napisać poprawny kod w php tak aby uzyskać taki efekt końcowy w html

  1. <optgroup label="Ochrona" data-subtext="another test" data-icon="icon-ok">
  2. <option data-icon="icon-heart" data-subtext="2014">Książki służb </option>
  3. <option data-icon="icon-heart" data-subtext="2014">Książka gośœci</option>
  4.  
  5. <optgroup label="Sekretariat">
  6. <option data-icon="icon-heart" data-subtext="2014">Dzienniki korespondencji</option>
  7. <option data-icon="icon-heart" data-subtext="2014">Książki pocztowe</option>
  8.  
  9. <optgroup label="Transport">
  10. <option data-icon="icon-heart" data-subtext="2014">Tachografy</option>
  11. <option data-icon="icon-heart" data-subtext="2014">Wypłaty kierowców</option>
  12. <option data-icon="icon-heart" data-subtext="2014">Dokumentacja samochodów</option>


dotychczasowy nie daje takiego efektu

  1. <select>
  2. <?php
  3. include"db.php";
  4.  
  5.  
  6. $sql="Select * from department order by id_department asc ";
  7. $show=mysql_query($sql);
  8.  
  9. while($row=mysql_fetch_array($show)){
  10. echo "
  11. <optgroup label='$row[name_department]'>
  12. <option data-subtext='2014'>$row[name_documents]</option>
  13.  
  14. </optgroup>
  15.  
  16. ";
  17. }
  18.  
  19. ?>
  20. </select>
  21.  
  22.  
Go to the top of the page
+Quote Post
memory
post 16.02.2014, 16:38:30
Post #2





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

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


  1. $group = array();
  2. while ($row = mysql_fetch_assoc($show))
  3. {
  4. $group[$row['name_department']][] = $row;
  5. }
  6. foreach ($group as $key => $values)
  7. {
  8. echo '<optgroup label="'.$key.'">';
  9. foreach ($values as $value)
  10. {
  11. echo '<option value="'.$value['name_documents'].'"> '.$value['name_documents'].'</option>';
  12. }
  13. echo '</optgroup>';
  14. }


Ten post edytował memory 16.02.2014, 16:39:02
Go to the top of the page
+Quote Post
sajegib
post 16.02.2014, 16:41:17
Post #3





Grupa: Zarejestrowani
Postów: 352
Pomógł: 59
Dołączył: 16.01.2013

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


nie umieszać odwołań do elementów tablicy w stringu tylko same zmienne czyli:
  1. while($row=mysql_fetch_array($show)){
  2. $name_department = $row['name_department'];
  3. $name_documents = $row['name_documents'];
  4. <optgroup label='$name_department'>
  5. <option data-subtext='2014'>$name_documents</option>
  6.  
  7. </optgroup>
  8. ";
  9. }

pozatym to do elementów tablicy asocjacyjnej mój drogi odwołujesz się stringiem a nie stałą (jak próbujesz robić wyżej wink.gif

czyli nie:
  1. $row[name_documents]


tylko
  1. $row['name_documents']

Nie ma za co wink.gif

EDIT: POLECAM LEKTURĘ showtopic=227811&view=findpost&p=1092085
Powód edycji: [Kshyhoo]:
Go to the top of the page
+Quote Post
slawekxx
post 16.02.2014, 17:10:28
Post #4





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

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


jednak teraz mi nic nie działa

  1. <?php
  2. include"db.php";
  3.  
  4. $group = array();
  5. $sql="Select * from department order by id_department asc ";
  6. $show=mysql_query($sql);
  7. while ($row = mysql_fetch_assoc($show))
  8. {
  9. $group[$row['name_department']][] = $row;
  10. }
  11. foreach ($group as $key => $values)
  12. {
  13. echo '<optgroup label="'.$key.'">';
  14. foreach ($values as $value)
  15. {
  16. echo '<option value="'.$value['name_documents'].'"> '.$value['name_documents'].'</option>';
  17. }
  18. echo '</optgroup>';
  19. }
  20. ?>
  21. </select>


w kodzie kolegi sajegib mam ten nie pożądany efekt , na kodzie wyżej umieszczonym nic nie odczytuje

Ten post edytował slawekxx 16.02.2014, 17:30:48
Go to the top of the page
+Quote Post
memory
post 16.02.2014, 17:14:37
Post #5





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

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


zgubiłeś $show=mysql_query($sql);
Go to the top of the page
+Quote Post
sajegib
post 16.02.2014, 17:22:08
Post #6





Grupa: Zarejestrowani
Postów: 352
Pomógł: 59
Dołączył: 16.01.2013

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


Sprawdz co ci interpreter mowi i bledach, ja juz widze jeden wink.gif

[EDIT]

Nie powinieneś dla każdego optiona robic optgroup moim zdaniem

Ten post edytował sajegib 16.02.2014, 17:25:15
Go to the top of the page
+Quote Post
slawekxx
post 16.02.2014, 17:44:49
Post #7





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

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


Teraz poprawiłem i pobiera dane z bazy tylko mam całkiem rozjechane dzieci nie są przypisane do konkretnych rodziców
taką mam tablice http://www.fotosik.pl/pokaz_obrazek/pelny/...85a6f2cabc.html
a tak wygląda sam selekt http://www.fotosik.pl/pokaz_obrazek/pelny/...d5b3a80e31.html

może coś poradzicie :-)

Np.Rodzic to Księgowość
Dzieci to Faktury
Potwierdzenie salda
Wyciąg bankowy

Go to the top of the page
+Quote Post
sajegib
post 16.02.2014, 19:10:55
Post #8





Grupa: Zarejestrowani
Postów: 352
Pomógł: 59
Dołączył: 16.01.2013

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


mysql: ORDER BY powinien podziałać
Go to the top of the page
+Quote Post
slawekxx
post 16.02.2014, 19:40:08
Post #9





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

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


Jak zmieniłem linie kodu 9 na

  1. $group[$row['id_department']][] = $row;


Wyświetlały mi się dzieci ale bez rodziców

znowu jak zmieniłem linie 13 kodu na

  1. echo '<optgroup label="'.$value['name_department'].'">';


wyświetlają się mi rodzice , którzy nie mają dzieci i jednocześnie gdzie są dzieci nie wyświetlają mi się rodzice

Go to the top of the page
+Quote Post
com
post 17.02.2014, 00:22:40
Post #10





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


sajegib nie wprowadzaj no tu ludzi w błąd:

  1. echo "$row['name_documents']"; // PARSE ERROR
  2. echo "$row[name_documents]"; //ok
  3. echo "{$row['name_documents']}"; //ok
  4. echo $row[name_documents]; // NOTICE
  5. echo $row['name_documents']; //ok


A co do autora problem jest tego typu, że w tym co napisał memory dzieci przypisuje do name_department a Ty przy dzieciach masz tam pusto..

Ten post edytował com 17.02.2014, 00:23:33
Go to the top of the page
+Quote Post
slawekxx
post 17.02.2014, 05:57:20
Post #11





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

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


Poprawiłem zapytanie do sqla
  1. $sql="Select * from department order by id_department,name_department,id_documents,name_documents asc ";
i teraz mam coś takiego http://www.fotosik.pl/pokaz_obrazek/pelny/...86dc7b5d45.html
czyli dzieci o jeden poziom w górę a powiiny iść o jeden w dół , co jest grane ... kod poniżej
  1. <select>
  2. <?php
  3. include"db.php";
  4. //name_department WHERE activated = '1'
  5. $group = array();
  6. $class=array();
  7. $sql="Select * from department order by id_department,name_department,id_documents,name_documents asc ";
  8. $show=mysql_query($sql);
  9. while ($row = mysql_fetch_assoc($show))
  10. {
  11. $group[$row['id_department']][] = $row;
  12.  
  13. }
  14. foreach ($group as $key => $values)
  15. {
  16. echo $key;
  17. echo '<optgroup label="'.$value['name_department'].'">';
  18. foreach ($values as $value)
  19. {
  20. echo '<option value="'.$value['name_documents'].'"> '.$value['name_documents'].'</option>';
  21. }
  22. echo '</optgroup>';
  23. }
  24.  
  25. ?>
  26. </select>
  27.  
Go to the top of the page
+Quote Post
Kshyhoo
post 17.02.2014, 09:16:05
Post #12





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Popatrz na przykładowe rozwiązanie:
  1. $kat_list = "";
  2. $_GET['kat_id'] = '';
  3. $result = dbquery("SELECT kat_id, kat_kategoria FROM kategorie WHERE kat_cat='0' ORDER BY kat_order");
  4. if (dbrows($result) != 0) {
  5. while ($data = dbarray($result)) {
  6. $result2 = dbquery("SELECT kat_id, kat_kategoria FROM kategorie WHERE kat_cat='".$data['kat_id']."' ORDER BY kat_order");
  7. if (dbrows($result2) != 0) {
  8. $kat_list .= "<optgroup label='".$data['kat_kategoria']."'>\r\n";
  9. while ($data2 = dbarray($result2)) {
  10. $kat_list .= "<option value='".$data2['kat_id']."'>".$data2['kat_kategoria']."</option>\r\n";
  11. }
  12. $kat_list .= "</optgroup>\r\n";
  13. }
  14. }
  15. }
  16. echo '<select name="kat_id[]" id="kat" class="textbox" style="width: 150px" size="5" multiple>'.$kat_list.'</select>';

Nie wiem, jaką masz strukturę bazy, to powyższe jest dla:
  1. kategorie:
  2. kat_id int(11) // ID
  3. kat_kategoria varchar(255) // nazwa
  4. kat_cat int(11) // ID rodzica
  5. kat_order int(11) // kolejność


--------------------
Go to the top of the page
+Quote Post
slawekxx
post 17.02.2014, 17:54:03
Post #13





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

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


Kshyhoo czy możesz mi podać źródło Twojego przykładu szukam w necie ale najczęściej są dynamiczne select boxy, u mnie wspólnym elementem jest id_id_department np. Księgowość ma numer 5 i przypisane do działu dokumenty też mają numer 5

Ten post edytował slawekxx 17.02.2014, 18:01:14
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 Wersja Lo-Fi Aktualny czas: 18.07.2025 - 02:24