jak zadać pytanie do wyszukiwania

0

Chciałbym wyszukiwać na swej stronie produków ale nie wiem jak zadać odpowiednie pytanie do bazy danych i znaleŹć jeżeli istnieją produkty . Struktura tabel odpowiedzialnych za produkty jest taka :
produkt_foto (lp,jpg)
produkt_gl(lp,id_gl,id_pom)
produkt_info(lp,wzor,nazwa,opis,cena)
produkt_pakowanie(lp,pakowanie)
Klucz podstawowy to lp
pytanie które wyświetla mi produkty na stronie jest takie
"

SELECT * from produkt_info,produkt_foto 
		  where produkt_info.lp=".$b." AND produkt_foto.lp=".$b) ; gdzie $b to lp ;

struktura ta :

class Szukaj extends DB
{

 public function start()
  {
   echo " Post szukaj : ".$_POST['szukaj']."<br>"; 
   $zapytanie = 'Select * From produkty_info Where opis Like "%' . $_POST['szukaj'] . '%"';
   $tab = $this->pobierz($zapytanie) ;
   $ilosc = $this->policz($zapytanie) ;
   echo'Znaleziono: '.$ilosc.'<br /><br />';

  }

}

class BD
{
....

public function policz($zapytanie) 
 { 
  if($this->wynik != false)
   {   
    $wynik = mysql_query($zapytanie) ; 
    if(!wynik) return false ;
    else
    {
     $ilosc = mysql_num_rows($wynik) ;
     return $ilosc;
    }
   }
  } 

public function pobierz($zapytanie)
 { 
  if($this->wynik != false)
  {   
   $wynik = @mysql_query($zapytanie);     
   if (!$wynik) 
    return false;
   $ilosc = @mysql_num_rows($wynik);      
   if($ilosc ==0) 
   return false;  
   $wynik = $this->wynik_bd_do_tablicy($wynik);  
   return $wynik; 
  }           
 }
.....
}

przepraszam za ewetualne błędy

0

Już samo to:

SELECT * from produkt_info,produkt_foto 
                   where produkt_info.lp=".$b." AND produkt_foto.lp=".$b) ; gdzie $b to lp ;

jest złe samo w sobie. To zapytanie nie znajdzie ci produktów, które nie mają zdjęcia. Zamień to na JOINA. Najlepiej LEFT JOINa.
A co do meritum twego problemu, to nie wiem o co ci chodzi. Kod wygląda w miarę poprawnie.

0

struktuta odpowiedzialna za szukanie jest w class szukaj
jak zadać pytanie aby odnaleść produkty przez jakieś słowo obecnie używam coś takiego do szukania produktów, ale czy jest to dobre to nie wiem

class Szukaj extends DB
{
var $tab ;
var $a ;
var $dana ;

public function ustaw($go,$pro,$kosz)
{
$this->dana['go'] = $go ;
$this->dana['pro'] = $pro ;
$this->dana['kosz'] =$kosz ;
}

public function wynik()
{
// if($_POST['szukaj'] == NULL)
// { header(javascript:history.back()) ; exit() ;}
$words = $_POST['szukaj'] ;
$zapytanie = "SELECT * FROM produkt_info ORDER BY lp ASC";
$tab = $this->pobierz($zapytanie) ;
$ilosc = $this->policz($zapytanie) ;
if(!isset($strona)) $strona = 1;
if($strona == 1)
{
$_SESSION['strona'] = $strona ;
unset($_SESSION['a']) ;
$start = $strona ;
$stop = $strona + 12 ;
$this->a = 3 ;
}
else
{
$_SESSION['strona'] = $strona ;
$stop = ($strona * 12)+1 ;
$start = $stop - 12 ;
$this->a = $start +2 ;
}
if(is_array($tab))
{
$a=1 ;
foreach($tab as $rzad)
{
if(preg_match("/$words/i", $rzad['opis']))
{
$this->dana[$a] = $rzad['lp'] ;
$a++ ;
}
}
if($a != 1)
{
?>

	  if ($x == $this->a) { echo "</tr><tr>"; 
	  $this->a += 3 ;}	
	  }
     } 
   
echo "</tr></table><table width='576'>";
$this->dana['pro']->ile_stron($ilosc) ;
echo "</table>" ;  

}}
echo "

Do twego zapytania znaleziono ".($a-1)." z ".$ilosc." produktów
" ;
}</p>

public function start()
{
switch($_GET['page'])
{
case 'szczegoly':
$b = $_GET['nr'] ;
$this->tab = $this->wczytaj_dane("SELECT * from produkt_info,produkt_foto,produkt_gl
where produkt_info.lp=".$b." AND produkt_foto.lp=".$b." AND produkt_gl.lp=".$b) ;
$this->tab['cena'] = number_format($this->tab['cena'],2,',',' ') ;
$this->dana['link'] = $PHP_SELF.'?nr='.$b.'&page=do_kosza' ;
$this->dana['go']->assign("this",$this) ;
$this->dana['go']->display("szukaj_szcz.tpl") ;
break ;
case 'do_kosza':
if($_POST['ile'] == 0) $ilosc = 1 ;
else $ilosc = $_POST['ile'] ;
if($ilosc < max_ile)
{
$this->dana['kosz']->do_kosza($_GET['nr'],$ilosc) ;
header('location: szukaj.php');
exit() ;
}
else
{
$link = '?nr='.$_GET['nr'].'&page=szczegoly' ;
echo "Maxsymalnie 200 sztuk danego produktu. Poczekaj 5 sekund" ;
$this->go->przekieruj($link) ;
}
break ;
default:
$this->wynik() ;
break ;
}
}

}

$kat->dana['naw'] = "Wynik wyszukiwania" ;

$go->assign('kat',$kat) ;
$go->assign('str',$str) ;
$go->assign('kosz',$kosz) ;
$go->display('index.tpl') ;
//echo '

' ;
echo '

' ;
echo 'Produkty wyszukiwane' ;
echo '
' ;</p>

$szukaj = new Szukaj() ;
$szukaj->ustaw($go,$pro,$kosz) ;
$szukaj->start() ;

$go->display('index_k.tpl') ;

ob_end_flush();
?>

1 użytkowników online, w tym zalogowanych: 0, gości: 1