Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP]Wyszukiwarka PHP
Forum PHP.pl > Forum > Przedszkole
axamitnyx
Witam serdecznie

Jestem nowym użytkownikiem tego forum jak i laikiem w PHP. Pilnie szukam rozwiązania mojego problemu.

Sprawa wygląda następująco:

Tworzę wyszukiwarkę na www za pomocą PHP i tabeli w bazie danych na localhost, wszystko działa poprawnie i nawet udało mi się wywołać komunikat, kiedy wyszukiwarka nie znajdzie wyników dla podanej wartości z bazy, ale jest problem...

Kiedy wyszukiwarka jest pusta czyli nikt nie wpisał żadnej frazy i kliknie na "szukaj" to wyświetla wszystkie wartości z bazy danych... tj.

site_title
site_link
site_desc

Jaka jest moja perspektywa? Bardzo chciałbym aby po tym gdy użytkownik kliknie w niewypełnione pole wyskoczył komunikat " wypełnij pole" i tutaj kolejna uwaga..
użyłem już np tego kodu poniżej i również nie pomogło... tzn pomogło ale nie do końca, bo wyświetla komunikat żeby wypełnić pole, ale pod komunikatem dalej wyświetlają się wartości.


CODE
if(empty($_POST['wartosc'])){
echo "Wypełnij puste pole";
}



Kod wygląda następująco :

CODE
<form action="index.php" method="get">
<input type="text" name="value" placeholder="Wyszukaj">
<input type="submit" name="szukaj" value="szukaj" id="name">
</form>

<hr>
<?php

mysql_connect("localhost","root","");
mysql_select_db("ana");

if(isset($_GET['szukaj'])){
$search_value = $_GET['value'];
$query = "select * from search where site_keywords like '%$search_value%' " ;
$run = mysql_query($query);
$find = mysql_num_rows($run);


if ($find==0){
echo "<p class='warning-empty'>brak wyników dla podanej frazy : <b>$search_value</b></p>";
}

while ($row=mysql_fetch_array($run)) {

$title = $row['site_title'];
$link = $row['site_link'];
$desc = $row['site_desc'];

echo "<h1>$title</h1>$desc<a href='$link'>$link</a>";


}

}
?>


P.S Bardzo przepraszam Was jeśli temat jest w nieodpowiednim miejscu albo jest troszkę na-gmatwane, ale starałem się smile.gif Jeśli będzie trzeba więcej informacji do jakiejkolwiek analizy to takowych dostarczę.

Dziękuję serdecznie, Szymon

tomek200
  1. $value = $_POST['value'];
  2.  
  3. if($value !=''){
  4. // Dopiero wykonaj kod wyszukiwarki
  5. }else{
  6. echo 'Wypełnij wszystkie pola';
  7. }
axamitnyx
Witaj

Dziękuje za odpowiedź..

Proszę powiedz jeszcze gdzie wstawić ten kod bo już się pogubiłem ...

Mógłbyś jeszcze to troszkę wytłumaczyć ?
tomek200
  1.  
  2. $value = $_GET['value'];
  3.  
  4. if($value !=''){
  5. mysql_connect("localhost","root","");
  6.  
  7. if(isset($_GET['szukaj'])){
  8. $search_value = $_GET['value'];
  9. $query = "select * from search where site_keywords like '%$search_value%' " ;
  10. $run = mysql_query($query);
  11. $find = mysql_num_rows($run);
  12.  
  13.  
  14. if ($find==0){
  15. echo "<p class='warning-empty'>brak wyników dla podanej frazy : <b>$search_value</b></p>";
  16. }
  17.  
  18. while ($row=mysql_fetch_array($run)) {
  19.  
  20. $title = $row['site_title'];
  21. $link = $row['site_link'];
  22. $desc = $row['site_desc'];
  23.  
  24. echo "<h1>$title</h1>$desc<a href='$link'>$link</a>";
  25. }
  26. }
  27. }else{
  28. echo 'Wypełnij wszystkie pola';
  29. }
axamitnyx
Dzięki za szybką odpowiedź. Jak wrócę z pracy to dam znać czy działa czy nie smile.gif
Pozdrawiam

Wkleiłem kod w odpowiednie miejsce na stronie... wyszukiwarka znajduje się w pliku index.php i od razu wyświetla "Wypełnij wszystkie Pola" nawet jeśli nie kliknę na "szukaj".

Co może być przyczyną ?

Wszystko było by ok, ale pojawił się nowy problem po wstawieniu kodu a mianowicie :

Komunikat " wypełnij puste pole " wyświetla się przed kliknięciem na szukaj to, co może być przyczyną ?

Kod pomógł o tyle, że nie wyświetla zawartości tabel z bazy danych i poprawnie wyszukuje frazy.



Ok poradziłem już sobie, wystarczyło troszkę pomyśleć, dzięki ! smile.gif
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.