ugrás a tartalomhoz

php mysql

csman007 · 2010. Feb. 25. (Cs), 23.38
Sziasztok!
A véleményeteket szeretném kikérni az alábbi kódról. Annyit kel tudni róla, hogy 7 drop down boxból frissülnek az adatok, és jelenleg ezt találtam ki. Ha esetleg tud valaki olyat ami miatt nem ajánlja kérem jelezze.

 $gyarto = $_GET["gyarto"];
 $katalog = $_GET["katalog"];
 $termek = $_GET["termek"];
 $anyag = $_GET["anyag"];
 $szin = $_GET["szin"];
 $style = $_GET["style"];
 $minta = $_GET["minta"];
	
    if ($gyarto != 'összes') {    	
		$gy = " t_gyarto = '$gyarto' AND";		
	}
	
	if ($katalog != 'összes') {		
		$k = " t_katalog = '$katalog' AND";
		
	}
	if ($termek != 'összes') {		
		$ter = " t_tipus = '$termek' AND";	
	}

	if ($anyag != 'összes'){
		
		$any = " t_anyag = '$anyag' AND" ;
	}
	
	if ($szin != 'összes') {		
		$sz = " t_szin ='$szin' AND";		
	}
	
	if ($style != 'összes') {		
		$stilus = " t_stilus = '$style' AND";		
	}
	
	if ($minta != 'összes') {		
		$mint = " t_minta = '$minta'   ";//+3 space a levágás miatt		
	}
	
	$all = $gy.$k.$ter.$any.$sz.$stilus.$mint;
	$rest = substr($all, 0, -3);//leveszi a string utolsó 3 karakterét
        
         if ($gyarto == 'összes' && $katalog == 'összes' && $termek == 'összes' 
&& $anyag == 'összes' && $szin == 'összes' && $style == 'összes' && $minta == 'összes'){	
      $sql ="SELECT * FROM termek ORDER BY t_id";				
	}

	else {
	 $sql ="SELECT * FROM termek WHERE ".$rest." ORDER BY t_id ";
	}
Előre is köszönettel Csman
 
1

SQL Injection

Poetro · 2010. Feb. 26. (P), 03.38
SOSE használj fel felhasználótól érkező adatot előfeldolgozás nélkül, amennyiben például MySQL lekérdezésben használod, előtte használd a mysql_real_escape_string függvényt.
$gyarto = $_GET["gyarto"];  
$katalog = $_GET["katalog"];  
$termek = $_GET["termek"];  
$anyag = $_GET["anyag"];  
$szin = $_GET["szin"];  
$style = $_GET["style"];  
$minta = $_GET["minta"];

$elemek = array(
  't_gyarto'  => $gyarto,
  't_katalog' => $katalog,
  't_tipus'   => $termek,
  't_anyag'   => $anyag,
  't_szin'    => $szin,
  't_stilus'  => $style,
  't_minta'   => $minta,
);
$feltetelek = array();
foreach ($elemek as $kulcs => $elem) {
  if ($elem != 'összes') {
    $feltetelek[] = "$kulcs = '" . mysql_real_escape_string($elem) . "'";
  }
}
if (empty($feltetelek)) {
  $sql ="SELECT * FROM termek ORDER BY t_id";
}
else {
  $feltetel = implode(' AND ', $feltetelek);
  $sql ="SELECT * FROM termek WHERE $feltetel ORDER BY t_id";
}
2

isset

bh · 2010. Feb. 26. (P), 12.16
Érdemes még a $_GET dolgait megvizsgálni, hogy egyáltalán bejött-e olyan kulcsú tömbérték.
3

mindig

csman007 · 2010. Feb. 26. (P), 12.49
Mindig kapsz értéket, mert select boxokból ajax által frissül az adat. Azért vizsgáljuk az 'összes't mindig mert a select boxnak ez az alapértéke, és ilyenkor mindent látsz.