Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL][HTML] Wyszukiwarka w PHP
Forum PHP.pl > Forum > Przedszkole
szwarceneger
Witam!
Jestem bardzo początkujący w PHP i dopiero stawiam pierwsze kroki w MySQL i bardzo proszę o wyrozumiałość.
Chciałbym stworzyć na stronie wyszukiwarkę płyt no i mam np. pola do wyboru:
  1. <select name="rodzaj" id="rodzaj" style="width: 150px; font-size:11px;" class="contactForm">
  2. <option value="0">Wybierz wszystkie</option>
  3. <option value=1>Biesiada</option>
  4. <option value=2>Metal</option>
  5. <option value=3>Pop</option>
  6. <option value=4>Rock</option>


a także:
  1. <select name="rok" id="rok" style="width: 150px; font-size:11px;" class="contactForm">
  2. <option value="0">2009</option>
  3. <option value=1>2008</option>
  4. <option value=17>2007</option>

itd.

czyli wybierz rodzaj muzyki, a także rok wydania albumu i wtedy chcę wyszukać wszystkie płyty z mojej bazy, które się pojawiły w danym roku i są danego typu.
Moja baza danych ma 4 pola: wykonawca, album, rodzaj muzyki, rok wydania albumu.
Mam pytanie - dodaję do bazy danych płytę: Riverside, Anno Domini High Definition, Rock, 2009 i teraz jak połączyć tą bazę danych z moją wyszukiwarką?
Pewnie jest to banalnie proste, dlatego proszę o pomoc.
Pozdrawiam!
Fifi209
Po przesłaniu formularza do PHP (przysyłaj metodą POST) wyświetl sobie najpierw wszystko co Ci doszło, abyś wiedział gdzie masz te dane.

Kod
echo '<pre>';
print_r($_POST);
echo '</pre>';


Do połączenia i obsługi mysql możesz użyć zwykłych funkcji (tych z php) lub jakieś biblioteki (np. pdo, mysqli)
Tutaj musisz poczytać.
Savage.Mephisto
Trochę Cię naprowadzę na 'odpowiednie tory':

  1. <?php
  2. <form action="search.php" method="post">
  3.  <select name="rodzaj" id="rodzaj" style="width: 150px; font-size:11px;" class="contactForm">
  4.    <option value="wszystkie">Wybierz wszystkie</option>
  5.    <option value="biesiada">Biesiada</option>
  6.    <option value="metal">Metal</option>
  7.    <option value="pop">Pop</option>
  8.    <option value="rock">Rock</option>
  9.  </select>
  10.  <select name="rok" id="rok" style="width: 150px; font-size:11px;" class="contactForm">
  11.    <option value="2009">2009</option>
  12.    <option value="2008">2008</option>
  13.    <option value="2007">2007</option>
  14.  </select>
  15. </form>
  16. ?>


plik search.php

  1. <?php
  2.  
  3. mysql_connect("host", "login", "haslo") or die(mysql_error());
  4.  
  5. function czysc($string) {
  6.  
  7.    $string = str_ireplace('union', '',$string);
  8.    $string = str_ireplace('select', '',$string);
  9.    $string = trim($string);
  10.  
  11.    return $string;
  12.  
  13. }
  14.  
  15. function filtruj($string) {
  16.  
  17.    return htmlspecialchars(strip_tags($string));
  18.  
  19. }
  20.  
  21. $rodzaj = filtruj(czysc($_POST['rodzaj']));
  22. $rok = filtruj(czysc($_POST['rok']));
  23.  
  24. if (isset($_POST['rodzaj']) && isset($_POST['rok'])) {
  25.  
  26.        if ($rodzaj == "wszystkie") {
  27.  
  28.            $query = "SELECT * FROM `muzyka` WHERE `rok` LIKE upper('%$rok%') ORDER BY `rodzaj`, `rok` DESC";
  29.  
  30.        } elseif ($rodzaj != "wszystkie") {
  31.  
  32.            $query = "SELECT * FROM `muzyka` WHERE `rodzaj` LIKE upper('%$rodzaj%') AND `rok` LIKE upper('%$rok%') ORDER BY `rodzaj`, `rok` DESC";
  33.  
  34.        }
  35.  
  36.        echo "Wyniki wyszukiwania:";
  37.      
  38.        $result = mysql_query($query) or die(mysql_error());
  39.  
  40.        while($row = mysql_fetch_array($result)){
  41.  
  42.            echo $row['wykonawca']. " - ". $row['album']. " - ". $row['rodzaj_muzyki']. " - ". $row['data_wydania'];
  43.            echo "<br />";
  44.  
  45.        }
  46.  
  47. } else {
  48.  
  49.    echo "Brak parametrów wyszukiwania.";
  50.  
  51. }
  52. ?>
Fifi209
Cytat(Savage.Mephisto @ 13.06.2009, 10:55:06 ) *
Trochę Cię naprowadzę na 'odpowiednie tory':


Nie lepiej go nauczyć?

Daj człowiekowi rybę to się naje, daj mu wędkę a będzie już zawsze syty.

P.S. Zamiast tych durnych filtracji nie lepiej po prostu użyć biblioteki typu PDO ? Tam masz to od razu, bez zbędnego kodu.
Savage.Mephisto
Dlaczego uważasz, że te filtracje są durne? Chłopak będzie miał na przyszłość wskazówki jak ustrzec się przed SQL Injection.
Fifi209
Cytat(Savage.Mephisto @ 13.06.2009, 11:44:26 ) *
Dlaczego uważasz, że te filtracje są durne? Chłopak będzie miał na przyszłość wskazówki jak ustrzec się przed SQL Injection.


Bo sprawdza się typy zmiennych, określa się co mogą zawierać stringi (dzięki wyrażeniom regularnym), nie użyłeś nawet mysql_real_escape_string()" title="Zobacz w manualu PHP" target="_manual

Co do funkcji:

  1. <?php
  2. function czysc($string) {
  3.  
  4.   $string = str_ireplace('union', '',$string);
  5.   $string = str_ireplace('select', '',$string);
  6.   $string = trim($string);
  7.  
  8.   return $string;
  9.  
  10. }
  11. ?>


A jeżeli dam sel/**/ect ? 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.