Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/09/2008, 11:36
Avatar de anlhp
anlhp
 
Fecha de Ingreso: agosto-2008
Mensajes: 121
Antigüedad: 15 años, 8 meses
Puntos: 1
Pregunta Regresar el apuntador de una consulta

hola de nuevo camaradas ;)

resulta que creo un formulario de forma dinamica con unas clases que hice (fue antes de darme cuenta de la existencia de QuickForm en los paquetes PEAR), y resulta que mi formulario es un registro de ventas de una tienda, es decir, es una tabla que consta de 5 columnas, 1.Referencia articulo, 2.Importe, 3.Descuento, 4.Forma de pago(VISA, CONTADO, VALE) y 5.Vendedor, ahora, la idea es que como no se cuantos articulos(en mi caso son gafas de sol, trabajo en un sun planet XD) se venderan todos los dias, le doy la posibilidad al usuario de que si las filas agregadas inicialmente a la 'tabla-formulario' no son suficientes, pueda agregar mas.
Entonces se me ocurre que, los campos 4.Forma de pago y 5.Vendedor, los hare como una lista seleccionable html para que el usuario sepa las opciones que posee y seleccione la adecuada(si el articulo fue pagado en VISA por ejemplo) y para que en el campo VENDEDOR, seleccione unos de los vendedores que existen y no introduzca uno invalido. creo que la imagen lo explica mejor que yo:





ahora, que hice, para ahorrarme el que cada vez que se contrate un nuevo vendedor, tener que editar el formulario para que en el campo 5.Vendedores tener los valores correctos, pues cree una tabla en mysql que me maneje los vendedores que se dan de alta y baja de la tienda y luego, desde el formulario, pido los datos a mysql, y he aqui mi problema:

como tengo que estar consultando la base de datos para obtener la informacion relativa a los vendedores por cada fila de mi 'tabla-formulario', en el primero lo obtengo todo sin problemas con mysql_fetch_array($p) , pero para las otras filas necesito de alguna manera situar el apuntador $p, otra vez al principio del resultado de mi consulta, he tratado de utilizar rewind() pero sin exito.
No obstante les dejo el codigo, algo extenso, pero que mas claro que cualquier cosa que pueda yo decir:

<?php

//xhtmlInputTag y dualTag son las clases que hice para crear mi formulario de
//forma dinamica, ambas reciben una cadena con el nombre de la etiqueta
//y un array asociativo donde los pares clave-valor representan los pares //atributo="valor" de las etiquetas html creadas

$ref = new xhtmlInputTag('text', array('maxlength'=>'20', 'size'=>'15', 'class'=>'input'));
$imp = new xhtmlInputTag('text', array('maxlength'=>'6', 'size'=>'6', 'class'=>'input'));
$desc = new xhtmlInputTag('text', array('maxlength'=>'5', 'size'=>'5', 'class'=>'input'));

$pago = new dualTag('select', array('class'=>'input'));
$pago_option = new dualTag('option');

$vend = new dualTag('select', array('class'=>'input'));

//CONSULTA A BASE DE DATOS
$query = 'select nombre, id from vendedores;';
$result = mysql_safe_query($query);

//$_SESSION['num_fields'] es una variable que creo al iniciar la sesion que me
//almacena la cantidad de registros iniciales y en lo sucesivo que se iran
//agregando por el usuario

//entonces en cada ciclo de for() creo un registro del formulario
//y es cuando tengo el problema con la consulta mysql()

for($i=0; $i<$_SESSION['num_fields']; $i++)
{
echo '<tr>';
echo '<td align="center">'.($i+1).'</td>'; //esto es para enumerar los
//registros

$post_value_ref = isset($_POST['ref'.$i])?$_POST['ref'.$i]:'';
$ref->setAtt('name', 'ref'.$i);
$ref->setAtt('value', $post_value_ref);

$post_value_imp = isset($_POST['imp'.$i])?$_POST['imp'.$i]:'';
$imp->setAtt('name', 'imp'.$i);
$imp->setAtt('value', $post_value_imp);

$post_value_desc = isset($_POST['desc'.$i])?$_POST['desc'.$i]:'';
$desc->setAtt('name', 'desc'.$i);
$desc->setAtt('value', $post_value_desc);

echo '<td>'.$ref.'</td>';
echo '<td>'.$imp.'</td>';
echo '<td>'.$desc.'</td>';

$pago->setAtt('name','pago'.$i);
echo '<td>';
$pago->open();

$pago_option->addAtt(array('value'=>'visa', 'selected'=>'selected'));
$pago_option->open();
echo 'VISA';
$pago_option->close();

$pago_option->addAtt(array('value'=>'cont'));
$pago_option->open();
echo 'CONTADO';
$pago_option->close();

$pago_option->addAtt(array('value'=>'vale'));
$pago_option->open();
echo 'VALE';
$pago_option->close();

$pago->close();
echo '</td>';

echo '<td>';
$vend->open();
//AQUI ES DONDE NECESITO RECOLOCAR EL PUNTERO $RESULT
while($row = mysql_fetch_array($result))
echo '<option value="'.$row['id'].'">'.$row['nombre'].'</option>';
$vend->close();
echo '</td>';
echo '</tr>';
}

?>

esta vez me excedi con la consulta XD

lo resolvi sacando la consulta a mysql del for, y almacenando los resultados en variables, asi no tengo que conectarme consultar la base de datos una y otra vez, pero en el caso de que si me hiciese falta, alguna manera de poder 'rebobinar' ese puntero?

Última edición por GatorV; 03/09/2008 a las 13:39