2012-10-05 21 views
6

Estoy creando un sistema de cotización para nuestra empresa y he tenido un pequeño problema. Aquí está el resumen; Tengo dos tablas, una con nombre de datos y otra con nombre de cremallera. El cliente ingresa su género, edad, si usa tabaco, código postal y estado.Salida de matriz Mysql en PHP

Aquí está la tabla de datos:

image

Aquí está la tabla de cremalleras:

image

He pregunté las dos tablas a unirse sobre la base de código de búsqueda postal . Aquí está la consulta que estoy usando:

SELECT data.Monthly_Rate, zips.ZIP_LOOKUP_CODE AS Expr1, zips.State, zips.County, zips.City, zips.Zipcode 
FROM data INNER JOIN 
zips ON data.ZIP_LOOKUP_CODE = zips.ZIP_LOOKUP_CODE 
WHERE (zips.Zipcode = '$zipcode') AND 
(data.Company_Old LIKE '%Blue Cross%') AND 
(data.Plan IN ('A','F','F (High)','G','N')) AND 
(data.Gender = '$gender') AND 
(data.Age = '$age') AND 
(data.Tobacco = '$tobacco') AND 
(data.State = '$state'); 

Ahora lo que quiero hacer es la producción de este en php en una tabla. El problema con el que me estoy cruzando es que hay varias letras de Plan bajo la columna "Plan". Solo quiero devolver 5 diferentes, pero el problema es que algunas empresas no ofrecen los 5 de esos planes, por lo que en este caso, cuando publico la matriz, la tasa de un determinado plan se alineará en la columna incorrecta. en la mesa.

Básicamente, no sé cómo alinear los datos correctamente en la columna específica en la que debería estar. En un escenario donde un plan A, F y N solo están disponibles para la empresa, llenará el primero tres campos, y la tasa para el plan N no se alineará en la columna N del plan.

Necesito encontrar la manera de asociar una tasa determinada con la letra Plan, y publicarla correctamente en la tabla. En el siguiente ejemplo, la tarifa del Plan A es de $ 111.40, el Plan F es de 135.37 y la tasa del Plan N es de $ 96.52. Como puede ver, la tasa del Plan N no se está alineando correctamente. ¿Cómo hago para arreglar esto?

salida de la tabla:

image

Esto es lo que estoy usando para dar salida a la matriz en PHP:

while($row = mysql_fetch_array($PlanRates)) 
{ 
$Plan = "$" . number_format($row['Monthly_Rate'], 2, '.', ''); 
echo "<td align='center'>$Plan</td>";   
} 
echo "</tr>"; 
mysql_free_result($PlanRates); 

Respuesta

2

Recuperar el plan, así como en la consulta SQL

SELECT data.Monthly_Rate, data.Plan ... 

A continuación, utilice el be código bajo

while($row = mysql_fetch_array($PlanRates)) { 
    $Plans[$row['Plan']] = "$" . number_format($row['Monthly_Rate'], 2, '.', ''); 
} 
echo "<td align='center'>".(isset($Plans['A']) ? $Plans['A'] : '')."</td>"; 
echo "<td align='center'>".(isset($Plans['F']) ? $Plans['F'] : '')."</td>"; 
echo "<td align='center'>".(isset($Plans['F (High)']) ? $Plans['F (High)'] : '')."</td>"; 
echo "<td align='center'>".(isset($Plans['G']) ? $Plans['G'] : '')."</td>"; 
echo "<td align='center'>".(isset($Plans['N']) ? $Plans['N'] : '')."</td>"; 

Sin embargo, no debería mezclar su lógica de procesamiento de datos y su presentación de esta manera. Debe usar una función desde la cual ejecutar la consulta y devolver los datos como una matriz. Luego itere sobre la matriz en el marcado HTML.

+0

Mihai, gracias por eso. Funcionó. ¿Qué debo hacer en la instancia si ninguno de los 5 planes se recupera? En este momento, si no se recupera ninguno para esa compañía específica, se muestran s en blanco. No quiero mostrar tds en blanco, simplemente no mostrar nada si los 5 planes no están disponibles. – Eric

+0

Luego debe mover el bucle 'while' antes de iniciar' '. A continuación, coloque el '' y todos los '' dentro de algo como 'if (sizeof ($ Plans)> 0) {echo" "; echo " air4x