Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][MySQL] big problem z wyszukiwaniem
Forum PHP.pl > Forum > PHP
MaximusDM
Witam mam system wyszukiwania w php, nie umiem rozwiązać problemu, zmieniłem typ inputu z radio na chexboxa w formularzu wyszukiwania gdzie jest zmienna plec [<td>Mężczyzna: <input type="checkbox" value="m" checked name="plec"> Kobieta: <input type="checkbox" name="plec" value="k"></td>]aby móc wyszukiwać wszystkich naraz po zaznaczeniu. I teraz jest problem, gdy zaznaczam aby wyszukiwał kobiety i mezczyzn - razem, to wyszukuje tylko kobiety. Jak zrobić aby wyszukiwał zarówno kobiety i mężczyzn? Jak się zaznaczy tylko kobiete, albo tylko meżczyznę to wyszukuje ok.
  1. <?php
  2. if($_GET['s'] != 1) {
  3.  
  4. echo '<form method=post action="index.php?p=users/search.c&s=1" enctype="multipart/form-data">
  5. <TABLE ALIGN="center">
  6.  <tr>
  7.  <td colspan=2><H3>Określ osobę którą chcesz wyszukać</H3><TD></TD></td>
  8.  </tr>
  9.  <tr>
  10.  <td>Imię</td>
  11.  <td><input type=text name=p_imie></td>
  12.  </tr>
  13.  <tr>
  14.  <td>Nazwisko</td>
  15.  <td><input type=text name=p_nazwisko></td>
  16.  </tr>
  17.  <tr>
  18.  <td>Płeć</td>
  19.  <td>Mężczyzna: <input type="checkbox" value="m" checked name="plec"> Kobieta: <input type="checkbox" name="plec" value="k"></td>
  20. </tr>
  21. <tr>
  22.  <td align=center colspan=2><br><br>
  23.  <input type=submit value="Szukaj"></td></tr>
  24. </TABLE>
  25. </form>';
  26.  
  27. }
  28. else {
  29.  
  30.  if(empty($_GET['nr'])) {
  31.  $now = 0;
  32.  $search = "";
  33.  foreach ($_POST as $key => $val) {
  34.  if(!empty($_POST[$key]) && ($key != 'PHPSESSID')) {
  35.  if($now > 0) $search .= "&&";
  36.  $search .= " ($key LIKE '%$val%') ";
  37.  $now++;
  38. }
  39. }
  40.  
  41.  $sql33 = mysql_query("SELECT * FROM `users` WHERE $search ORDER BY 'login' ASC");
  42.  echo "<table border=1 cellspacing=1 cellpadding=0>n
  43.  <tr><td><b>Nr</b></td><td><b>Imie</b></td><td><b>Nazwisko</b></td><td>Informacje</td></tr>";
  44.  while($data = mysql_fetch_array($sql33)) {
  45.  echo "<tr><td>$data[nr]</td><td>$data[p_imie]</td><td>$data[p_nazwisko]</td><td><a href="index.php?p=users/search.c&s=1&nr=$data[nr]">Dane</a></td></tr>";
  46. }
  47.  echo "</table>";
  48.  echo $search;
  49. }
  50.  
  51.  if(!empty($_GET[nr])) {
  52.  $sql33 = mysql_query("SELECT * FROM `users` WHERE nr='$_GET[nr]'");
  53.  while($data = mysql_fetch_array($sql33)) {
  54.  echo "<table border=1 cellspacing=1 cellpadding=0>n";
  55.  foreach($data as $key => $val) {
  56.  
  57. if(($key == 'p_imie') && !is_int($key)) { echo "<tr><td><b>imie</b></td><td>$val </td></tr>"; }
  58. elseif(($key == 'p_nazwisko') && !is_int($key)) { echo "<tr><td><b>nazwisko</b></td><td>$val </td></tr>"; }
  59. elseif(($key == 'login') && !is_int($key)) { echo "<tr><td><b>login</b></td><td>$val </td></tr>"; }
  60. elseif(($key == 'haslo') && !is_int($key)) { echo "<tr><td><b>hasło</b></td><td>$val </td></tr>"; }
  61. elseif(($key == 'plec') && !is_int($key)) { echo "<tr><td><b>płeć</b></td><td>$val </td></tr>"; }
  62. elseif(!is_int($key)) echo "<tr><td><b>$key</b></td><td>$val </td></tr>n";
  63. }
  64. }
  65. }
  66.  
  67. }
  68.  
  69. ?>


myslałem aby dopisać
  1. <?php
  2. $search .= "&& (plec = 'm' and 'k')";
  3. ?>
gdzieś w okolicy search ale nie wiem w którym miejscu. Prosze o pomoc!
user2
Dobrze myslisz ale to chyba powinno byc
  1. <?php
  2. $search .= "&& (plec = 'm' OR plec = 'k')";
  3. ?>

Nie wiem czy dobrze, ale chyba lepiej smile.gif
satsun
Zalezy do czego AND ale raczej OR odpada jak już coś to w przypadku gdzie zaznaczone jest kobieta i meżczyzna powinno być to co podał czyli
  1. <?php
  2. $search .= "&& (plec = 'm' and plec = 'k')";
  3. ?>

A jak każde osobno to plec = 'm' albo plec = 'k'
user2
AND na 100% nie, bo jest to bez sensu. Warunki sie nawzajem wykluczaja tzn. jesli zapytanie ma zwrocic osoby, ktore maja w polu plec ustawione 'k' (plec='k') i jednoczesnie plec ma byc m (plec='k' AND plec='m').
MaximusDM
jeśli nie rozwiazywac tego problemu za pomoca ANDa to w jaki inny sposób go rozwiązać?

Czy naprawde nie ma tu osoby, która potrafiłaby rozwiazać ten problem ? smile.gif
nospor
jesli ktos ci zaznaczy i to i to, to wowczas wogole tego warunku nie uwzględniaj w zapytaniu. No bo przeciez obojniakow w bazie nie masz , prawda? smile.gif

Mozesz tez dac selecta o wartosciach: M, K, Bezroznicy
i jak ci ktos zaznaczy BEZROZNICY to tez nie dajesz tego do warunku. Jak ci wygodniej
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.