Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kolorowanie grup w select
Forum PHP.pl > Forum > PHP
AxZx
witam

mam tablice np:
war1 | 1
war1 | 233
war1 | 3566
war3 | 546
war3 | 676
war5 | 5545


chce te wartosci wstawic do selecta, i zrobic tak ze w option beda te dane wyswietlane tak:
war1: 1
war1: 233
war1: 3566

to nie jest problem
problem mam z tym zeby wszystkie war1 byly szare, wszystkie war3 biale, pozniej war5 szare i tak w kolko

czyli kolorowanie grup w polu select

pomoze ktos jak to zrobic?

kombinuje tak

  1. <?php
  2. $branza = '';
  3. foreach($this->drzewo->dolacz_branze() as $wartosc=>$klucz){
  4.  
  5.  
  6. if($klucz['name1'] == $branza){
  7. $zmien = true;
  8. }
  9. $branza = $klucz['name1'];
  10. //<option.... 
  11. }
  12.  
  13. ?>

wszystkie szare
quex
Wystarczy sprawdzić, nazwę i gdzie jest war1 do <option> dołączyć style="background-color:"
AxZx
to byl przyklad:P

nie wiem jakie mam wartosci
wiecej roboty byloby ze sprawdzaniem niz to tego warte
musialbym sprawdzac jakie sa wszystkie glowne branze, posortowac je, i jakos ustawic co druga grupe szara

moze da sie prosciej?
crash
Posortuj tablicę wg. tej branży, ustaw kolor na szary, dopóki branża jest taka sama koloruj na szary, jeśli się zmieni - zmień kolor na biały - koloruj aż do kolejnej zmiany. I tak w kółko.
AxZx
nie wiem co napisac. zaskoczyles mnie.

jakbys nie zauwazyl to mam juz posortowana tablice.

wlasnie o to pytalem co napisales
Cytat
ustaw kolor na szary, dopóki branża jest taka sama koloruj na szary, jeśli się zmieni - zmień kolor na biały - koloruj aż do kolejnej zmiany. I tak w kółko.


jak to zrobic?
crash
  1. <?php
  2. $branza = '';
  3. foreach( $this->drzewo->dolacz_branze() as $wartosc => $klucz )
  4. {
  5.  $kolor = '#' . ( ( $klucz[ 'name1' ] != $branza ) ? 'cccccc' : 'ffffff' );
  6.  $branza = $klucz[ 'name1' ];
  7.  
  8.  echo '<option style="background-color: ' . $kolor . ';">...</option>';
  9. }
  10. ?>
AxZx
ehh nieporozumienie
wiem jak pokolorowac, wiem jak zrobic warunek:P

jak sprawdzic ze sie zmienia?

jestes pewien ze takie cos dziala? ja takie cos wlasnie napisalem i nie dzialalalo,
  1. <?php
  2. $branza = '';
  3. foreach( $this->drzewo->dolacz_branze() as $wartosc => $klucz )
  4. {
  5.  $kolor = '#' . ( ( $klucz[ 'name1' ] != $branza )
  6. ?>
crash
Dobra, sorry. Wprowadziłem Cię w błąd, bo użyłem czegoś czego sam nie sprawdziłem. Chodzi o ustawienie background-color dla każdego option, co zaproponował quex. Tak się da? Bo chyba nie... Może zamiast tego zadowoli Cię coś takiego:
  1. <?php
  2. $dane = array(
  3.  array( 'war1', '1' ),
  4.  array( 'war1', '233' ),
  5.  array( 'war1', '3566' ),
  6.  array( 'war3', '546' ),
  7.  array( 'war3', '676' ),
  8.  array( 'war5', '5545' )
  9.  );
  10.  
  11. $branza = '';
  12.  
  13. echo '<select>' . "\n";
  14.  
  15. foreach( $dane as $klucz => $wartosc )
  16. {
  17.  if( $wartosc[ 0 ] != $branza )
  18.  {
  19. echo '<optgroup label="' . $wartosc[ 0 ] . '">' . "\n";
  20.  }
  21.  $branza = $wartosc[ 0 ];
  22.  
  23.  echo '<option>' . $wartosc[ 1 ]. '</option>' . "\n";
  24. }
  25.  
  26. echo '</select>' . "\n";
  27. ?>
AxZx
wymyslilem cos takiego, nie wiem czy to jest optymalne i poprawne


  1. <?php
  2.  
  3.  $branza = '';
  4.  $zmiana = 0;
  5.  foreach($this->drzewo->dolacz_branze() as $wartosc=>$klucz){
  6.  
  7. if($branza != $klucz['name1']){
  8.  $zmiana++;
  9. }
  10. if($zmiana % 2 ==0){
  11.  $kolor = '#cccccc';
  12. }else{
  13.  $kolor = '#ffffff';
  14. }
  15. echo '<option value="'.$klucz['id'].'" style="background-color:'.$kolor.';" >'.$klucz['name1'].': '.$klucz['name2'].'</option>';
  16.  
  17. $branza = $klucz['name1'];
  18.  
  19. }
  20.  
  21. ?>
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.