Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wartości bitowe
Forum PHP.pl > Forum > PHP
robur
Mam prośbę o pomoc w rozwiązaniu lub nasunięciu pomysłu na takie coś.
W bazie danych mam zapisane dane w postaci bitowej 11111110000000000000 gdzie pierwsza cyfra 1 jest wolna a kolejne odpowiednio oznaczają
Cytat
1
1 siła
1 woda
1 gaz
1 telefon
1 ogrzewanie
1 kanalizacja
0
0
0
0
0
0
0
0


i tak do 20 w sumie miejsc

i teraz chciałbym zrobić funkcję, która w odpowiednim miejscu w zmiennej $bit wstawi 1 jeśli pozycja zostanie wybrana lub 0 jeśli nie

  1. <form action="bit.php" method="get" >
  2. <input type="checkbox" name="bit_media[]" value="1" /> siła
  3. <input type="checkbox" name="bit_media[]" value="2" /> woda
  4. <input type="checkbox" name="bit_media[]" value="3" /> gaz
  5. <input type="checkbox" name="bit_media[]" value="4" /> telefon
  6. <input type="checkbox" name="bit_media[]" value="5" /> ogrzewanie
  7. <input type="checkbox" name="bit_media[]" value="6" /> kanalizacja
  8. <input type="submit" value="szukaj" >


i tak np jeśli zostaną wybrane pozycje woda , gaz , kanalizacja zmienna $bit = 10110010000000000000

dzięki za pomoc

----------------------
Jeśli chcemy dać kod na forum umieszczamy go
w odpowiednich tagach BB Code, tym
razem poprawiłem, ale na przyszłość proszę
się do tego stosować.
---
~strife
JaRoPHP
Delikatna modyfikacja formularza (zmiana wartości atrybutów value):
  1. <form action="bit.php" method="get" >
  2. <input type="checkbox" name="bit_media[]" value="sila" /> siła
  3. <input type="checkbox" name="bit_media[]" value="woda" /> woda
  4. <input type="checkbox" name="bit_media[]" value="gaz" /> gaz
  5. <input type="checkbox" name="bit_media[]" value="telefon" /> telefon
  6. <input type="checkbox" name="bit_media[]" value="ogrzewanie" /> ogrzewanie
  7. <input type="checkbox" name="bit_media[]" value="kanalizacja" /> kanalizacja
  8. <input type="submit" value="szukaj" />
  9. </form>

I skrypt PHP (korzystający z funkcji in_array" title="Zobacz w manualu PHP" target="_manual):

  1. <?php
  2. $arr = array("sila", "woda", "gaz", "telefon", "ogrzewanie", "kanalizacja");
  3.  
  4. $bit = '';
  5. foreach($arr as $k => $v) {
  6. if(in_array($v, $_GET['bit_media'])) {
  7. $bit .= '1';
  8. } else {
  9. $bit .= '0';
  10. }
  11. }
  12.  
  13. echo $bit;
  14. ?>
Kicok
  1. <?php
  2.  
  3. $bit = 0x80000;
  4.  
  5. if(isset($_GET['bit_media']))
  6. {
  7. $c = count($_GET['bit_media']);
  8. for($i=0; $i<$c; $i++)
  9. {
  10. $bit |= (0x80000 >> $_GET['bit_media'][$i]);
  11. }
  12. }
  13.  
  14. echo(decbin($bit));
  15.  
  16. ?>
  17.  
  18. <form action="" method="get" >
  19. <input type="checkbox" name="bit_media[]" value="1" /> siła
  20. <input type="checkbox" name="bit_media[]" value="2" /> woda
  21. <input type="checkbox" name="bit_media[]" value="3" /> gaz
  22. <input type="checkbox" name="bit_media[]" value="4" /> telefon
  23. <input type="checkbox" name="bit_media[]" value="5" /> ogrzewanie
  24. <input type="checkbox" name="bit_media[]" value="6" /> kanalizacja
  25. <input type="submit" value="szukaj" >
  26. </form>


Przy czym ja wysyłałbym ten formularz metodą POST;
robur
dzięki za podpowiedzi smile.gif
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.