phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

FAQFAQ - PIERWSZA POMOC!!  regulaminREGULAMIN  SzukajSZUKAJ  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload  katalog Forów DyskusyjnychKatalog Forów   FAQ Video tutoriale

Poprzedni temat «» Następny temat
Warunek na minimalną długość tekstu
Autor Wiadomość
tymek


Pomógł: 1 raz
Posty: 433
Wysłany: 04-05-2009, 20:36   Warunek na minimalną długość tekstu

Witam!

Mam małe pytanko, jak w tej wyszukiwarce (i gdzie) wstawic warunek, zeby wyszukiwana fraza musiała się składać co najmniej z 3 znaków??

Kod:
<form action="search.php" method="post">
Wpisz wyszukiwany produkt: <input type="text" name="phrase" />
<input type="submit" value="Szukaj!" />
</form>

<?php
// program wyszukiwarki - search.php
// wyświetlenie nagłówka
echo'<h2>Wyniki wyszukiwania</h2>';
// usunięcie niepotrzebnych białych znaków
$_POST['phrase']=trim($_POST['phrase']);
// sprawdzenie, czy użytkownik wpisał dane
if(empty($_POST['phrase']))
// jeśli nie, to wyświetl komunikat i zakończ działanie skryptu
die('Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!');
// jeśli jednak dane są wpisane poprawnie
else
{
// połączenie z bazą danych, NIE ZAPOMINJ USTAWIĆ WŁASNYCH DANYCH!
$base=mysqli_connect('localhost','tymek','123','forum');
// skonstruowanie zapytania
// zwróć uwagę na operator Like - to on jest sercem całej aplikacji. Pozwala wyszukać dany ciąg w bazie danych
// jak zapewne zauważyłeś, przed frazą i po niej umieszczam znaki procenta %
// ten znak symbolizuje dowolny inny ciąg znaków, więc jest niezbędny do skutecznego wyszukiwania
// połaczenie operatorem Or pozwala na wyszukiwanie danego ciągu zarówno w nazwie, jak i opisie produktu
// UWAGA! Tutaj też nie zapomnij ustawić swoich danych!
$query="Select postac_name, serial From phpbb_postacie Where postac_name Like '%{$_POST['phrase']}%' Or serial Like '%{$_POST['phrase']}%'";
// wysłanie zapytania do bazy danych
$result=mysqli_query($base,$query);
// ustalenie ilości wyszukanych obiektów
$obAmount=mysqli_num_rows($result);
// wyswietlenie ilości wyszukanych obiektów
echo'Znaleziono: '.$obAmount.'<br /><br />';
// wyświetlenie wyników w pętli
for($x=0;$x<$obAmount;$x++)
{
// przekształcenie danych na tablicę
$row=mysqli_fetch_assoc($result);
// wyświetlenie numeru identyfikacyjnego
echo $x+1;
echo '. ';
// wyświetlenie nazwy produktu


echo '<b><font color="red">'. $row['postac_name'] .'</b></font>'.'&nbsp;'. $row['serial'];
echo'<br />';



}
}
// zamknięcie połączenia
mysqli_close($base);
// koniec aplikacji
?>
_________________
Szukam programisty PHP, który wykona parę zleceń - modyfikacje na forum. Proszę o kontakt na PW.
 
     
Gadatliwa Kasia 

   
Radek



Pomógł: 955 razy
Posty: 4614
Wysłany: 04-05-2009, 21:03   

zamiast
Kod:
if(empty($_POST['phrase']))
daj:
Kod:
if(empty($_POST['phrase']) || strlen($_POST['pharse']) < 3)
 
     
webmaestro

Pomógł: 23 razy
Posty: 299
Wysłany: 04-05-2009, 21:08   

Kod:
<form action="search.php" method="post">
Wpisz wyszukiwany produkt: <input type="text" name="phrase" />
<input type="submit" value="Szukaj!" />
</form>

<?php
echo'<h2>Wyniki wyszukiwania</h2>';
$kod = mysql_real_escape_string(htmlspecialchars($_POST['phrase']));

if(empty($_POST['phrase']))
die('Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!');
else
{
if (strlen($kod) < 3)
{
echo "ciąg znaków musi mieć minimum 6 znaków";
}
else
{
$base=mysqli_connect('localhost','tymek','123','forum');
$query="Select postac_name, serial From phpbb_postacie Where postac_name Like '%{$_POST['phrase']}%' Or serial Like '%{$_POST['phrase']}%'";

$result=mysqli_query($base,$query);

$obAmount=mysqli_num_rows($result);

echo'Znaleziono: '.$obAmount.'<br /><br />';

for($x=0;$x<$obAmount;$x++)
{

$row=mysqli_fetch_assoc($result);

echo $x+1;
echo '. ';



echo '<b><font color="red">'. $row['postac_name'] .'</b></font>'.'&nbsp;'. $row['serial'];
echo'<br />';



}
}
}

mysqli_close($base);

?>
 
     
tymek


Pomógł: 1 raz
Posty: 433
Wysłany: 04-05-2009, 21:10   

zamieniłem linijkę, ale teraz obojętnie co wpiszę, czy wyraz mniejszy niz 3 znaki, czy większy, to po naciśnięciu szukaj, nic się nei wyświetla ;> (żadnych wyników)


///edit:
Odnośnie kodu podanego przez webmaestro, jest to samo o czym pisałem wyzej, ale dodatkowo strona wygląda tak (ma błędy):

_________________
Szukam programisty PHP, który wykona parę zleceń - modyfikacje na forum. Proszę o kontakt na PW.
 
     
Seba123


Pomógł: 74 razy
Posty: 868
Wysłany: 04-05-2009, 23:06   

RuseK napisał/a:
zamiast
Kod:
if(empty($_POST['phrase']))
daj:
Kod:
if(empty($_POST['phrase']) || strlen($_POST['pharse']) < 3)
W sumie to można dać samo strlen ;)
_________________
Fejs
 
     
Radek



Pomógł: 955 razy
Posty: 4614
Wysłany: 04-05-2009, 23:10   

Seba123, nie można, bo strlen zwraca 0 tylko jeżeli string jest pusty. Jak ktoś da dwa znaki, strlen zwróci 2, warunek przejdzie, a chodzi o to, żeby przeszedł tylko wtedy, gdy tekst ma więcej niż 3 znaki.
 
     
tymek


Pomógł: 1 raz
Posty: 433
Wysłany: 05-05-2009, 22:07   

Ktoś zna powod, dla ktorego po zmianie tej linijki w ogole nie wyswietla mi wyników;> :D
_________________
Szukam programisty PHP, który wykona parę zleceń - modyfikacje na forum. Proszę o kontakt na PW.
 
     
warna



Pomógł: 475 razy
Posty: 2335
Wysłany: 05-05-2009, 22:28   

Ja bym zrobił tak:
Kod:
<input type="submit" name="submit" value="Szukaj!" />

oraz
Kod:
if( !isset($_POST['submit']) && strlen($_POST['phrase']) < 3 )
 
     
tymek


Pomógł: 1 raz
Posty: 433
Wysłany: 07-05-2009, 19:11   

Już wiem na czym polegał błąd :D

RuseK napisał/a:
zamiast
Kod:
if(empty($_POST['phrase']))
daj:
Kod:
if(empty($_POST['phrase']) || strlen($_POST['pharse']) < 3)


phrase i pharse :P P

Odnosnie tego, co podałwarna, to jaka jest różnica między tym, a tym co podał Rusek?
_________________
Szukam programisty PHP, który wykona parę zleceń - modyfikacje na forum. Proszę o kontakt na PW.
 
     
warna



Pomógł: 475 razy
Posty: 2335
Wysłany: 07-05-2009, 20:20   

Ja sprawdzam, czy został wysłany formularz oraz czy długość pola ma minimum 3 litery.
 
     
Radek



Pomógł: 955 razy
Posty: 4614
Wysłany: 08-05-2009, 14:53   

tymek napisał/a:
phrase i pharse :P P

a widzisz, literówka.

Cytat:
Odnosnie tego, co podałwarna, to jaka jest różnica między tym, a tym co podał Rusek?

Praktycznie żadna, mój sprawdza czy istnieje wartość z kluczem 'phrase' w tablicy $_POST. Jeżeli formularz nie jest wysłany, to wartość nie istnieje.

Warna sprawdza po prostu inny element tablicy $_POST, na jedno wychodzi :D

BTW
warna napisał/a:
if( !isset($_POST['submit']) && strlen($_POST['phrase']) < 3 )

Pewny jestes ze !isset() a nie isset() ? :>
 
     
warna



Pomógł: 475 razy
Posty: 2335
Wysłany: 08-05-2009, 15:09   

RuseK napisał/a:
mój sprawdza czy istnieje wartość z kluczem 'phrase' w tablicy $_POST

Misiu, Twój sposób sprawdza, czy zmienna jest pusta, a nie czy istnieje :P

RuseK napisał/a:
Pewny jestes ze !isset() a nie isset() ?

Si. Jeśli nie jest ustawiona zmienna, to wyświetl komunikat o błędzie. Pisałem pod ten kod, co podał tymek. Osobiście zrobiłbym wyświetlanie komunikatów o błędzie w 'else', gdy warunek się nie spełni.
 
     
Radek



Pomógł: 955 razy
Posty: 4614
Wysłany: 08-05-2009, 16:02   

warna napisał/a:
Misiu, Twój sposób sprawdza, czy zmienna jest pusta, a nie czy istnieje :P

To nie zmienna Misiu :)
Faktycznie, myślałem że też dałem isset.

Cytat:
Si. Jeśli nie jest ustawiona zmienna, to wyświetl komunikat o błędzie. Pisałem pod ten kod, co podał tymek. Osobiście zrobiłbym wyświetlanie komunikatów o błędzie w 'else', gdy warunek się nie spełni.

Kod:
if( !isset($_POST['submit']) && strlen($_POST['phrase']) < 3 )

Jezeli nie istnieje submit i phrase jest krotsze niz 3 znaki.
Jezeli nie wysle formularza to submit nie istnieje, a ze pharse nie istnieje to oba warunki sie spelnia. W zwiazku z tym PRZED wyslaniem formularza mamy komunikat 'Niepoprawnie wypelniony [..]'.
 
     
Gadatliwa Kasia 

   
warna



Pomógł: 475 razy
Posty: 2335
Wysłany: 08-05-2009, 16:07   

Komunikat wywalało mi też na tym początkowym kodzie. Myślałem, że tak ma być.
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Kopiowanie wszelkich treści zawartych na forum, modyfikacji oraz instrukcji bez zgody administracji i autorów tematów/postów zabronione!

Powered by phpBB modified by Przemo © 2003 phpBB
Strona wygenerowana w 0,11 sekundy. Zapytań do SQL: 11
Polecane serwisy

Najlepsze oprogramowanie do prowadzenia sklepu internetowegoNajlepszy program do sklepu firmowany przez Przem'a

Sklep z gadżetami

serwis laptopów

phpbb

Design Cart - Tworzenie sklepu internetowego

iRonin.IT

• Zamów reklamę