php such kriterien nur bei eingabe



  • hey ich mache gerade so ein html-forumular worüber man meine mysql durchsuchen kann.

    ich werde die felder aus und setze dann dementsprechend den sql-query.

    aber wie mache ich das, dass felder die nicht ausgefüllt wurden nicht berücksichtigt werden wenn ich mein query habe

    wo

    ....WHERE name=name,prnr=name, pr_nr=prnr, ....

    wo wenn derjenige z.B. prnr nicht ausgefüllt hat, muss ich WHERE ....pr_nr= ja weglassen ...wie mach ich das dynmaisch?



  • Vorschlag: Vorhandene Bedingungen in ein Array packen und daraus den Query bauen.

    $conditions = array();
    if (Feld ausgefüllt)
    {
    	$conditions[] = 'name=' . $name;
    }
    if (!empty($conditions))
    {
    	$query = "SELECT .. WHERE";
    	$add_and = false;
    	foreach ($conditions as $c)
    	{
    		if ($add_and)
    		{
    			$query .= ' AND';
    		}
    		else
    		{
    			$add_and = true;
    		}
    
    		$query .= ' ' . $c;
    	}
    
    	//...
    }
    


  • oder:

    $sql = " SELECT * FROM Tabelle WHERE 1 "
         . (isset($_POST['name'])&&trim($_POST['name'])!='' ? " AND name = " . mysql_real_escape_string($_POST['name']) : "")
         . (isset($_POST['test'])&&trim($_POST['test'])!='' ? " AND test = " . mysql_real_escape_string($_POST['test']) : "");
    // ...
    

    LG


Log in to reply