2012-04-08 23 views
0

Я хочу, чтобы мой поиск сосредоточился на переменных в строке URL. В настоящее время он использует поиск по форме.Поиск по URL-адресу varicles

Он использует этот

<?php 
    include('db.php'); // include your code to connect to DB. 
    $tbl_name="mobile";  //your table name 

$whereClauses = array(); 
if (! empty($_POST['Model'])) $whereClauses[] ="model='".mysql_real_escape_string($_POST['Model'])."'"; 
if (! empty($_POST['Mins'])) $whereClauses[] ="minutes='".mysql_real_escape_string($_POST['Mins'])."'"; 
if (! empty($_POST['Texts'])) $whereClauses[] ="texts='".mysql_real_escape_string($_POST['Texts'])."'"; 
if (! empty($_POST['Freegifts'])) $whereClauses[] ="free_gift='".mysql_real_escape_string($_POST['Freegifts'])."'"; 
if (! empty($_POST['Network'])) $whereClauses[] ="network_name='".mysql_real_escape_string($_POST['Network'])."'"; 
if (! empty($_POST['Merchant'])) $whereClauses[] ="merchant_category='".mysql_real_escape_string($_POST['Merchant'])."'"; 
$where = ''; 
if (count($whereClauses) > 0) { $where = ' WHERE '.implode(' AND ',$whereClauses); } 
$sql = mysql_query("SELECT * FROM $tbl_name".$where); 
?> 

Однако, я добавил это к моей странице:

<?php 
    $model = $_GET['model']; //gets model from URL 
    $mins = $_GET['mins']; //gets mins from URL 
    $texts = $_GET['texts']; //gets mins from URL 
    $freegift = $_GET['free-gift']; //gets mins from URL 
    $network = $_GET['network']; //gets mins from URL 
    $plan = $_GET['plan']; //gets mins from URL 
?> 

Это должно быть так, что не все переменные являются обязательными. Любая помощь будет оценена по достоинству.

Заранее спасибо :)

+0

Просто измените '$ _POST's в' $ _GET's. – powerbuoy

+0

Должен ли я добавить:

+1

вы можете использовать '$ _REQUEST' .. это комбинация' $ _POST' и '$ _GET' – Baba

ответ

0

Есть несколько вариантов, которые возвращают значение или NULL:

<?php 
     $model = (isset($_GET['model']) ? $_GET['model'] : NULL); 
     $mins = (isset($_GET['mins']) ? $_GET['mins'] : NULL);  
     $texts = (isset($_GET['texts']) ? $_GET['texts'] : NULL); 
    $freegift = (isset($_GET['free-gift']) ? $_GET['free-gift'] : NULL); 
    $network = (isset($_GET['network']) ? $_GET['network'] : NULL); 
     $plan = (isset($_GET['plan']) ? $_GET['plan'] : NULL); 
?> 

Это позволит получить переменные из их correponding $ _GET элемента, только если есть один задавать.


Альтернативный синтаксис (короче):

<?php 
     $model = ($_GET['model'] ? $_GET['model'] : NULL); 
     $mins = ($_GET['mins'] ? $_GET['mins'] : NULL);  
     $texts = ($_GET['texts'] ? $_GET['texts'] : NULL); 
    $freegift = ($_GET['free-gift'] ? $_GET['free-gift'] : NULL); 
    $network = ($_GET['network'] ? $_GET['network'] : NULL); 
     $plan = ($_GET['plan'] ? $_GET['plan'] : NULL); 
?> 

Альтернативный (непроверенные хотя):

<?php 
$vars = array('model','mins','texts','free-gift','network','plan'); 

foreach($vars as $value) { 
    $$value = (isset($_GET[$value]) ? $_GET[$value] : NULL); 
} 
?> 

РЕДАКТИРОВАТЬ: Для того, чтобы установить, где положение, основываясь на этом, я предлагаю:

<?php 
$vars = array('model','mins','texts','free-gift','network','plan'); 

foreach($vars as $value) { 
    $$value = (isset($_GET[$value]) ? $_GET[$value] : NULL); 
    unset $vars[$value]; //sweeping the NULL ones 
} 
$where_clause = $vars[0]; //the only remaining value after previous cleanup 
?> 
+0

Я нашел хорошую компиляцию примеров для сокращения if/else по адресу http://davidwalsh.name/javascript-shorthand-if-else-examples –

+0

Спасибо, но как бы выглядело мое предложение WHERE? –

+0

Отредактировал мой ответ, посмотрим, подходит ли он сейчас (@bottom) –

Смежные вопросы