Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]wyszukiwarka z checkboxami
Forum PHP.pl > Forum > Przedszkole
Mikos
Witam,
napisałem skrypt wyszukiwarki oparty o checkboxy.

<?php
if(isset($_POST['search']))
{

$location = "xxx";
$username = "xxx";
$password = "xxx";
$database = "xxx";
$db_table = "xxx";
$mysql_row = "xxx"; .


$conn = mysql_connect("$location","$username","$password");
if (!
$conn) die ("Could not connect MySQL");
mysql_select_db($database,$conn) or die ("Could not open database");

$priorytet = implode(',',$_POST['priorytet']);

$query = "SELECT * FROM $db_table WHERE priorytet = '$priorytet'";
$result = mysql_query($query);
$numrows = mysql_num_rows($result);
while(
$row = mysql_fetch_array($result)){

if(
preg_match("/$priorytet/i", $row[$mysql_row]))
{


$rawid = ($row[id]);
$rawcontent = ($row[content]);
$rawyear = ($row[event_headline]);
$display = '<font face="tahoma" size="2"><b>' .$rawcontent . ' ' .
$rawid . ', ' . $rawyear . '</b><br></font><br><br>';
echo(
$display);
$foundcount++;
}
$totalcount++;
}
if(
is_null($foundcount)){$foundcount=0;}
echo(
"<font face=\"tahoma\" size=\"3\" color=\"green\"><b>Znaleziono:
$foundcount z wyszukanych: $totalcount</b></font>"
);
}

?>
<form method="post">

<table width="700" border="0" cellpadding="2" cellspacing="1" class="box" align="center">
<tr>
<td width="100">Priorytet</td>
<td><p><br />
<input type='checkbox' name='priorytet[]' id='priorytet' value='biceps' />
Biceps
<input type='checkbox' name='priorytet[]' id='priorytet' value='triceps' />
Triceps
<input type='checkbox' name='priorytet[]' id='priorytet' value='plecy' />
Plecy
<p></p></td>
</tr>
<tr>
<td colspan="2" align="center"><input name="search" type="submit" class="box" id="seach" value="search"></td>
</tr>
</table>
</form>

Przykładowo posiadam w bazie rekord, któremu odpowiadają wartości biceps i triceps. Wyszukiwarka znajduje rekord jedynie po zaznaczeniu obydwu wartości. Problemem jest to, żeby rekord po zaznaczeniu którejkolwiek z wartości też był wyświetlany. Będę wdzięczny za każdą wskazówkę:)

pozdrawiam
wipo
  1. <?php
  2. $pri=$_POST['priorytet'];
  3.  
  4. foreach($pri as $wartosc)
  5.  $warunek[]=" priorytet='{$wartosc}' ";
  6.  
  7. if (count($warunek))
  8.  $zapytanie="select * from $db_table where ".implode(' or ',$warunek);
  9. else
  10.  $zapytanie="select * from $db_table ";
  11. ?>


podmien na taki fragment. powinno dzialac ale nie testowalem
Mikos
niestety, nie działa. Czy ma znaczenie to, ze wartości odpowiadające rekordowi są oddzielone przecinkiem(w tym przypadku wygląda to tak: biceps,triceps)?
wipo
wartosci rekordow nie sa oddzielane przecnkami, a jak sa to zle kompletnie napisales zapytanie.

mozesz wyswietlic co gen eruje zmienna $zapytanie?
Mikos
Cytat(wipo @ 13.09.2008, 06:21:04 ) *
wartosci rekordow nie sa oddzielane przecnkami, a jak sa to zle kompletnie napisales zapytanie.

mozesz wyswietlic co gen eruje zmienna $zapytanie?

select * from treningi where priorytet='Biceps' or priorytet='Triceps'
O cos takiego chodzi?

Poniżej zamieszczam przykładowy rekord. Może problem jest w tym, że źle przechowuje wartości w bazie(np. poprzez to oddzielenie przecinkami)?
Dopiero zaczynam moją przygodę z php, więc będę wdzięczny za każda uwagę.

Obrazek

Poprawilem link do obrazka.
wipo
zapytanie jest prawidlowe jezeli chodzi o skladnie
obrazek nie dziala wiec niestety nie jestem w stanie ci pomoc

niemniej jednak w komorce priorytet powinienes miec wartosci ktore porównujesz tj Biceps triceps itp

  1. <?php
  2. $pri=$_POST['priorytet'];
  3.  
  4. foreach($pri as $wartosc)
  5.  $warunek[]=" priotytet like '%{$wartosc}%' ";
  6.  
  7. if (count($warunek))
  8.  $zapytanie="select * from $db_table where ".implode(' or ',$warunek);
  9. else
  10.  $zapytanie="select * from $db_table ";
  11. ?>


tak chyba powinno zadzialac
Mikos
witam,
skrypt działa! Wystarczyło tak przerobić zapytanie:

<?php
$priorytet = implode(',',$_POST['priorytet']);

$query = "SELECT * FROM $db_table WHERE priorytet like '%{$priorytet}%'";
?>

Dziękuję za naprowadzenie;)
pozdrawiam
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.