Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] Pytanie? ->wyszukiwarka
Forum PHP.pl > Forum > Przedszkole
Neeke
Witam

Przychodze do was z pytaniem. Pisze skrypt wyszukujcy uzytkowników na stronie tzw. "Zaawansowana wyszukiwarka". teraz mam pytanie formularz juz napisalem chodzi teraz mi o plik wykonalny.

Czy jest mozliwosc napisania zapytania do bazy nie uzywajac if na kazdej z mozliwych opcji uzytych przez uzytkownika czy trzeba napisac dla kazdej z mozliwosci nowego IF-a? i dalej zapyatnie do bazy....

Niestety ja niemam zielonego pojecia ... dlatego prosze was o rozsadne odpowiedzi...

dziekuje i pozdrawiam neeke
Neeke
Dzieki za pomnoc...

powiedzcie mi jeszcze jak mozecie .. dlaczego po wpisaniu takjiego przykladu jak pokazywales nospor w wyzej wymienionych topicach teraz mi wywala blad.

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in



a zrobilem dokladnie tak jak bylo napisane w tych topicach.

  1. <?php
  2. $wh = array();
  3. //--------------- PLEC -------------------
  4.  if ((($k_plec_k=='t')and($k_plec_m=='t'))or(($k_plec_k=='')and($k_plec_m==''))) $wh[plec]="";
  5. if (($k_plec_k=='t')and($k_plec_m=='')) $wh[plec]="plec='k'";
  6. if (($k_plec_k=='')and($k_plec_m=='t')) $wh[plec]="plec='m'";
  7. //--------------- LOGIN ------------------
  8.  if ($login==$login) $wh[login]="login='$login'";
  9.  if ($login=='') $wh[login]="";
  10. //--------------- IMIE -------------------
  11.  if ($imie==$imie) $wh[imie]="imie='$imie'";
  12.  if ($imie=='') $wh[imie]=""; 
  13.  
  14. //................ itd.....
  15.  
  16.  
  17.  
  18. if (!empty($wh))  $where = 'where '.implode(' and ', $wh);
  19. else  $where = '';
  20.  
  21.  
  22.  
  23. $lp=$sOd;
  24. $result='SELECT * FROM konta'. $where;
  25. ?>


czy gdzies popelnilem jakis blad?
nospor
nie: $result='SELECT * FROM konta'. $where;
a: $result='SELECT * FROM konta '. $where;

czadowy if:
if ($login==$login)
myslisz ze $login bedzie kiedys rozne od $login? winksmiley.jpg
Neeke
Cytat(nospor @ 11.04.2007, 12:46:58 ) *
myslisz ze $login bedzie kiedys rozne od $login?
Fakt glupote walnolem.. juz poprawilem a co do etgo zapytania to tez poprawilem i dodalem ta spacje ale dalej mam ten sam blad...
nospor
  1. <?php
  2. $sql='SELECT * FROM konta '. $where;
  3. $res = mysql_query($sql) or die('zapytanie: '.$sql.' ---- blad: '.mysql_error());
  4. ?>

I pokaz co ci wyswietli

edit:
$wh[imie]="";
czemu ty wkladasz puste dane do tej tablicy. Pustych warunków masz nie wkladac exclamation.gif!
Neeke
zapytanie: SELECT * FROM konta where and imie='NEEKE' ---- blad: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and imie='NEEKE'' at line 1
I juz wykasowalem te pustte pola
maryaan
Cytat(Neeke @ 11.04.2007, 13:07:59 ) *
where and imie='NEEKE'
co to niby jest? and przy jednym warunku?
Cienki1980
Na to wychodzi, że jest jakiś element w tablicy $wh, który jest pusty .... implode przecież łączy elementy tablicy, a w tym przypadku stało się tak, że pusty element połączył za pomocą AND z "imie='NEEKE'" .. co dało właśnie taki rezultat.

Sprawdź warunki czy wszystkie są poprawne i wyświetl tablice $wh a powinieneś zobaczyć gdzie tworzy Ci się pusty element.
Neeke
mhh... Sprawdzilem... i nic blednego wobec mojego przeszukania nieznalaazlem

Zreszta pokaze caly fragment skryptu... i sami sprawdzcie ze nic tam niema
  1. <?php
  2. $wh = array();
  3.  
  4. //--------------- PLEC -------------------
  5.  
  6. if (($k_plec_k=='t')and($k_plec_m=='')) $wh['plec']="plec='k'";
  7. if (($k_plec_k=='')and($k_plec_m=='t')) $wh['plec']="plec='m'";
  8. //--------------- LOGIN ------------------
  9.  
  10.  if ($login<>'') $wh['login']="login='$login'";
  11. //--------------- IMIE -------------------
  12.  if ($imie<>'') $wh['imie']="imie='$imie'";
  13.  
  14. //--------------- WIEK -------------------
  15.  
  16.  if (($wiek_od<>'')and($wiek_do<>''))$wh['wiek']="data_urodzenia>$wiek_od AND data_urodzenia<$wiek_do";
  17.  
  18. //--------------- Województwo ------------
  19.  
  20.  if ($k_woj=='1') $wh['woj']="woj='1'";
  21.  if ($k_woj=='2') $wh['woj']="woj='2'";
  22.  if ($k_woj=='3') $wh['woj']="woj='3'";
  23.  if ($k_woj=='4') $wh['woj']="woj='4'";
  24.  if ($k_woj=='5') $wh['woj']="woj='5'";
  25.  if ($k_woj=='6') $wh['woj']="woj='6'";
  26.  if ($k_woj=='7') $wh['woj']="woj='7'";
  27.  if ($k_woj=='8') $wh['woj']="woj='8'";
  28.  if ($k_woj=='9') $wh['woj']="woj='9'";
  29.  if ($k_woj=='10') $wh['woj']="woj='10'";
  30.  if ($k_woj=='11') $wh['woj']="woj='11'";
  31.  if ($k_woj=='12') $wh['woj']="woj='12'";
  32.  if ($k_woj=='13') $wh['woj']="woj='13'";
  33.  if ($k_woj=='14') $wh['woj']="woj='14'";
  34.  if ($k_woj=='15') $wh['woj']="woj='15'";
  35.  if ($k_woj=='16') $wh['woj']="woj='16'";
  36.  if ($k_woj=='17') $wh['woj']="woj='17'";
  37. //--------------- Miasto ----------------
  38.  
  39.  if ($miejscowosc<>'')$wh['miasto']="miasto='$miejscowosc'";  
  40. //--------------- E-mail -----------------
  41.  
  42.  if ($mail<>'')$wh['email']="email='$mail'";
  43. //--------------- ID profilu -------------
  44.  
  45.  if ($id_prof<>'')$wh['id_p']="id='$id_prof'";
  46. //--------------- 
  47.  
  48. //------------------WYKONANIE ZAPYATNIA DO BAZY -------------------------------
  49. if (!empty($wh))  $where = 'where '.implode(' and ', $wh);
  50. else  $where = '';
  51. ?>

a co do wyswietlania tablic tez sprawdzilem i nie ma zadnego problemu z pustym elementem
nospor
  1. <?php
  2. if ($k_woj=='1') $wh['woj']="woj='1'";
  3.  if ($k_woj=='2') $wh['woj']="woj='2'";
  4.  if ($k_woj=='3') $wh['woj']="woj='3'";
  5.  if ($k_woj=='4') $wh['woj']="woj='4'";
  6.  if ($k_woj=='5') $wh['woj']="woj='5'";
  7.  if ($k_woj=='6') $wh['woj']="woj='6'";
  8.  if ($k_woj=='7') $wh['woj']="woj='7'";
  9.  if ($k_woj=='8') $wh['woj']="woj='8'";
  10.  if ($k_woj=='9') $wh['woj']="woj='9'";
  11.  if ($k_woj=='10') $wh['woj']="woj='10'";
  12.  if ($k_woj=='11') $wh['woj']="woj='11'";
  13.  if ($k_woj=='12') $wh['woj']="woj='12'";
  14.  if ($k_woj=='13') $wh['woj']="woj='13'";
  15.  if ($k_woj=='14') $wh['woj']="woj='14'";
  16.  if ($k_woj=='15') $wh['woj']="woj='15'";
  17.  if ($k_woj=='16') $wh['woj']="woj='16'";
  18.  if ($k_woj=='17') $wh['woj']="woj='17'";
  19. ?>

blinksmiley.gif

Nie uwazasz ze ladniej wyglada to:
  1. <?php
  2. if (!empty($k_woj)) $wh['woj']="woj='$k_woj'";
  3. ?>
?

Dobra, wyswietl jeszcze tablice $wh: print_r($wh)
i pokaz nam wynik razem z ta tablica oraz z tym co wczesniej ci pisalem
Neeke
  1. <?php
  2. (
  3. [imie] => imie='neeke'
  4. )
  5. ?>




zapytanie: SELECT * FROM konta where and imie='NEEKE' ---- blad: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and imie='NEEKE'' at line 1


na chwile obecna ten blad juz mi znikl .. i pokazyje sie wczesniejszy czyli

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
nospor
Cytat
na chwile obecna ten blad juz mi znikl .
skoro znikl to go nie ma wiec go nie pokazuj tongue.gif

Cytat
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in

o rety, pokaz jeszcze raz calosc, od poczatku az do momentu w ktorym masz mysql_fetch_array(). Twoj kod ma zawierac wszystko to co juz ci pisalem. Ulatw nam i sobie zycie
Neeke
Nospor Wybacz mi ale no ja jeszcze neiznam az tak dobrze php

  1. <?php
  2. if (!IsSet($_POST['Submit']) || $_POST['Submit'] != 'wyszukaj') {
  3.  
  4.  if ($usr_info["ban"]=='o')
  5. { 
  6. $komunikat="<FONT class=komunikat_zle>Twój dostęp do strony został ograniczony!</FONT><BR> 
  7.  <FONT class=komunikat_objasnienie> Nie możesz zmieniac swojego adresu email ponieważ administrator 
  8. ograniczył twój dostęp do serwisu. Je&para;li uważasz że zostałe&para; ukarany miesłusznie i chcesz wyj&plusmn;&para;nić
  9. t&plusmn; kwestię skontaktuj się z administratorem.</FONT>";
  10. } else {
  11.  
  12.  
  13. //.....
  14. $wh = array();
  15.  
  16. //--------------- PLEC -------------------
  17.  
  18. if (($k_plec_k=='t')and($k_plec_m=='')) $wh['plec']="plec='k'";
  19. if (($k_plec_k=='')and($k_plec_m=='t')) $wh['plec']="plec='m'";
  20. //--------------- LOGIN ------------------
  21.  
  22.  if ($login<>'') $wh['login']="login='$login'";
  23. //--------------- IMIE -------------------
  24.  if ($imie<>'') $wh['imie']="imie='$imie'";
  25.  
  26. //--------------- WIEK -------------------
  27.  
  28.  if (($wiek_od<>'')and($wiek_do<>''))$wh['wiek']="data_urodzenia>$wiek_od AND data_urodzenia<$wiek_do";
  29.  
  30. //--------------- Województwo ------------
  31.  
  32.  if ($k_woj=='1') $wh['woj']="woj='1'";
  33.  if ($k_woj=='2') $wh['woj']="woj='2'";
  34.  if ($k_woj=='3') $wh['woj']="woj='3'";
  35.  if ($k_woj=='4') $wh['woj']="woj='4'";
  36.  if ($k_woj=='5') $wh['woj']="woj='5'";
  37.  if ($k_woj=='6') $wh['woj']="woj='6'";
  38.  if ($k_woj=='7') $wh['woj']="woj='7'";
  39.  if ($k_woj=='8') $wh['woj']="woj='8'";
  40.  if ($k_woj=='9') $wh['woj']="woj='9'";
  41.  if ($k_woj=='10') $wh['woj']="woj='10'";
  42.  if ($k_woj=='11') $wh['woj']="woj='11'";
  43.  if ($k_woj=='12') $wh['woj']="woj='12'";
  44.  if ($k_woj=='13') $wh['woj']="woj='13'";
  45.  if ($k_woj=='14') $wh['woj']="woj='14'";
  46.  if ($k_woj=='15') $wh['woj']="woj='15'";
  47.  if ($k_woj=='16') $wh['woj']="woj='16'";
  48.  if ($k_woj=='17') $wh['woj']="woj='17'";
  49. //--------------- Miasto ----------------
  50.  
  51.  if ($miejscowosc<>'')$wh['miasto']="miasto='$miejscowosc'";  
  52. //--------------- E-mail -----------------
  53.  
  54.  if ($mail<>'')$wh['email']="email='$mail'";
  55. //--------------- ID profilu -------------
  56.  
  57.  if ($id_prof<>'')$wh['id_p']="id='$id_prof'";
  58. //--------------- 
  59.  
  60. //------------------WYKONANIE ZAPYATNIA DO BAZY -------------------------------
  61. if (!empty($wh))  $where = 'where '.implode(' and ', $wh);
  62. else  $where = '';
  63.  
  64.  
  65.  
  66. $lp=$sOd;
  67. //$result='SELECT * FROM konta '. $where;
  68.  
  69. $sql='SELECT * FROM konta '. $where;
  70. $res = mysql_query($sql) or die('zapytanie: '.$sql.' ---- blad: '.mysql_error());
  71.  
  72.  
  73.  
  74. // $result=mysql_query($zad);
  75.  
  76. echo'<pre>';
  77. print_r($wh);
  78. echo'</pre>';
  79. //--------------------- WYŚWIETLENIE WYNIKÓW _------------------------------------
  80.  
  81.  
  82.  
  83. //if($result<>0){
  84.  echo'
  85.  <TABLE cellspacing=0 cellpadding=5 height="24" width=100%><TR><TD bgcolor="#000000">
  86.  <B><FONT color=white>Rezultaty wyszukiwania
  87.  </FONT></B></FONT>
  88.  </TD></TR></TABLE>
  89.  
  90.  <!-- SPACJA BIALY PASEK --><TABLE bgcolor=white height=1 width=100% cellspacing=0 cellpadding=0><TR><TD></TD></TR></TABLE>
  91.  <!-- SPACJA --><TABLE height=1 width=100% cellspacing=0 cellpadding=0><TR><TD></TD></TR></TABLE>
  92.  
  93.  
  94. <TABLE cellspacing=0 cellpadding=5 width=100% bgcolor="#ffffff">
  95.  <TR>
  96. <TD>';
  97. while($row=mysql_fetch_array($sql))
  98. ?>
nospor
  1. <?php
  2. ?>
blinksmiley.gif
przeciez wynik zapytania masz w zmiennej $res a nie $sql...
Neeke
Sory Chlopaki gafe machnolem i top ostra.... Juz dziala dziekuje wam i przepraszam za ta meczarnie pozdrawiam Neeke
nospor
  1. <?php
  2. if ($k_woj=='1') $wh['woj']="woj='1'";
  3.  if ($k_woj=='2') $wh['woj']="woj='2'";
  4.  if ($k_woj=='3') $wh['woj']="woj='3'";
  5.  if ($k_woj=='4') $wh['woj']="woj='4'";
  6.  if ($k_woj=='5') $wh['woj']="woj='5'";
  7.  if ($k_woj=='6') $wh['woj']="woj='6'";
  8.  if ($k_woj=='7') $wh['woj']="woj='7'";
  9.  if ($k_woj=='8') $wh['woj']="woj='8'";
  10.  if ($k_woj=='9') $wh['woj']="woj='9'";
  11.  if ($k_woj=='10') $wh['woj']="woj='10'";
  12.  if ($k_woj=='11') $wh['woj']="woj='11'";
  13.  if ($k_woj=='12') $wh['woj']="woj='12'";
  14.  if ($k_woj=='13') $wh['woj']="woj='13'";
  15.  if ($k_woj=='14') $wh['woj']="woj='14'";
  16.  if ($k_woj=='15') $wh['woj']="woj='15'";
  17.  if ($k_woj=='16') $wh['woj']="woj='16'";
  18.  if ($k_woj=='17') $wh['woj']="woj='17'";
  19. ?>

Mowilem ci juz bys to zamienil. Takim kodem krzywdzisz samego siebie winksmiley.jpg
Neeke
Cytat(nospor @ 11.04.2007, 14:26:50 ) *
Mowilem ci juz bys to zamienil. Takim kodem krzywdzisz samego siebie winksmiley.jpg
OK juz zmienilem jeszcze raz bardzo wam dziekuje
cioop
witam,
ja mam inny problem - przy polach input, w ktore probuje wpisac przeszukiwana fraze wyskakuje mi blad:
Cytat
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'szukana fraza\'))' at line 1

moj plik przeszukiwarki wyglada tak:
  1. <?php
  2. if(empty($_POST['szukaj']))
  3. {
  4. $TRESC=szablon('szukaj.html');
  5. }
  6.  
  7. else{
  8. $warunek='';
  9.  
  10. if(!empty($_POST['id']))$warunek.=" OR id=".(int)$_POST['id'];
  11. if(!empty($_POST['rok_studiow']))$warunek.=" OR rok_studiow = ".(int)$_POST['rok_studiow'];
  12. if(!empty($_POST['skrocona_nazwa_kursu']))$warunek.=" AND (skrocona_nazwa_kursu LIKE('".$_POST['skrocona_nazwa_kursu']."'))";
  13. if(!empty($_POST['ects']))$warunek.=" OR ects = ".(int)$_POST['ects'];
  14. if(!empty($warunek))
  15. {
  16. $warunek=substr($warunek,4); //od poczatku
  17. urlencode($warunek);
  18. }
  19. Header('Location:'.$_SERVER['PHP_SELF'].'?warunek='.$warunek);
  20. exit();
  21. }
  22. ?>

a lista rekordow tak:
  1. <?php
  2. $zapytanieSQL="SELECT * FROM ksiega";
  3. if($_GET['warunek'])
  4. {
  5. $zapytanieSQL.=' where '.urldecode($_GET['warunek']);
  6. }
  7. ?>

dlaczego dziala tylko dla wartosci liczbowych i co zrobic, zeby dzialalo tez dla frazy?
z gory dziekuje za pomoc
nospor
jak widac w komunikacie doszedl ci jeszcze przed ' znak \
usun go smile.gif

  1. <?php
  2. $zapytanieSQL.=' where '.stripslashes(urldecode($_GET['warunek']));
  3. ?>
cioop
dzieki - dziala
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.