Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]SELECT php mysql checkbox - WYSZUKIWANIE
Forum PHP.pl > Forum > Przedszkole
monsarrat
Witam prosze o pomoc w skonstruowaniu kodu przeszukującego bazę pod kontem kategori praw jazdy gdy mam zanazczone wybrane checkboxy:

  1.  
  2.  
  3. <?php
  4. if(isset($_POST['wyszukiwanie_2'])) {
  5.  
  6.  
  7. $driverlicense_a = $_POST['driverlicense_a'];
  8. $driverlicense_b = $_POST['driverlicense_b'];
  9. $driverlicense_c = $_POST['driverlicense_c'];
  10. $driverlicense_d = $_POST['driverlicense_d'];
  11. $driverlicense_e = $_POST['driverlicense_e'];
  12. $driverlicense_t = $_POST['driverlicense_t'];
  13.  
  14.  
  15. $ssql = "SELECT * FROM items WHERE driverlicense_a LIKE '%$driverlicense_a%' AND driverlicense_b LIKE '%$driverlicense_b%' AND driverlicense_c LIKE '%$driverlicense_c%' AND driverlicense_d LIKE '%$driverlicense_d%' AND driverlicense_e LIKE '%$driverlicense_e%' AND driverlicense_t LIKE '%$driverlicense_t%'
  16.  
  17.  
  18. ";
  19. showresults($ssql, $rank);
  20. mysql_query($ssql) or die();
  21. }
  22. ?>
  23.  


ten kod wyciąga dane jeżeli osoba ma AB i T jednak chiałbym też odnależć osoby które mają TYLKO jedną z tych kategorii. Prosze o pomoc w skontruowaniu SELECTA...



  1. <div class="item inner_labels">
  2. <input type="hidden" name="driverlicense_a" value="non" />
  3. <input type="checkbox" id="Cb_a" name="driverlicense_a" value="A" />
  4. <label for="Cb_a">A</label>
  5.  
  6. <input type="hidden" name="driverlicense_b" value="non" />
  7. <input type="checkbox" id="Cb_b" name="driverlicense_b" value="B" />
  8. <label for="Cb_b">B</label>
  9.  
  10. <input type="hidden" name="driverlicense_c" value="non" />
  11. <input type="checkbox" id="Cb_c" name="driverlicense_c" value="C" />
  12. <label for="Cb_c">C</label>
  13.  
  14. <input type="hidden" name="driverlicense_d" value="non" />
  15. <input type="checkbox" id="Cb_d" name="driverlicense_d" value="D" />
  16. <label for="Cb_d">D</label>
  17.  
  18. <input type="hidden" name="driverlicense_e" value="non" />
  19. <input type="checkbox" id="Cb_e" name="driverlicense_e" value="E" />
  20. <label for="Cb_e">E</label>
  21.  
  22. <input type="hidden" name="driverlicense_t" value="non" />
  23. <input type="checkbox" id="Cb_t" name="driverlicense_t" value="T" />
  24. <label for="Cb_t">T</label>
  25.  
  26.  
  27. <div class="item inner_labels last" align="right">
  28. <input type="submit" name="wyszukiwanie_2" class="button" value="<?php echo $lang['SEARCH'];?>" />
  29. </div>
  30.  
  31. </div>
  32.  

kadlub
  1. <input type="checkbox" id="Cb_e" name="driverlicense_e" value="E" />


trochę nie tak
i nie wiem po co ci te ukryte pola

zmień w tych wszystkich inputach
<input type="checkbox" id="Cb_e" name="driverlicense[]" value="E" />
i dlaczego te pola ukryte mają takie samo name jak checkboxy
poczytaj sobie o implode() i może o wyszukiwaniu rekordów które należą do jakiegoś zbioru
IN ale nie wiem czy to ci się przyda najpierw zrób to co ci powiedziałem z tym formularzem
monsarrat
Gdy usunę ukryte IMPUTY i dodam [] do driverlicense krzyczy mi Notice: Undefined index: driverlicense_a

natomiast gdy gdy dodaje do bazy CHECKBOXY z jednej tabeli driverslicense to dostaje komunikat o array()...


być może źle zapisuje dane do bazy i tu jest błąd rozbijając to na poszczególne tabele
nie wiem jak rozwiazać problem z tymi CHECKBOXAMI...
kadlub
Po co ci te ukryte inputy??
daj
print_r($_POST['driverlicense']);
w tej tablicy masz wszystkie zaznaczone checkboxy
monsarrat
Ukryte imputy eliminują 'nie zaznaczone' checboxy jeżeli nie jest zaznaczony to ma wartość NON

print_r wyświetlił mi wszytskich urzytkowników z bazy co maja i nie maja prawojazdy...
kadlub
usuń te ukryte inputy. zrub z tymi checkboxami jak ci powiedziałem.
i dopiero wtedy zrób
  1. print_r($_POST['driverlicense']);

i zobaczysz że w tabeli masz tylko te chckboxy które zaznaczyłeś

zapytani zrób tak
  1. $ssql = "SELECT * FROM items WHERE driverlicense_a IN (".implode(',' , $_POST['driverlicense']).")";


zauważyłem że masz każdą kategorię w osobnej kolumnie w bazie danych jak dasz je do jednej kolumny po przecinku to zapytanie może wyglądać tak
  1. $ssql = "SELECT * FROM items WHERE driverlicense ='".implode(',' , $_POST['driverlicense'])."'";
monsarrat
po zmianie kodu na sugerowany print_r daje wynik: Array ( [0] => A )

rozumiem tylko jak dodać kategorie zczytywane z CHECKBOXÓW do jednej kolumny i zarazem wymuszać pożniej ich wyświetlanie bez ukrytego IMPUTA

dodawanie do bazy mam zrobione za pomocą inserta :

  1.  
  2.  
  3. $driverlicense_a = $_POST['driverlicense_a'];
  4. $driverlicense_b = $_POST['driverlicense_b'];
  5. $driverlicense_c = $_POST['driverlicense_c'];
  6. $driverlicense_d = $_POST['driverlicense_d'];
  7. $driverlicense_e = $_POST['driverlicense_e'];
  8. $driverlicense_t = $_POST['driverlicense_t'];
  9.  
  10.  
  11.  
  12. $sql = "
  13. INSERT INTO items
  14. (driverlicense_a, driverlicense_b, driverlicense_c, driverlicense_d, driverlicense_e, driverlicense_t)
  15. VALUES
  16. ('$driverlicense_a', '$driverlicense_b', '$driverlicense_c', '$driverlicense_d', '$driverlicense_e', '$driverlicense_t');
  17. ";
  18. echo $sql;
  19. mysql_query($sql) or die();
  20. $lastid = mysql_insert_id();


oraz

  1. <form action="<?php echo $_SERVER['PHP_SELF'];?>" enctype="multipart/form-data" method="post" class="form" >
  2.  
  3.  
  4.  
  5. <div class="row">
  6.  
  7. <div class="item inner_labels last">
  8. <span class="label"><?php echo $lang['DRIVING_LICENCE'];?></span>
  9.  
  10. <input type="hidden" name="driverlicense_a" value="non" />
  11. <input type="checkbox" id="Cb_a" name="driverlicense_a" value="A" />
  12. <label for="Cb_a">A</label>
  13.  
  14. <input type="hidden" name="driverlicense_b" value="non" />
  15. <input type="checkbox" id="Cb_b" name="driverlicense_b" value="B" />
  16. <label for="Cb_b">B</label>
  17.  
  18. <input type="hidden" name="driverlicense_c" value="non" />
  19. <input type="checkbox" id="Cb_c" name="driverlicense_c" value="C" />
  20. <label for="Cb_c">C</label>
  21.  
  22. <input type="hidden" name="driverlicense_d" value="non" />
  23. <input type="checkbox" id="Cb_d" name="driverlicense_d" value="D" />
  24. <label for="Cb_d">D</label>
  25.  
  26. <input type="hidden" name="driverlicense_e" value="non" />
  27. <input type="checkbox" id="Cb_e" name="driverlicense_e" value="E" />
  28. <label for="Cb_e">E</label>
  29.  
  30. <input type="hidden" name="driverlicense_t" value="non" />
  31. <input type="checkbox" id="Cb_t" name="driverlicense_t" value="T" />
  32. <label for="Cb_t">T</label>
  33. </div>
  34.  
  35.  
  36. </div>
  37.  
  38.  
  39.  
  40.  
  41. <input type="submit" name="submit" class="button" value="<?php echo $lang['ADD'];?>" />
  42.  
  43. </form>


kadlub
nie zastosowałeś się do moich rad tylko dalej klepiesz swoje
monsarrat
zastosowałem sie do Twoich rad, jedynie pokazałem CI inny plik (add.php) w ktorym to dodaje do bazy CHECBOXY... na samym pocztaku pokazałem plik (SEARCH.php) w ktorym chce wyszukiwać CHECBOXY, i poprawiłem go na twoje wskazówki, podałem też wynik print_r

prosze o pomoc



mam watpliwosci i nie wiem jak zmodywikowac samo dodawanie do bazy...

w bazie mam juz 100 osób...
kadlub
podobnie jak tamto wcześniej
przy dodawaniu wywałm te ukryte inputy daj
<input type="checkbox" id="Cb_a" name="driverlicense[]" value="A" />
i tak w następnych
następnie
zmień strukturę tej tabeli po co ci tyle tych kolumn na każdą kategorię osobne zrub jedno o nazwie driverlicense


  1.  
  2. $dane=implode(',' , $_POST['driverlicense']);
  3.  
  4. $sql = "
  5. INSERT INTO items (driverlicense) VALUES ( '$dane')";


a jak będziesz chciał sprawdzić czy ma te kategorie zastosuj się do drugiego zapytania jakie ci napisałem wcześniej
monsarrat
kadlub mam pytanie jak wyciągnąc teraz dane z bazy aby mi CHECBOXY zaznaczało...

napisałem tak ale to nie działa...

  1. <input type="checkbox" id="Cb_a" name="driverlicense[]" value="A" <?php if($row['driverlicense'] == 'A') echo 'checked="checked"';?> />
  2. <label for="Cb_a">A</label>
  3. <input type="checkbox" id="Cb_b" name="driverlicense[]" value="B" <?php if($row['driverlicense'] == 'B') echo 'checked="checked"';?> />
  4. <label for="Cb_b">B</label>
  5. <input type="checkbox" id="Cb_c" name="driverlicense[]" value="C" <?php if($row['driverlicense'] == 'C') echo 'checked="checked"';?> />
  6. <label for="Cb_c">C</label>
  7. <input type="checkbox" id="Cb_d" name="driverlicense[]" value="D" <?php if($row['driverlicense'] == 'D') echo 'checked="checked"';?>/>
  8. <label for="Cb_d">D</label>
  9. <input type="checkbox" id="Cb_e" name="driverlicense[]" value="E" <?php if($row['driverlicense'] == 'E') echo 'checked="checked"';?>/>
  10. <label for="Cb_e">E</label>
  11. <input type="checkbox" id="Cb_t" name="driverlicense[]" value="T" <?php if($row['driverlicense'] == 'T') echo 'checked="checked"';?>/>
  12. <label for="Cb_t">T</label>
kadlub
Ieśli zrobiłeś wszystko tak jak ci napisałem to w bazie w kolumnie driverlicense powinieneś mieć kategorię prawa jazdy danego użytkownika po przecinku np A,C,T
jak je wyciągniesz to robisz sobie explode() po przecinku i w tym momencie tworzysz ci się tablica, poprzez użycie in_array() w tym warunku sprawdzasz czy np kategorja A znajdzuje się w tablicy jak tak to checkbox zaznaczony jak nie to nie.
czyli tak

  1. $kat=explode(",",$row['driverlicense']);
  2. if(in_array("A",$kat)){
  3. zaznaczasz
  4. }
  5.  
  6.  
monsarrat
Super wyciaganie danych działą, przy czym co zrobic z IMPLODEM jeżeli żaden CHECKBOX nie jest zaznaczony...

otrzymuje w takim wypadku komunikat

35: $dane_driver =implode(',' , $_POST['driverlicense']);


Notice: Undefined index: driverlicense in edit.php on line 35
Warning: implode() [function.implode]: Invalid arguments passed in edit.php on line 35
kadlub
poczytaj o isset() czyli sprawdzaj czy formularz został wysłany albo czy dana zmienna istnieje
monsarrat
Napisałem coś takiego

  1. <?php if (!isset($_POST['driverlicense'])) { $driverlicense = "brak"; } ?>


jednak jest źle...

chiałbym aby issent sprawdzal czy nie ma a jak nie ma to zapisal do bazy że brak wtedy przy wywolaniu wyświetli Prawojazdy: brak

problem mam z napisalenim poprawnego ifa z issent i pytanie gdzie go uiescić za CHECBOXAMI czy w tablicy zmiennych....
kadlub
musisz sprawdzić ile elementów ma tablica

  1. $ile=count($_POST['driverlicense']);
  2. if($ile==0){
  3. $driverlicense = "brak";
  4. }

nie wiem czy o to ci chodzi
monsarrat
sprawdzilem i niezabardzo to działa co napisałeś

w tablicy zadeklarowałem tak:
  1. $dane_driver = (isset($_POST['driverlicense']) && is_array($_POST['driverlicense'])) ? implode(',' , $_POST['driverlicense']) : null;
  2.  



i już nie wywala mi info Warning: implode() [function.implode]: gdy nie mam żadnego CHECBOXA zaznaczonego...

teraz powracamy do wyszukiwania, skoro juz wszystko działa


  1. <div class="item inner_labels">
  2. <input type="checkbox" id="Cb_a" name="driverlicense[]" value="A" />
  3. <label for="Cb_a">A</label>
  4. <input type="checkbox" id="Cb_b" name="driverlicense[]" value="B" />
  5. <label for="Cb_b">B</label>
  6. <input type="checkbox" id="Cb_c" name="driverlicense[]" value="C" />
  7. <label for="Cb_c">C</label>
  8. <input type="checkbox" id="Cb_d" name="driverlicense[]" value="D" />
  9. <label for="Cb_d">D</label>
  10. <input type="checkbox" id="Cb_e" name="driverlicense[]" value="E" />
  11. <label for="Cb_e">E</label>
  12. <input type="checkbox" id="Cb_t" name="driverlicense[]" value="T" />
  13. <label for="Cb_t">T</label>
  14.  
  15. <div class="item inner_labels last" align="right">
  16. <input type="submit" name="wyszukiwanie_2" class="button" value="<?php echo $lang['SEARCH'];?>" />
  17. </div>
  18.  
  19. </div>


  1. if(isset($_POST['wyszukiwanie_2'])) {
  2.  
  3. $driverlicense = $_POST['driverlicense'];
  4.  
  5. $ssql = "SELECT * FROM items WHERE driverlicense ='".implode(',' , $_POST['driverlicense'])."'";
  6.  
  7.  
  8.  
  9. showresults($ssql, $rank);
  10. mysql_query($ssql) or die();
  11.  
  12. print_r($_POST['driverlicense']);
  13. }
nospor
Zapisujac w polu dane po przecinku, nie da sie w zaden sensowny sposób tego przeszukiwać.
Załóżmy, że w polu masz: A,B,C

No to teraz szukac kolesia co ma A i C. I co? I zonk. Twoje zapytanie nic nie zwórci bo masz w nim:
...driverlicense ='A,C' a przeciez takiego pola nie ma. Jest pole z zawartoscia A,B,C.

Tutaj bardzo fajnie sprawdzają się wartości bitowe.
http://nospor.pl/opcje-dwuwartosciowe-przechowywanie.html
W paczce do ściągnięcia znajduje się w pełni działający skrypt, który zapisuje dane oraz wyszukuje dane.
monsarrat
dziekuje za odpowiedz NASPOR

Witam zastosowałem Twój skrypcik do CHECKBOXÓW i mam problem z ich wyświetleniem, nie tak w tabeli jak to tam miałeś ale normalne wylistowanie, tak jak to było w moim przypadku praw jazdy A,B, C

  1. $opcje_driverlicense = (int)$row['opcje_driverlicense'];
  2.  
  3. echo '<input type="checkbox" name="opcja[]" value="1" '.($opcje_driverlicense & 1 ? 'checked="checked"' : '').'/> <label >A</label>';
  4. echo '<input type="checkbox" name="opcja[]" value="2" '.($opcje_driverlicense & 2 ? 'checked="checked"' : '').'/> <label >B</label>';
  5. echo '<input type="checkbox" name="opcja[]" value="4" '.($opcje_driverlicense & 4 ? 'checked="checked"' : '').'/> <label >C</label>';
  6. echo '<input type="checkbox" name="opcja[]" value="8" '.($opcje_driverlicense & 8 ? 'checked="checked"' : '').'/> <label >D</label>';
  7. echo '<input type="checkbox" name="opcja[]" value="16" '.($opcje_driverlicense & 16 ? 'checked="checked"' : '').'/> <label >E</label>';
  8. echo '<input type="checkbox" name="opcja[]" value="32" '.($opcje_driverlicense & 32 ? 'checked="checked"' : '').'/> <label >T</label>';
  9.  
  10. echo '<br />';
  11. echo '<br />';
  12.  
  13.  
  14. echo $row['opcje_driverlicense'];
  15.  
  16.  
  17.  
  18.  


powyżej pięknie mi zaznacza jak i zwraca wartość jednak potrzebuje wylistowania tych praw jazdy ...


nospor
Nie wiem, czy zrozumiałem, więc strzelam:
  1. $tOpcje = array(1=>'A',2=>'B',4=>'C',8=>'D',16=>'E',32=>'T');
  2.  
  3. //i tutaj już sobie wyświetlamy znalezione wyniki
  4. while ($row = mysql_fetch_array($res)){
  5. $rOpcje = (int)($row['OPCJE']); //pobieramy opcje z bazy
  6. foreach ($tOpcje as $v=>$n){
  7. if ($rOpcje & $v) echo $n.','
  8. }
  9. echo '<br />';
  10. }
monsarrat
a jak uwzgędnić w tym jeszcze ID bo w tym momecje ta sama wartośc przypisuje mi do wszytskich ID (osób w bazie)...

prubowałem dać wher id przy pierwszym selecie ale nic to nie dało ...
nospor
Nie rozumiem pytania.
Przecież widziałes, ze u mnie w paczce wszystko jest robione dla różnych ID.
monsarrat
wszytko się zgadza to co mówisz jednak moja tabela jest generowana w inny sposób z powiązaniu z innymi danymi...





rozwiązaniem było $sql3 = "SELECT * FROM items WHERE id='".$row['id']."'";

teraz zabieram się za wyszukiwanie...










witam ponownie i proszę o pomoc....

nie udało mi się rozwiązać problemu z wyszukiwaniem nie i nie wiem w którym miejscu źle coś zrobiłem...


  1. <?php
  2.  
  3. $opcje_driverlicense = 0;
  4.  
  5. if (!empty($_GET['opcja'])){
  6. foreach ($_GET['opcja'] as $op){
  7. $op = (int)$op;
  8. $opcje_driverlicense |= $op;
  9. }
  10. }
  11.  
  12. //formularz wyszukiwania
  13. echo '<form method="get" class="form">';
  14. echo '<fieldset>';
  15. echo '<input type="checkbox" name="opcja[]" value="1" '.($opcje_driverlicense & 1 ? 'checked="checked"' : '').'/> <label >A</label>';
  16. echo '<input type="checkbox" name="opcja[]" value="2" '.($opcje_driverlicense & 2 ? 'checked="checked"' : '').'/> <label >B</label>';
  17. echo '<input type="checkbox" name="opcja[]" value="4" '.($opcje_driverlicense & 4 ? 'checked="checked"' : '').'/> <label >C</label>';
  18. echo '<input type="checkbox" name="opcja[]" value="8" '.($opcje_driverlicense & 8 ? 'checked="checked"' : '').'/> <label >D</label>';
  19. echo '<input type="checkbox" name="opcja[]" value="16" '.($opcje_driverlicense & 16 ? 'checked="checked"' : '').'/> <label >E</label>';
  20. echo '<input type="checkbox" name="opcja[]" value="32" '.($opcje_driverlicense & 32 ? 'checked="checked"' : '').'/> <label >T</label>';
  21. echo '<br /><input type="submit" value="Szukaj"/>';
  22. echo '</fieldset>';
  23. echo '</form>';
  24.  
  25. $sql = "SELECT * FROM items WHERE id='".$row['id']."'";
  26.  
  27. if (!empty($opcje_driverlicense))
  28. $sql.=" where opcje_driverlicense & $opcje_driverlicense = $opcje_driverlicense";
  29.  
  30. showresults($sql, $rank); // to jest moja tabela
  31. mysql_query($sql) or die();
  32. ?>
  33.  
nospor
skoro już raz dałes WHERE w $sql to za drugim razem ma byc AND a nie where
monsarrat
przedstawię sytuacje:

mam zrobione edytowanie i zapisywanie oraz wyświetlanie wyników:

PLIK edit.php

  1.  
  2. // Start DRIVERLICENSE
  3.  
  4. if (empty($_POST)){
  5. $sql2 = 'select * from items where id='.$id;
  6. $res = mysql_query($sql2) or die(mysql_error());
  7. $row = mysql_fetch_array($res);
  8. if (empty($row))
  9. die('Nie ma takiej pozycji!');
  10. $opcje_driverlicense = (int)$row['OPCJE_DRIVERLICENSE'];
  11. } else {
  12. $opcje_driverlicense = 0;
  13. if (!empty($_POST['opcja'])){
  14. foreach ($_POST['opcja'] as $op){
  15. $op = (int)$op;
  16.  
  17. $opcje_driverlicense |= $op;
  18. }
  19. }
  20. //i zapisujemy te dane do bazy
  21. $sql2 = 'UPDATE items SET OPCJE_DRIVERLICENSE='.$opcje_driverlicense.' where id='.$id;
  22. mysql_query($sql2) or die(mysql_error());
  23. echo '<p>Dane zapisano driverlicense</p>';
  24. }
  25.  
  26. // END
  27.  
  28. // imputy
  29.  
  30. <?php
  31. $opcje_driverlicense = (int)$row['opcje_driverlicense'];
  32.  
  33. echo '<input type="checkbox" name="opcja[]" value="1" '.($opcje_driverlicense & 1 ? 'checked="checked"' : '').'/> <label >A</label>';
  34. echo '<input type="checkbox" name="opcja[]" value="2" '.($opcje_driverlicense & 2 ? 'checked="checked"' : '').'/> <label >B</label>';
  35. echo '<input type="checkbox" name="opcja[]" value="4" '.($opcje_driverlicense & 4 ? 'checked="checked"' : '').'/> <label >C</label>';
  36. echo '<input type="checkbox" name="opcja[]" value="8" '.($opcje_driverlicense & 8 ? 'checked="checked"' : '').'/> <label >D</label>';
  37. echo '<input type="checkbox" name="opcja[]" value="16" '.($opcje_driverlicense & 16 ? 'checked="checked"' : '').'/> <label >E</label>';
  38. echo '<input type="checkbox" name="opcja[]" value="32" '.($opcje_driverlicense & 32 ? 'checked="checked"' : '').'/> <label >T</label>';
  39.  
  40. ?>
  41.  




plik wyświetlający tabele to funktion.php

  1.  
  2. <tr>
  3. <?php
  4.  
  5. $sql3 = "SELECT * FROM items WHERE id='".$row['id']."'";
  6.  
  7. if (!empty($opcje_driverlicense))
  8. $sql3.=" where opcje_driverlicense & $opcje_driverlicense = $opcje_driverlicense";
  9. $res2 = mysql_query($sql3) or die(mysql_error());
  10. $tOpcje = array(1=>'A',2=>'B',4=>'C',8=>'D',16=>'E',32=>'T');
  11. //i tutaj już sobie wyświetlamy znalezione wyniki
  12. while ($row2 = mysql_fetch_array($res2)){
  13. $rOpcje = (int)($row2['opcje_driverlicense']); //pobieramy opcje z bazy
  14. foreach ($tOpcje as $v=>$n){
  15. if ($rOpcje & $v) echo $n.',';
  16. }
  17.  
  18. }
  19.  
  20. ?>
  21. </tr>


NATOMIAST NIE WIEM JAK napisać szukanie do tych checboxów... według patentu nospor`a

szukając imienia w pliku szukaj.php mam tak

  1. <?php
  2. if(isset($_POST['wyszukiwanie'])) {
  3.  
  4. $name = $_POST['name'];
  5.  
  6. $ssql = "SELECT * FROM items WHERE name LIKE '%$name%' ";
  7. showresults($ssql, $rank);
  8. mysql_query($ssql) or die();
  9. }
  10. ?>
  11.  




d3ut3r
Z góry przepraszam jeżeli nie na temat nie jestem pewien czy rozumiem pytanie smile.gif

masz w bazie tabele

nazwijmy ją osoba

masz tam pole prawo_jazdy

teraz korzystając z tego co nospor Ci zlinkował ustawiasz dla franka prawo_jazdy na 5 czyli ma on opcje 1 i opcje 3

i teraz chcąc wyszukać wszystkich userów którzy mają prawo jazdy "Opcja 1" (czyli liczba 1 - zgodnie z tym co napisano o opcja dwuwartościowych)
robimy coś takiego:

  1. SELECT * FROM osoba WHERE prawo_jazdy & 1


edit:

Jakby nie patrzeć, na końcu artykułu nospor napisał ładny kod do wyszukiwania w bazie wszystko podane jak na tacy smile.gif
monsarrat
naprawiłem i wyszukiwanie mi działa smile.gif jest super exclamation.gif

tylko jest małe ale... w tabeli przed zaznaczeniem chceckboxów wyświetla wszystkich użytkowników... kod poniżej

jak to naprawić...

  1. <?php
  2.  
  3. $opcje_driverlicense = 0;
  4. if (!empty($_GET['opcja'])){
  5. foreach ($_GET['opcja'] as $op){
  6. $op = (int)$op;
  7.  
  8. $opcje_driverlicense |= $op;
  9. }
  10. }
  11.  
  12. //formularz wyszukiwania
  13. echo '<form method="get" class="form">';
  14. echo '<fieldset>';
  15. echo '<div class="row"><div class="item inner_labels last">';
  16. echo '<input type="checkbox" name="opcja[]" value="1" '.($opcje_driverlicense & 1 ? 'checked="checked"' : '').'/> <label >A</label>';
  17. echo '<input type="checkbox" name="opcja[]" value="2" '.($opcje_driverlicense & 2 ? 'checked="checked"' : '').'/> <label >B</label>';
  18. echo '<input type="checkbox" name="opcja[]" value="4" '.($opcje_driverlicense & 4 ? 'checked="checked"' : '').'/> <label >C</label>';
  19. echo '<input type="checkbox" name="opcja[]" value="8" '.($opcje_driverlicense & 8 ? 'checked="checked"' : '').'/> <label >D</label>';
  20. echo '<input type="checkbox" name="opcja[]" value="16" '.($opcje_driverlicense & 16 ? 'checked="checked"' : '').'/> <label >E</label>';
  21. echo '<input type="checkbox" name="opcja[]" value="32" '.($opcje_driverlicense & 32 ? 'checked="checked"' : '').'/> <label >T</label>';
  22. echo '<br /><input type="submit" value="Szukaj"/>';
  23. echo '</div></div>';
  24. echo '</fieldset>';
  25. echo '</form>';
  26.  
  27. $sql5 = 'select * from items';
  28. if (!empty($opcje_driverlicense))
  29. $sql5.=" where OPCJE_DRIVERLICENSE & $opcje_driverlicense = $opcje_driverlicense";
  30.  
  31. showresults($sql5, $rank);
  32. mysql_query($sql5) or die();
  33.  
  34. ?>



nospor
No tak działają wyszukiwarki - jak nic nie zaznaczysz, to wyswietla wszystko.
Jak nie chcesz nic wyswietlac, gdy nic nie zaznaczysz, to zrob warunek: nic nie zaznaczono, nic nie wyswietlam
monsarrat
nospor a mógłbyś mi pomoc w napisaniu takiego warunku, w twoim kodzie który mi poleciłeś nie ma takiej opcji... smile.gif
nospor
Cytat
w twoim kodzie który mi poleciłeś nie ma takiej opcji...
No toż to zwykly IF...

  1. if (!empty($opcje_driverlicense)){
  2.  
  3. $sql5 = 'select * from items';
  4. if (!empty($opcje_driverlicense))
  5. $sql5.=" where OPCJE_DRIVERLICENSE & $opcje_driverlicense = $opcje_driverlicense";
  6.  
  7. showresults($sql5, $rank);
  8. mysql_query($sql5) or die();
  9. } else {
  10. echo 'Nic nie wybrales wiec nie szukam. '
  11. }
monsarrat
Dziękuje za pomoc wszystkim wypowiadającym się w szczególności NOSPOR`owi - problem z wyszukiwaniem rozwiązany.

Zamykam temat.
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.