2012-05-11 2 views
0

В этом коде есть проблемы с обращением к проблеме, я просто хочу получить все данные из строки таблицы, если пользователь выбрал «показать все» в меню выбора.получить все значения в том, где статья

вот меню выбора!

так, это меню захватить данные из этой таблицы, но если он выбирает все, что подходящий код вторя между значением параметра :)

<b>speciality:</b> <select id="main_mav" name="speciality"> 
<option value="none">Select speciality:</option> 
<option value=""> All specialities </option> 
<?php 

     $result = mysql_query('SELECT speciality FROM visits') or die(mysql_error()); 
     while ($row = mysql_fetch_assoc($result)) { 
       echo '<option value="'.$row['speciality'].'">'.$row['speciality'].'</option>'; 
     } 
?> 
</select><br /> 

Это Отправить форму!

if ($region=="All regions"){ 


       $region=$_POST['""']; 
      } 
      else ($region=$_POST['region']); 

      $date1 =$_POST['from_date']; 
      $date2 = $_POST['to_date']; 
      $product=$_POST['product']; 
      $speciality=$_POST['speciality']; 
      $type=$_POST['visit_type']; 

sql="SELECT id, customer_name, seller_1_name, seller_2_name FROM visits Where (speciality ='$speciality') AND (visit_type ='$type') AND (product ='$product') AND (region ='$region') AND (visit_date BETWEEN '$date1' AND '$date2')"; 
$result=mysql_query($sql); ## This line is new. 
$num=mysql_numrows($result); 
$row = mysql_fetch_array($result); 

Каков правильный код для ввода, если пользователь выбрал «показать все в меню перетаскивания»?!

+1

** Ваш код уязвим для SQL-инъекции. ** Вы * действительно * должны использовать подготовленные операторы, в которые вы передаете переменные в качестве параметров, которые не оцениваются для SQL. Если вы не знаете, о чем я говорю, или как это исправить, прочитайте рассказ о [Bobby Tables] (http://bobby-tables.com). – eggyal

ответ

2

Вам действительно нужно санировать ваши входы, по крайней мере, с mysql_real_escape_string!

На ваш вопрос: просто проверьте, нет ли $speciality и сгенерируйте другой запрос без условия (speciality ='$speciality').

+0

mysql_real_escape_string устарел, и необходимо использовать PDO или, по крайней мере, функции mysqli_ * – AlanFoster

+1

Я знаю, но объяснение того, как изменить весь код OP для использования PDO, выходит далеко за рамки вопроса. Вот почему я сказал «по крайней мере». – bfavaretto

+0

+1 для быстрого нахождения условия. :) Кроме того, @AlanFoster, видя, что OP использует команды 'mysql_', которые также устарели, я не вижу проблемы с этим. Похоже, он все еще учится, поскольку это основной вопрос, поэтому я бы предположил, что безопасность не является наивысшим приоритетом. =] –

0

С тех пор как ваши HTML-ссылки «специальностей» и ваши «ссылки на PHP» относятся к «регионам», я собираюсь просто придерживаться «регионов», но вот идея.

if ($region=="All regions"){ 
     $sql = 'SELECT id, customer_name, seller_1_name, seller_2_name, FROM visits'; 
    } else { 
     $region  = mysql_real_escape_string($_POST['region']); 
     $date1  = mysql_real_escape_string($_POST['from_date']); 
     $date2  = mysql_real_escape_string($_POST['to_date']); 
     $product = mysql_real_escape_string($_POST['product']); 
     $speciality = mysql_real_escape_string($_POST['speciality']); 
     $type  = mysql_real_escape_string($_POST['visit_type']); 
     $sql  = "SELECT id, customer_name, seller_1_name, seller_2_name FROM visits Where (speciality ='$speciality') AND (visit_type ='$type') AND (product ='$product') AND (region ='$region') AND (visit_date BETWEEN '$date1' AND '$date2')"; 
    } 

$result = mysql_query($sql); ## This line is new. 
$num = mysql_numrows($result); 
$row = mysql_fetch_array($result); 
Смежные вопросы