2015-10-27 5 views
-1

Итак, у меня есть раскрывающийся список, в котором есть список клиентов, из которых вы можете выбрать. Он использует функцию (которую кто-то еще создал), которая отлично работает, когда есть 2 или более клиентов, но умирает, когда она есть только одна. Когда есть один клиент, каждый элемент в dropdown является первым символом каждого column для этого одного клиента.SQL потянув первый символ каждого столбца

Вот функция:

function getCustomerBy($column = "",$value = "") 
     { 
      global $conn; 
      if ($value == '') 
       { 
      return(null); 
       } 
      $sel = "SELECT 
      customers.*, 
      customerStatus.code customerStatus 
      FROM customers, 
      customerStatus  
      WHERE customer_id 
      and customerStatus.id = customers.customerStatus_id and ". mysqli_real_escape_string($conn,$column) ."='". mysqli_real_escape_string($conn,$value) ."'"; 
      //  error_log($sel); 
      $run = mysqli_query($conn, $sel); 
      $check = mysqli_num_rows($run); 

      if ($check ==1) 
      { 
        $row = mysqli_fetch_assoc($run); 
        return($row); 
      } 
      elseif($check >1) 
      { 
        $rows = array(); 
        while ($row = mysqli_fetch_assoc($run)) 
      { 
        $rows[] = $row; 
      } 
        return($rows); 
      } 
      else 
      { 
        return(null); 
      } 
    } 

Я абсолютно уверен, что это ($check == 1) вещи, но я не могу работать, лучший способ сделать заново все это, чтобы сделать это работа, не вызывая другие ошибки (в частности, «не может изменить заголовок»)

Это то, что называется на странице с dropdown:

$customers = getCustomerBy('users_user_id',$user['user_id']); 

Кроме того, здесь код dropdown:

<? 
     foreach ($customers as $customer) 
     { 
     $selected = ''; 
     if (isset($gig['customers_customer_id']) && $customer['customer_id'] == $gig['customers_customer_id']) 
{ 
     $selected = ' selected '; 
} 
echo "\t<option value=\"".$customer['customer_id']."\"  $selected>".$customer['customer_company_name']."</option>"; 
} 
?> 

Broken dropdown

+0

* "(в частности," невозможно изменить заголовок ")" * - Исправить это и посмотреть, куда идет ваш код. http://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php –

+0

Эта ошибка произошла только тогда, когда я взломал код выше и, вероятно, плохо, вот почему я Я надеюсь, что кто-то сможет помочь мне направить меня в правильном направлении :) – Topher

+0

Почему бы просто не избавиться от блока 'if $ check == 1' вообще и рассматривать оба случая одинаково? – miken32

ответ

0

Код, который создает выпадающий список, ожидает массив массивов, но вместо этого, когда он представляет собой одну строку, вы передаете ему массив строк. Рассматривайте оба случая ($check > 0) то же самое.

function getCustomerBy($column = "",$value = "") 
    { 
     global $conn; 
     if ($value == '') 
      { 
     return(null); 
      } 
     $sel = "SELECT 
     customers.*, 
     customerStatus.code customerStatus 
     FROM customers, 
     customerStatus  
     WHERE customer_id 
     and customerStatus.id = customers.customerStatus_id and ". mysqli_real_escape_string($conn,$column) ."='". mysqli_real_escape_string($conn,$value) ."'"; 
     //  error_log($sel); 
     $run = mysqli_query($conn, $sel); 
     $check = mysqli_num_rows($run); 

     if($check > 0) 
     { 
       $rows = array(); 
       while ($row = mysqli_fetch_assoc($run)) 
     { 
       $rows[] = $row; 
     } 
       return($rows); 
     } 
     else 
     { 
       return(null); 
     } 
} 

Я предполагаю, что в вашем запросе есть ошибки копирования/вставки, потому что это выглядит неправильно.

0

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

Изменение:

if ($check ==1) { 
    $row = mysqli_fetch_assoc($run); 
    return($row); 
} 

Для этого:

if ($check == 1) { 
    $rows = array(); 
    $rows[] = mysqli_fetch_assoc($run); 
    return($rows); 
} 
+0

Спасибо. Это вызывает ошибку заголовка: Предупреждение: не удается изменить информацию заголовка - заголовки, уже отправленные (вывод запущен в /home/chrisstolz/public_html/managegigs.com/client/layouts/layout_head.php:8) в/home/chrisstolz/public_html/managegigs.com/client/includes/functions.php в строке 33 Строка 8: ". $ title. "| ManageGigs"; ?> – Topher

+0

Посмотрите здесь: http://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php и здесь: http://stackoverflow.com/questions/ 9707693/предупреждение, не может-модификация-заголовков-информации заголовков, уже выслали-по-ошибке –

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