2012-06-25 2 views
0

У меня есть таблица HTML, которую мне нужно заполнить значениями, захваченными из оператора select. Таблица cols заполняется массивом (0,1,2,3). Каждый из результатов запроса будет содержать строку «GATE» со значением (0-3), но не будет никакой предсказуемости для этих результатов. Один запрос мог вытащить 4 строки с значениями «GATE» 0,1,2,3, следующий запрос мог бы вытащить две строки со значениями 1 & 2 или 1 & 3.PHP - Вложенная ошибка Looping

Мне нужно иметь возможность заполнять эта таблица HTML со значениями, которые соответствуют. Так HTML COL 0 будет иметь TTL_NET_SALES из БД строки, которая также имеет значение Врата 0.

<?php 

$gate = array(0,1,2,3); 
$gate_n = count($gate); 

/* 
Database = 
my_table.ID 
my_table.TT_NET_SALES 
my_table.GATE 
my_table.LOCKED 
*/ 

$locked = "SELECT * FROM my_table WHERE locked = true"; 
$locked_n = count($locked); 

/* EXAMPLE RETURN 

Row 1: 
my_table['ID'] = 1 
my_table['TTL_NET_SALES'] = 1000 
my_table['GATE'] = 1; 

Row 2: 
my_table['ID'] = 2 
my_table['TTL_NET_SALES'] = 1500 
my_table['GATE'] = 3; 
*/ 

print "<table border='1'>"; 
print "<tr><td>0</td><td>1</td><td>2</td><td>3</td>"; 
print "<tr>"; 

for ($i=0; $i<$locked_n; $i++) 
{ 
    for ($g=0; $g<$gate_n; $g++) 
    { 
     if (!is_null($locked['TTL_NET_SALES'][$i]) && $locked['GATE'][$i] == $gate[$g]) { 
      print "<td>$".$locked['TTL_NET_SALES'][$i]."</td>"; 

     } else { 
      print "<td>-</td>"; 
     } 
    } 
} 

print "</tr>"; 
print "</table>"; 

/* 
What I want to see: 
<table border='1'> 
<tr> 
<td>0</td> 
<td>1</td> 
<td>2</td> 
<td>3</td> 
</tr> 
<tr> 
<td>-</td> 
<td>1000</td> 
<td>-</td> 
<td>1500</td> 
</tr> 
</table> 
*/ 

?> 

ответ

1

Там, кажется, ошибка в коде ... Заменить $col<$my_cols; на $col < count($my_cols)

$my_cols = array(0,1,2,3); 
for($i = 0; $i<$db_res; $i++) 
{ 
    for($col = 0; $col<$my_cols; $col++) 
    { 
     if ($db_res[$i] == $col) { 
      print "<td>".$db_res[$i]."</td>"; 
     } else { 
      print "<td>-</td>"; 
     } 
    } 
} 
+0

Спасибо, я забыл добавить это к своему коду psuedo. –

+0

Это решило вашу проблему или у вас все еще есть проблема? –

+0

Нет, это не так. Это была просто опечатка, но проблема остается. –

0

Я ошибочно перебирал второй массив, чтобы проверить равенство, когда array_search был всем, что мне нужно. http://us3.php.net/manual/en/function.array-search.php

print "<table border='1'>"; 
print "<tr>"; 

$my_arr = array(0,1,2,3); 

$vals = array(1,2); 

for ($i = 0; $i<count($my_arr); $i++) 
{ 
    print "<td>"; 
    $key = array_search($my_arr[$i], $vals); 
    if (is_int($key)){ 
     print $vals[$key]; 
    } else { 
     print "-"; 
    } 
    print "</td>"; 
} 

print "</tr>"; 
print "</table>";