Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] Problem z wyszukiwarką
Forum PHP.pl > Forum > Przedszkole
mtskilla
Witam mam na stronie wyszukiwarkę. Oto kod:

  1. <form acrion="szuk.php" method="post">
  2. <input type="text" name="szuk" size="27" value="<?php echo $_POST['szuk']; ?>" />
  3. <input type="submit" name="submit" value="Szukaj" />
  4. </form>


  1. <?php
  2. $x = $_POST['szuk'];
  3. ?>

i pozniej nizej wypisuje z bazy za pomocą
  1. <?php
  2. $sql="SELECT * FROM zdjecia WHERE autor LIKE '$x' ORDER BY autor";
  3. ?>


Moj problem polega na tym, ze chcialbym zrobic takie cos, ze jesli by sie wpisalo mniej niz 3 litery to by wyskakiwalo, ze za malo liter.
Wiem ze trzeba machnąć if'a przed tym $x = $_Post i jak warunek niespełniony to wywala za malo liter i dalej else jak spelniony i pobranie z bazy odpowiednich wyników. Ale jak zrobic warunek ? nie mam pojecia. Aha jeszcze jedna sprawa mi sie przypomniala. Jak mam to tak zrobione to jak wchodze na strone to pojawia mi sie cala lista wszsytkich elementow($x = 0 wiec wszystko pasuje) jak zrobic zeby nic sie nie wyswietlalo na starcie?

Wielkie dzieki za wszelaką pomoc. Pzdr smile.gif
uli
Cytat(mtskilla @ 27.03.2007, 10:57:17 ) *
Witam mam na stronie wyszukiwarkę. Oto kod:

  1. <form acrion="szuk.php" method="post">
  2. <input type="text" name="szuk" size="27" value="<?php echo $_POST['szuk']; ?>" />
  3. <input type="submit" name="submit" value="Szukaj" />
  4. </form>



Moj problem polega na tym, ze chcialbym zrobic takie cos, ze jesli by sie wpisalo mniej niz 3 litery to by wyskakiwalo, ze za malo liter.
Wiem ze trzeba machnąć if'a przed tym $x = $_Post i jak warunek niespełniony to wywala za malo liter i dalej else jak spelniony i pobranie z bazy odpowiednich wyników. Ale jak zrobic warunek ? nie mam pojecia. Aha jeszcze jedna sprawa mi sie przypomniala. Jak mam to tak zrobione to jak wchodze na strone to pojawia mi sie cala lista wszsytkich elementow($x = 0 wiec wszystko pasuje) jak zrobic zeby nic sie nie wyswietlalo na starcie?

Wielkie dzieki za wszelaką pomoc. Pzdr smile.gif


  1. <script LANGUAGE = "JavaScript">
  2. function checkForm(form)
  3. {
  4. if (form.szuk.length<3)
  5. {
  6. alert("Pole powinno zawierać minimum 3 znaki!")
  7. return false
  8. }
  9. return true
  10. }
  11.  
  12. <form action="szuk.php" method="post" onsubmit="return checkForm(this)">
  13. <input type="text" name="szuk" size="27" value="<?php echo $_POST['szuk']; ?>" >
  14. <input type="submit" name="submit" value="Szukaj" >
  15. </form>
Neeke
ohhh... albo bez js mozesz
dadac warunki w if ktora sprawdza ilosc znakow... oczywiscie w pliko wykonywalnym znaczy sie tam gdzie ... dochodzi do pobrania danych z bazy
przy takim zastosowaniu jest mozliwosc... rozszezania o wiele wiecej... ale tzreba pogłowkowac





  1. <?php
  2. $minimum='3';
  3.  
  4. $max='90';
  5.  
  6. $dlugosc=strlen($TWOJA ZMIENNA Z FORM); // sprawdzenie dlugosci wprowadzonego tekstu
  7. if (($dlugosc>=$max)or($dlugosc<$minminimum)) {
  8.  TU dajesz Komunikat o zamalej liczbie liter
  9.  
  10. } 
  11.  
  12.  else 
  13.  {
  14.  
  15. Tu dajesz wyciagniecie danych z bazy....
  16.  
  17.  
  18.  
  19. }
  20. ?>




ot włala takie trudne to nie jest:)
uli
Cytat(Neeke @ 27.03.2007, 11:04:35 ) *
ohhh... albo bez js mozesz
dadac warunki w if ktora sprawdza ilosc znakow... oczywiscie w pliko wykonywalnym znaczy sie tam gdzie ... dochodzi do pobrania danych z bazy
przy takim zastosowaniu jest mozliwosc... rozszezania o wiele wiecej... ale tzreba pogłowkowac


Oczywiście że jest taka możliwość, ale tutaj sprawdzenie masz od razu na stronie z formularzem i wydaje się być to bardziej odpowiednie do tego typu zastosowań. Poza tym Twój post niczego nie wnosi: coś tam wiem, ale nie powiem...
Neeke
Cytat(uli @ 27.03.2007, 12:08:25 ) *
Poza tym Twój post niczego nie wnosi


Sorki juz pprzeedytowalem... i juz jest podane rozwiazanie ....



A co do js... jak ktos sie niezna w tym to i tak niezrozumie.. qaa chyba wazne jest to by bylo zrozumiale... ale wybor i tak nalezy do... mtskilla
babejsza
Poza tym jeżeli JS będzie wyłączony w przeglądarce to nic nie sprawdzi. W sumie to najlepiej dla usera dać sprawdzanie i tu i tu.

@Neeke - co to za zapis??

Cytat
$minimum='3';$max='90';


liczb nie trzeba obejmować w apostrofy, a dobrym zwyczajem jest wręcz używanie takiej składni:

  1. <?php
  2. $min = (int)3;
  3. ?>


Nie jest to oczywiście wymagane, ale w ten sposób nabierasz dobrych nawyków winksmiley.jpg.
Neeke
Cytat(babejsza @ 27.03.2007, 14:46:34 ) *
@Neeke - co to za zapis??
  1. <?php
  2. $min = (int)3;
  3. ?>
No wiedze dowiedziales sie ze to są ilosci znakow tongue.gif a co do Twojej metody... to racja... jest to tez poprawny zapis... ale ja z przyzwyczajenia i z pamieci lecialem piszac tego posta... dlatego napisalem tak a nie inaczej:) pozdrawiam
mtskilla
Dzieki wielkie za pomoc. Wybralem php. ale mam takie pytanie. jak wchodze na strone to automatycznie mi liczy ile jest liter wpisanych w formularz i jest ich zero i wypisuje za malo liter. jak sie tego pozbyc? nadac wartosc poczatkową mojego x? nie wiem.
uli
Pokaż kod, który sprawdza warunek i wypisuje komunikat.

@temat: Poniżej był mój post, który usunąłem bo jakoś dziś nie mam kojarzenia. Przepraszam smile.gif
siemakuba
Wystarczy jeden moment więcej poświęcić na myślenie...

Sprawdź najpierw, czy formularz został przesłany (isset" title="Zobacz w manualu PHP" target="_manual, empty" title="Zobacz w manualu PHP" target="_manual).
Jeżeli tak, sprawdź długość liter.
Jeżeli za mała -> komunikat.
Jeżeli OK -> pobierasz dane i wyświetlać.

Tu nawet nie potrzebna jest nie wiadomo jaka wiedza z php, ale trochę logicznego myślenia ;)

pozdr.
mtskilla
Jest wyzej napisany ale ok:
  1. <?php
  2. $min = (int)3;
  3. $max = (int)90;
  4.  
  5. $dlugosc=strlen($x); // x jest "wypostowane" z inputa
  6. if (($dlugosc>=$max)or($dlugosc<$min)) {
  7.  
  8. echo "za malo literek";
  9.  
  10. } 
  11.  
  12.  else 
  13.  {
  14. }
  15. ?>


siemakuba wystarczy czytac cale tematy i troche logicznego myslenia. nie wiem czy zauwazyles ale napisalem w pierwszym poscie to samo co ty w tym swoim. tylko poprostu nie wiedzialem jak sprawdzic ilosc liter wiec zapytalem. pozdr
Neeke
Mozesz uzyć funkcji IsSet" title="Zobacz w manualu PHP" target="_manual o ktorej wyrzej masz mowe i przekierowanie do manuala....
i to chyba najlepsze rozwiazanie....
ale zawsze mozesz okazac nam wycinek formulaza.... z ktorego sa dane pobierane....
Wsumie niepowinno... Ci tak dzialać jezeli przezucasz do ineego pliku... kttory wykonyje ta operacje... chyba ze masz ten skrypt ... wpisaany w tym samym pliku wtedy .. owszem odrki ci Zadziala... ja polecam "IsSet"
  1. <?php
  2. if(IsSet('submit')) {
  3. ?>


Jak dobrze pamietam.. to wtaki sposob sie urzywalo isSeta ale sprawdz manuala:)
siemakuba
Cytat(mtskilla @ 30.03.2007, 11:51:27 ) *
ale mam takie pytanie. jak wchodze na strone to automatycznie mi liczy ile jest liter wpisanych w formularz i jest ich zero i wypisuje za malo liter. jak sie tego pozbyc? nadac wartosc poczatkową mojego x? nie wiem.


Tak. Logicznego myślenia, masz rację.
Ustosunkowałem się do tego co wyżej.

Cytat
Jak dobrze pamietam.. to wtaki sposob sie urzywalo isSeta ale sprawdz manuala:)

Tak, sprawdź manual ;)


pozdr.
Neeke
Przejdz sie mtskilla do manuala....
mtskilla
przeszedłem i zrobilem to isset'em i teraz wszystko pieknie smiga. dzieki wielkie
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.