Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyszukiwanie, 1 tabela, wiele kategorii szukania
Forum PHP.pl > Forum > PHP
pablo301287
Witam

Zwracam sie do Was z prosba o pomoc... Otoz, mam utworzona jedna tabele "ksiazki" a w niej id_ksiazki, tytul, autor, rok wydania oraz isbn. Chcialbym aby w swojej utworzonej stronie byla mozliwosc wyszukiwania ksiazki ale pod wieloma wzgledami, tj. po tytule, autorze, roku wydania i isbn oraz aby wyniki byly wyswietlane w tabeli, tak jak w ponizszym skrypcie tylko, ze on dotyczy wyszukiwania tylko pod wzgledem tytulu. Jak moglbym to zrobic?? prosze o pomoc..

Kod
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
</head>
<body bgcolor="#666699">
<CENTER><H1> <FONT COLOR="red"> Szukanie ksiazki </h1>
<table><tr>
<td><a href="index.html"><font color="yellow">Powrót do głównej</a></td>

</td></tr></table>

</FONT> </H2></CENTER>
<HR>

    <table border="0">
    <form method="post" action="<?php echo $PHP_SELF?>">
    <tr><td>Podaj tytuł:</td><td><input type="Text" name="xtytul" size="5"></td>
    <td><Input type="submit" name="submit" value="ok"></td></tr>
    </form></table>

<?
$submit=$_POST['submit'];
$xtytul=$_POST['xtytul'];
    //---kolorek
    

    function kolor_linii()
    {
        static $kolor;
        if($kolor=="#EFEFEF")
            $kolor="#AAAAAA";
        else
            $kolor="#EFEFEF";

    return($kolor);
    }
    //---

    if ($submit && $xtytul!='') {

    mysql_connect('localhost', '..........', '.........')
    or die ("Nie mozna sie polaczyc z serwerem");

    mysql_select_db("..........[php][/php]")
       or die ("Nie mozna sie polaczyc z baza");
     $result = mysql_query("SELECT tytul, autor, rok_wydania, isbn FROM ksiazki WHERE tytul LIKE '%$xtytul%' ");

   //---------------
   $dzisiaj=date("Y-m-d");
   $i=0;
    print ("<HR>");
    print ("<FONT COLOR = blue SIZE=4> Lista dostępnych książek: $xtytul</FONT>");
          print ("<P>");
    //
    //print ("<Table border=\"0\">\n");
    //print ("<tr><td>");
    //
       //print "<font size=5>";
   if(mysql_num_rows($result)!=0)
   {
       print ("<Table border=\"0\">
       <tr>
           <td>lp.</td>
           <td>Tytuł</td>
           <td>Autor</td>
           <td>Rok Wydania</td>
           <td>ISBN</td>
       
       
           
       </tr>");
   }
           while ($row = mysql_fetch_array($result)) {
            $i++;
            $kolorek=kolor_linii();
                 print ("<TR BGCOLOR=\"$kolorek\">\n");
               print ("<TD>"."$i"."</TD>\n");
            print ("<TD>$row[0]</TD>\n");
                        print ("<TD>$row[1]</TD>\n");    
                 print ("<TD>$row[2]</TD>\n");
                 print ("<TD>$row[3]</TD>\n");
                 print ("<TD>$row[4]</TD>\n");
                 
               print ("</TR>\n");

       }
       print ("</Table>\n");
    
    print("<P>");
    if ($i==0) print ("<b>Brak wpisów!</b>");
    print "</font>";

} // submit
?>
</body>
<html>
<head>
okitoki
SELECT tytul, autor, rok_wydania, isbn FROM ksiazki WHERE tytul LIKE '%{$xszukaj}%' or autor LIKE '%{$xszukaj}%' or rok_wydania LIKE '%{$xszukaj}%' or isbn LIKE '%{$xszukaj}%"

zmien xtytul na xszukaj
pablo301287
Chodzilo mi bardziej o to jak zrobic zeby kazde kryterium mialo swoje pole do wpisywania... tak jak w moim przykladzie jest utworzone pole "podaj tytul" i wyszukiwanie jest tylko wedlug tytulu, to potrzebuje jeszcze aby byly takie pola jak "podaj autora"(wyszukiwanie wg. autora), "podaj rok_wydania" (wyszukiwanie wg. roku wydania), jak przerobic ten formularz zeby tak bylo i czy wogole da sie to zrobic w jednym formularzu?? smile.gif
MWL
Tak jak wyżej pobaw sie z like i daj tam przesłane dane przez formularz, warto też zobaczyć coś takiego jak REGEX
SzamanGN
Nie wiem czy o to chodzi, ale ja bym zrobił tak:
na stronie formularz do szuka nia z polami: tytuł, autor, rok wydania i ISBN.
Dane z formularza odczyta skrypt PHP, który stworzy na ich podstawie zapytanie w następujący sposób:

  1. <?php
  2. $zapytanie='';
  3. if (isset($_GET['tytul']) $zapytanie.='tytul LIKE "%'.$_GET['tytul'].'%" ';
  4. if (isset($_GET['autor']) $zapytanie.='autor LIKE "%'.$_GET['autor'].'%" ';
  5. if (isset($_GET['rok_wydania']) $zapytanie.='rok_wydania LIKE "%'.$_GET['rok_wydania'].'%" ';
  6. if (isset($_GET['autor']) $zapytanie.='autor LIKE "%'.$_GET['autor'].'%" ';
  7. if ($zapytanie!='')
  8. { //Podano dane do przeszukiwania.
  9. $result = mysql_query('SELECT tytul, autor, rok_wydania, isbn FROM ksiazki WHERE '.$zapytanie);
  10. //...
  11. }
  12. else
  13. { //Nie będzie wyszukiwania w bazie danych.
  14. //...
  15. }
  16. ?>
pablo301287
niewiem, nie moge sie w tym polapac... Uzyje metody ktora zaproponowal okitoki:) a jeszcze jedna sprawa- w jaki sposob usuwac pojedynczo rekordy z tabeli i tym samym z bazy danych, chodzi mi o te rekordy ktore sa wynikiem wyszukiwania. Chcialbym aby do kazdego wyszukanego rekordu bylo pole "usun". Jak bedzie wygladal taki kod i w ktorym miejscu nalezy go umiescic?? Prosze o pomoc. Jutro mam oddac projekt bazy danych i chcialbym ja udoskonalic:)
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.