Foros del Web » Programando para Internet » PHP »

Regresar el apuntador de una consulta

Estas en el tema de Regresar el apuntador de una consulta en el foro de PHP en Foros del Web. hola de nuevo camaradas ;) resulta que creo un formulario de forma dinamica con unas clases que hice (fue antes de darme cuenta de la ...
  #1 (permalink)  
Antiguo 03/09/2008, 11:36
Avatar de 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
  #2 (permalink)  
Antiguo 03/09/2008, 13:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: una ayudita?

Usa mysql_data_seek.

Saludos.

Tema trasladado a PHP General.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:59.