Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> wartości bitowe i problem
robur
post 13.03.2007, 14:32:05
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 6.03.2007

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


Witam, chciałbym zrobić coś takiego, ale nie mam pomysłu i proszę o pomoc
mam dane zapisane w bazie w postaci $bit_media=11111100000000000000 w sumie 20 pozycji gdzie pierwsza 1 jest wolna a kolejne 1 oznaczają gaz, woda , kanalizacja , prąd , siła.
i teraz chciałbym zrobić takie coś:
  1. <?php
  2. <input type="checkbox" class="radio" name="bit_media[]" value="1" jesli jest w $bit_media na pozycji 2 jedynka to echo "checked";> gaz &nbsp;&nbsp;
  3. <input type="checkbox" class="radio" name="bit_media[]" value="2" jesli jest w $bit_media na pozycji 3 jedynka to echo "checked";> woda &nbsp;&nbsp;
  4. <input type="checkbox" class="radio" name="bit_media[]" value="3" jesli jest w $bit_media na pozycji 4 jedynka to echo "checked";> kanalizacja &nbsp;&nbsp;
  5. <input type="checkbox" class="radio" name="bit_media[]" value="4" jesli jest w $bit_media na pozycji 5 jedynka to echo "checked";> pr&#261;d &nbsp;&nbsp;
  6. <input type="checkbox" class="radio" name="bit_media[]" value="5" jesli jest w $bit_media na pozycji 6 jedynka to echo "checked";> si&#322;a &nbsp;&nbsp;
  7. ?>


z góry dziękuje za podpowiedz

Ten post edytował robur 13.03.2007, 15:53:30
Go to the top of the page
+Quote Post
misiek172
post 13.03.2007, 15:00:28
Post #2





Grupa: Zarejestrowani
Postów: 656
Pomógł: 3
Dołączył: 26.10.2005
Skąd: Częstochowa

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


nie rozumiem, gdzie tak jedynka?
bit_media[1] tu?


--------------------
zmoderowano - waga i rozmiar
Go to the top of the page
+Quote Post
robur
post 13.03.2007, 17:01:47
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 6.03.2007

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


$bit_media=11111100000000000000

1 wolna
1 => gaz
1 => woda
1 => kanalizacja
1 => prąd
1 => siła
0 => wolne
0 => wolne
0 => wolne
i tak dalej
Go to the top of the page
+Quote Post
Norbas
post 13.03.2007, 22:48:36
Post #4





Grupa: Zarejestrowani
Postów: 100
Pomógł: 1
Dołączył: 6.02.2006

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


Najłatwiej chyba będzie sprawdzać pozycję odpowiedniego znaku w łańcuchu, można również sprawdzać wynik dzielenia
Kod
$str_media = strval(1111100000000000000);
$media = array(
  2 => 'gaz',
  3 => 'woda',
  // ... itd.
);
foreach($media as $k => $v)
  echo '<input type="checkbox" class="radio" name="bit_media[]" value="' .
    ($k - 1) . '"' . ((substr($str_media, $k, 1) == '1') ? ' checked' : '') .
    '>' . $v . '&nbsp; ';


--------------------
Go to the top of the page
+Quote Post
DeyV
post 14.03.2007, 00:10:48
Post #5





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




warto też pamiętać o tym, że do poszczególnych znaków w stringu można odwołać się również tak:

$bit_media{ 2 } ;


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
robur
post 14.03.2007, 09:00:55
Post #6





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 6.03.2007

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


Dzięki Norbas działa elegancko smile.gif
choć zrobiłem jeszcze inaczej
  1. <?php
  2. $query = "SELECT bit_media FROM tr_nieruchomosci WHERE id_pn='$id' AND rodz_transakcji='$rt' ";
  3.  
  4. $result = mysql_query ($query);// or die ("Zapytanie zakończone niepowodzeniem");
  5. $offer = mysql_fetch_assoc($result);
  6.  
  7. // Pobierz słownik
  8. /* Funkcje */
  9. function getBitValue ($dict, $value) {
  10.  $bvalue = '';
  11.  
  12.  for($i=1;$i<6;$i++) {
  13. if($value[$i] == 1) {
  14.  $label = !empty($dict[$i]) ? $dict[$i] : '[-'.$i.'-]';
  15.  $bvalue .= (!empty($bvalue) ? ',&nbsp;&nbsp;<input type="checkbox" class="radio" name="bit_media[]" value="'.$i.'" checked> ' : '<input type="checkbox" class="radio" name="bit_media[]" value="'.$i.'" checked> ') . $label;
  16. }
  17.  if($value[$i] == 0) {
  18.  $label = !empty($dict[$i]) ? $dict[$i] : '[-'.$i.'-]';
  19.  $bvalue .= (!empty($bvalue) ? ',&nbsp;&nbsp;<input type="checkbox" class="radio" name="bit_media[]" value="'.$i.'" > ' : '<input type="checkbox" class="radio" name="bit_media[]" value="'.$i.'" > ') . $label;
  20. }
  21.  }
  22.  
  23.  return $bvalue;
  24. }
  25.  
  26. $query = "SELECT * FROM bit_media_HAUSE_RENT";
  27. $result = mysql_query ($query);// or die ("Zapytanie zakończone niepowodzeniem");
  28. $slownik_bit_media = array();
  29. while ($line = mysql_fetch_assoc($result)) {
  30.  $slownik_bit_media[$line['id']] = $line['nazwa'];
  31. }
  32. mysql_free_result($result); 
  33.  
  34. foreach($offer as $key => $value) {
  35.  
  36.  if($key == 'bit_media') {
  37. <td class="nazwa"> Media:</td>
  38. <td class="opis">'.getBitValue (&$slownik_bit_media, $value).'
  39. </td>
  40.  </tr>';
  41.  } 
  42. }
  43. ?>
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: 14.08.2025 - 00:20