webForumDet fria alternativet

sökformulär med tomma fält

PHP

2 svar · 369 visningar · startad av bees

Medlem sedan nov. 20079 inlägg
Frågan#1

Nedan ett utsnitt ur den mottagande mysql frågan som tar emot från ett sökformulär.
Problemet som jag inte fattar lösningen på är att om Org i formuläret är tomt och fältet org är NULL i tabellen så returneras inga poster, men om Org i tabellen har ett värde så funkar det även om sökrutan för org inte är ifyld.

WHERE pv_kont_reg.fnamn LIKE '%{$_POST['fnamn']}%'
AND pv_kont_reg.enamn LIKE '%{$_POST['enamn']}%'
AND pv_kont_reg.org LIKE '%{$_POST['org']}%'

Tror jag blir smått galen och det finns säkert någon enkel lösning, blir glad om någon kan hjälpa mig med detta ;)

Medlem sedan maj 20071 061 inlägg
#2

Jag brukar kolla så att söksträngen är minst 4 tecken. Är den mindre än så görs aldrig någon SQL förfrågan.

Min kode:

	if (strlen($searchvalue) < 4) {
	$html_list .= "<br>\r\n";
	$html_list .= "<font color=\"#FF0000\">Search String must be at least 4 chars long.</font>";
} else {
	// sträng är ifylld. Gör en sökning

}
Medlem sedan nov. 20079 inlägg
#3

Tack för hjälpen

Det blev ju en liten input till början på lösning, fick det att funka med denna lösning. Kanske inte så genialt men.... :bire

 
  $fnamn = $_GET[fnamn1];
  $enamn = $_GET[enamn1];
  $org = $_GET[org1];
  $adr= $_GET[adress1];
  $pnr= $_GET[pnummer1]; 
  $ort= $_GET[ort1];
  $la= $_GET[land1];
  $tel= $_GET[tel1];  
  $mob= $_GET[mob1];  
  $ep= $_GET[epost1];  
  $fax= $_GET[fax1]; 
  $web= $_GET[web1]; 
  $ant= $_GET[ant1];
  $underfnutt	= "_";
  $like1 = "LIKE '%" ;
  $like2 = "%'";
  

  if ($fnamn <> NULL) {$fnamn = ' fnamn ' .$like1 .$fnamn .$like2 ;} else{$fnamn = ' fnamn ' .$like1 .$underfnutt .$like2  ; } 
  if ($org <> NULL) {$org = 'AND org ' .$like1 .$org .$like2.''  ;}; 
  if ($enamn <> NULL) {$enamn = 'AND enamn ' .$like1 .$enamn .$like2.' '  ;}; 
  if ($adr <> NULL) {$adr = 'AND adress ' .$like1 .$adr .$like2.' '  ;};
  if ($pnr <> NULL) {$pnr = 'AND pv_kont_reg.postnr ' .$like1 .$pnr .$like2.' '  ;};
  if ($ort <> NULL) {$ort = 'AND pv_kont_reg.ort ' .$like1 .$ort .$like2.' '  ;};
  if ($la <> NULL) {$la = 'AND pv_kont_reg.land ' .$like1 .$la .$like2.' '  ;};
  if ($tel <> NULL) {$tel = 'AND pv_kont_reg.Tel ' .$like1 .$tel .$like2.' '  ;};
  if ($mob <> NULL) {$mob = 'AND pv_kont_reg.Mob ' .$like1 .$mob .$like2.' '  ;}; 
  if ($ep <> NULL) {$ep = 'AND pv_kont_reg.epost ' .$like1 .$ep .$like2.' '  ;};  
  if ($fax <> NULL) {$fax = 'AND pv_kont_reg.Fax ' .$like1 .$fax .$like2.' '  ;};
  if ($web <> NULL) {$web = 'AND pv_kont_reg.web ' .$like1 .$web .$like2.' '  ;};
  if ($ant <> NULL) {$ant = 'AND pv_kont_reg.kommentar ' .$like1 .$ant .$like2.' '  ;};
  $sokstrang = $fnamn.' '.$org .' '.$enamn.' '.$adr.' '.$pnr.' '.$ort.' '.$la.' '. $tel.' '.$mob.' '.$ep.' ' .$web.' '.$fax.' '.$ant;

mysql_select_db($database_filer, $filer);
$query_Recordset1 = "SELECT * FROM pv_kont_reg WHERE $sokstrang ";
$Recordset1 = mysql_query($query_Recordset1, $filer) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
786 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
149 ms — deklarationer (db)
0 ms — hämta statistik (cache)
635 ms — hämta tråd, inlägg och bilagor (db)
141 ms — ändringar (db)