Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyświetlanie w select danych z sql
Forum PHP.pl > Forum > PHP
slawekxx
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.  
memory
  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. }
sajegib
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
slawekxx
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
memory
zgubiłeś $show=mysql_query($sql);
sajegib
Sprawdz co ci interpreter mowi i bledach, ja juz widze jeden wink.gif

[EDIT]

Nie powinieneś dla każdego optiona robic optgroup moim zdaniem
slawekxx
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

sajegib
mysql: ORDER BY powinien podziałać
slawekxx
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

com
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..
slawekxx
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.  
Kshyhoo
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ść
slawekxx
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
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.