Vector o variables en PHP??

Imagen de fsigu

Forums: 

Amigos como estan, estoy incursionando en el mundo del php, y quisiera hacerles una cunsulta segun sus experiencias a ver si me pueden ayudar, estoy asiendo los famosos anexos transaccionales del SRi para una empresa en php,tengo que manejar una grilla de 40 columnas y una el numero de filas que correspondan al numero de transacciones de una empresa, cuanto presento esto en pantalla se pueden modificar los valores de cada fila si es que se requiere, ahora mi pregunta es la siguiente, Es mas recomendable manejar todo esto en un vector, o manejar en un bucle con varias variables?? Cual es la mejor forma y mas rapida, porque yo lo estaba haciendo en un vector y un amigo me dijo que se puede hacer mas lento que mejor le ponga en un bucle y le maneje en varias variables, espero que alguien haya hecho algo parecido y me pueda dar algun consejo...

Gracias de antemano

De ley es más rápido en el

Imagen de deathUser

De ley es más rápido en el vector, no son tantos datos como para que se te agote la memoria por crear un vector, además no le veo la ventaja de hacerlo con variables con nombres distintos y un bucle ...

bye
:)

gracias amigo por tu

Imagen de fsigu

gracias amigo por tu recomendacion la voy a seguir, ahora estoy en este dilema a ver si me puedes ayudar.
tengo este codigo

$sql= "select orden, fecha_pedido from sercab";
$conexion=conectar();
$resultado = mysql_query($sql,$conexion);
while ($linea = mysql_fetch_array($resultado, MYSQL_ASSOC))
{
for($k=0 ; $k<=41 ;$k++)
{
if ($k==0)
{
echo " ";
echo $linea[orden];
echo "\n ";
} elseif ($k==1)
{
echo " ";
echo $linea[fecha_pedido];
echo "\n ";
} elseif ($k==2)
{
$tmpsql="select retnum from retencion where movnum=$linea[orden]";
$result = mysql_query($tmpsql,$conexion);
$numr = mysql_num_rows($result);
if($numr==0)
{
$Lnumret='';
}else{
$ret=mysql_fetch_array($result);
$Lnumret=ret[retnum];
}
echo " ";
echo $Lnumret;
echo "\n ";

Bueno esa es parte del codigo el problema es que cada que realizo la consulta select retnum from retencion where movnum=$linea[orden], siempre me toma el primer valor de la variable $linea[orden], como que no se actualiza y no se cual puede ser el error por lo que siempre me muestra el numero de la retencion del primer registro, ojala y me puedan ayudar alguna persona que le haya pasado esto.

Fernando

Es correcta la sintaxis del código PHP?

Imagen de a_villacis

Está usted seguro de que el código se parsea bien? Porque

$Lnumret=ret[retnum];

no es sintaxis válida de PHP. A $ret le falta el signo dólar.

Luego de esto, he notado que su código emite el valor $linea[orden] en una celda HTML, y luego ejecuta la sentencia SQL usando el mismo valor de $linea[orden]. También ocurre que la columna correspondiente al valor directo de $linea[orden] sale con todo el mismo valor? O muestra el valor correcto distinto para cada fila, pero la retención sale idéntica a la primera columna? Para depurar esto, puede emitir la sentencia SQL con echo, para cada columna, y ver si varía.

Ademaś de esto, no creo que sea necesario ejecutar una sentencia adicional para la columna en $k=2, si la columna sercab.orden es una clave foránea respecto a retencion.movnum. Si usted ejecuta la siguiente sentencia:

SELECT s.orden, s.fecha_pedido, r.retnum,
FROM (sercab s)
LEFT JOIN retencion r ON s.orden = r.movnum
WHERE

la tercera columna tendrá el valor retnum que necesita, o NULL si no existe, sin tener que consultarlo una y otra vez. Si usted usa MySQL 3.x o 4.x se tienen que quitar los paréntesis alrededor de sercab s. Consulte su manual de MySQL para todas las minucias de LEFT JOIN.

Si usted sabe que hay exactamente 42 columnas (o cualquier otro número fijo), no es necesario embeber una lista de if ($k == VALOR) dentro de un for ($k=0;$k<=41;$k++). Cancele entre sí las dos estructuras de control, y ponga directamente las sentencias en orden:

/* Para columna 0 */
echo " ";
echo $linea[orden];
echo "\n ";

/* Para columna 1 */
echo " ";
echo $linea[fecha_pedido];
echo "\n ";

/* Para columna 2, etc */

O incluso puede hacer:

/* Emitir columnas 0..15 */
echo "$linea[orden]$linea[fecha_pedido] ...";
/* La columna 16 requiere tratamiento especial, etc. */

perl -e '$x = 2.4; print sprintf("%.0f + %.0f = %.0f\n", $x, $x, $x + $x);'

perl -e '$x = 2.4; print sprintf("%.0f + %.0f = %.0f\n", $x, $x, $x + $x);'