Как сделать поиск из базы на php?
Надо динамически формировать строку запроса в зависимости от заполненных полей поиска. Ищете только по марке? Ок сделайте запрос ... were model='%$model%'. Ищете по марке и детали? Ок ... were model like '%$model%' AND detal like '%$detal%' и т.д.
Вы же сейчас используете OR вместо AND и в запросе есть пустые поля. Т.е.  если вы не указываете деталь, у вас получается ... were model like '%$model%' OR detal like '%%' -- этому условию соответствуют все записи.
$name = mysql_real_escape_string($_GET['name']);
$detailModel = mysql_real_escape_string($_GET['detail_model']);
$city = mysql_real_escape_string($_GET['city']);

$sql = "SELECT `id`, `model`, `detal`, `data`, `prosmotry`, `gorod`, `oblast`" . 
        "FROM `auto` WHERE `detal` LIKE '%$name%'" . 
        ($detailModel ? " AND `model` LIKE '%$detailModel%'" : "") . 
        ($city ? " AND `gorod` LIKE '%$city%'" : "");
Использовал в примере mysql_real_escape_string, но этот метод устарел, используйте вместо этого подстановку параметров в mysql запрос, не забывайте о sql-инъекциях, иначе окажете себе и вашим пользователям медвежью услугу.