2012-06-25 4 views
0

J'ai un tableau HTML que j'ai besoin de remplir avec les valeurs saisies à partir d'une instruction select. Les colonnes de la table sont remplies par un tableau (0,1,2,3). Chacun des résultats de la requête contiendra une ligne 'GATE' avec une valeur de (0-3), mais il n'y aura aucune prévisibilité à ces résultats. Une requête pourrait tirer 4 lignes avec des valeurs 'GATE' de 0,1,2,3, la requête suivante pourrait tirer deux lignes avec des valeurs de 1 & 2, ou 1 & 3.PHP - Trouble Looping imbriqué

Je dois pouvoir remplir ce tableau HTML avec des valeurs qui correspondent. Donc HTML COL 0 aurait les TTL_NET_SALES de la ligne db qui a également la valeur GATE de 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> 
*/ 

?> 

Répondre

1

Il semble y avoir une erreur dans votre code ... Remplacer $col<$my_cols; par $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

Merci, j'ai oublié d'ajouter que mon pseudo-code. –

+0

Est-ce que cela a résolu votre problème ou vous avez toujours un problème? –

+0

Non, ce n'est pas le cas. C'était juste une faute de frappe, mais le problème demeure. –

0

Je faisais une boucle à travers le second tableau pour vérifier l'égalité, quand array_search était tout ce dont j'avais besoin. 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>";