Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wszystkie rekordy raz jeszcze, Jak to zapisać w formularzu
exit
post 11.07.2005, 09:06:27
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 15.12.2004

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


Witam

Ostatnio napisałem coś takiego:

Cytat
Witam wszystkich

Utknąłem w zdechłym punkcie

Mam następujący kod w formularzu:

CODE
<h1>Wyszukiwanie książek w księgarni</h1>
<form action="rezultaty.php" method="post">
Wybierz metodę wyszukiwania:<br>
<select name="metoda_szukania">
<option value="autor">Autor
<option value="tytul">Tytuł
<option value="isbn">ISBN
</select><br>
Wprowadź poszukiwane wyrażenie:<br>
<input name="wyrazenie" type="text">
<br><br>


<select name="metoda_szukania_1">
<option value="autor">Autor
<option value="tytul">Tytuł
<option value="isbn">ISBN
</select><br>
Wprowadź poszukiwane wyrażenie:<br>
<input name="wyrazenie_1" type="text">
<bR><br>

<select name="metoda_szukania_2">
<option value="0-672-31697-8">0-672-31697-8
<option value="0-672-31745-1">0-672-31745-1
</select><br>


<bR>
<input type="submit" value="Szukaj">
</form>


Wszystko działa bardzo ładnie ale nie wiem jak zrobić, żeby była opcja umożliwiająca wybranie wszystkich pozycji z danej kolumny
Czyli coś takiego:

CODE
<select name="metoda_szukania_2">
<option value="0-672-31697-8">0-672-31697-8
<option value="0-672-31745-1">0-672-31745-1
<option value="wszystkie">wszystkie
</select><br>


Skrypt wygląda następująco:

Kod php:
<?php
$metoda_szukania=$HTTP_POST_VARS['metoda_szukania'];
$metoda_szukania_1=$HTTP_POST_VARS['metoda_szukania_1'];
$metoda_szukania_2=$HTTP_POST_VARS['metoda_szukania_2'];
$wyrazenie=$HTTP_POST_VARS['wyrazenie'];
$wyrazenie_1=$HTTP_POST_VARS['wyrazenie_1'];

$wyrazenie=trim($wyrazenie);
$wyrazenie_1=trim($wyrazenie_1);

if (!$metoda_szukania || !$wyrazenie)
{
        echo 'Brak parametrów wyszukiwania, spróbuj ponownie';
        exit;
}
$metoda_szukania=addslashes($metoda_szukania);
$metoda_szukania_1=addslashes($metoda_szukania_1);
$metoda_szukania_2=addslashes($metoda_szukania_2);
$wyrazenie=addslashes($wyrazenie);
$wyrazenie_1=addslashes($wyrazenie_1);

$db=mysql_connect('localhost', 'root', 'qwerty') or die ('nie można się połączyć<br>'.mysql_error());

mysql_select_db('ksiazkorama');
$zapytanie= "select * from ksiazki where ".$metoda_szukania." like '%".$wyrazenie."%' AND ".$metoda_szukania_1." like '%".$wyrazenie_1."%'  AND isbn='$metoda_szukania_2'";
echo $zapytanie .'<br>';

$wynik=mysql_query($zapytanie);

$ile=mysql_num_rows($wynik);
echo 'Znaleziono ' . $ile .' pozycji<br>';

for ($i=0; $i<$ile;  $i++)
{
        $wiersz=mysql_fetch_array($wynik);
        echo '<b>' .($i+1) .'.' .'</b>' .'<b>Tytul:</b> ';
        echo stripslashes($wiersz['tytul']);
echo '<br><b>Autor:</b> ';
        echo stripslashes($wiersz['autor']);
echo '<bR><b>ISBN:</b> ';
        echo stripslashes($wiersz['isbn']) .'<br><br>';
}
?>


Jak by ktoś mail pomysł jak to zrobić to bede barrrrrrrrrrdzo wdzieczny:)


Dostałem odpowiedź

Cytat
W przypadku, gdy wartość dla danego szukania będzie równa "wszystkie" to musisz w warunku dać wyszukiwanie po wszystkich polach dla żądanej wartości, czyli bierzesz w nawias a nawiasie full OR, po nawiasie dalej AND jak bylo. I tak dla każdego warunku.


Zrobiłem coś takiego

  1. SELECT *
  2. FROM ksiazki WHERE isbn=('0-672-31697-8' OR '0-672-31745-1');


No i MySQL wyrzuca mi wszystkie rekordy a nie tylko te 2 o które mi chodzi.

Mam jeszcze pytanie jak zapisać warunek:

Cytat
W przypadku, gdy wartość dla danego szukania będzie równa "wszystkie" to musisz w warunku dać wyszukiwanie po wszystkich polach dla żądanej wartości, czyli bierzesz w nawias a nawiasie full OR, po nawiasie dalej AND jak bylo. I tak dla każdego warunku.

za pomocą formularza, ja zrobiłem coś takiego ale chyba się nie popisałem

  1. <select name="metoda_szukania_2">
  2. <option value="0-672-31697-8">0-672-31697-8
  3. <option value="0-672-31745-1">0-672-31745-1
  4. <option value="0-672-31745-1' or '0-672-31697-8">wszystkie


Heeeeeeeeeeeeeeeeelp


--------------------
...life is just...
Go to the top of the page
+Quote Post
nospor
post 11.07.2005, 09:13:34
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




hihi, odemnie ta rada była. A więc:

  1. SELECT *
  2. FROM ksiazki WHERE (isbn='0-672-31697-8' OR isbn='0-672-31745-1') AND (tu inne warunki);


  1. <select name="metoda_szukania_2">
  2. <option value="0-672-31697-8">0-672-31697-8</option>
  3. <option value="0-672-31745-1">0-672-31745-1</option>
  4. <option value="wszystkie">wszystkie</option>
Zamykaj option.
I sprawdzasz:
  1. <?php
  2.  
  3. if ($_POST['metoda_szukania_2']=='wszystkie')
  4. {
  5. //tu budujesz warunek na wszytie czyli z or
  6. }
  7.  
  8. ?>


propoowałbym ci jeszcze zrobić tablicę na warunki:
  1. <?php
  2.  
  3. $wh = array();
  4. if ($cos)
  5.  $wh[] = 'jakis warunke';
  6. if ($cos2)
  7.  $wh[] = 'jakis warunke2';
  8.  
  9. $sql = 'select * from tabela ';
  10. if (!empty($wh))
  11.  $sql.='where '.implode(' AND ', $wh);
  12.  
  13. ?>

i wtedy np:
  1. <?php
  2.  
  3. if ($_POST['metoda_szukania_2']=='wszystkie')
  4. {
  5. //tu budujesz warunek na wszytie czyli z or
  6. $wh[] = '(isbn='0-672-31697-8' or isbn='0-672-31745-1')';
  7. }
  8.  
  9. ?>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
exit
post 11.07.2005, 09:29:10
Post #3





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 15.12.2004

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


No po prostu jestem totalnie zaskoczony:)))).

Po prostu uprzedziłeś moje kolejne pytenie, jak zrobić zapytanie dla kilku warunków:)).

Dzieki za pomoc, zabieram sie do testowania!

Ale wiesz, nie możesz spać spokojnie, bo jak coś pojdzie nie tak to jeszcze bebe wolal o pomoc.

TXH


--------------------
...life is just...
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: 20.07.2025 - 06:20