Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL][HTML] Wyszukiwarka w PHP
szwarceneger
post 13.06.2009, 09:27:42
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 13.06.2009

Ostrzeżenie: (0%)
-----


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!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Fifi209
post 13.06.2009, 09:42:41
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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ć.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Savage.Mephisto
post 13.06.2009, 09:55:06
Post #3





Grupa: Zarejestrowani
Postów: 122
Pomógł: 11
Dołączył: 24.01.2008

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował Savage.Mephisto 13.06.2009, 10:02:40


--------------------
Myślisz, że przeżyjesz swoje życie w blasku i chwale...
Lecz jest coś, co zmieni ci cały świat...
Szczerość!
Go to the top of the page
+Quote Post
Fifi209
post 13.06.2009, 10:33:34
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Savage.Mephisto
post 13.06.2009, 10:44:26
Post #5





Grupa: Zarejestrowani
Postów: 122
Pomógł: 11
Dołączył: 24.01.2008

Ostrzeżenie: (0%)
-----


Dlaczego uważasz, że te filtracje są durne? Chłopak będzie miał na przyszłość wskazówki jak ustrzec się przed SQL Injection.


--------------------
Myślisz, że przeżyjesz swoje życie w blasku i chwale...
Lecz jest coś, co zmieni ci cały świat...
Szczerość!
Go to the top of the page
+Quote Post
Fifi209
post 13.06.2009, 11:04:06
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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

Ten post edytował fifi209 13.06.2009, 13:13:15


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 05:18