Foros del Web » Programando para Internet » PHP »

manejo de formularios, autocompletar datos

Estas en el tema de manejo de formularios, autocompletar datos en el foro de PHP en Foros del Web. hola, les cuento que estoy intentando hacer una pagina web en la cual tengo un formulario que envia datos a una base de datos mysql, ...
  #1 (permalink)  
Antiguo 13/07/2006, 13:04
 
Fecha de Ingreso: junio-2006
Mensajes: 166
Antigüedad: 11 años, 6 meses
Puntos: 3
manejo de formularios, autocompletar datos

hola, les cuento que estoy intentando hacer una pagina web en la cual tengo un formulario que envia datos a una base de datos mysql, hasta aca no tengo problemas...
el inconveniente esta en que quiero que algunos datos se inserten automaticamente en el formulario para facilitar y agilizar el completado del mismo. el formulario se autocompletaria con datos existentes en la base de datos. no se como hacer esto.
les pido que me den una mano, tengo que hacer la pagina web para aprobar una materia de la facu!!!
gracias!
  #2 (permalink)  
Antiguo 13/07/2006, 13:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 11 años, 6 meses
Puntos: 2122
Puedes darle una leida a esto:
https://bpcatalog.dev.java.net/nonav...te/design.html

Te explica como crear un campo con autocomplete, nescesitas usar AJAX para que los campos se llenen al momento, saludos.
  #3 (permalink)  
Antiguo 13/07/2006, 13:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. en tu contexto .. que sería "autocomplementar" .. en que se basa ese proceso. Pon ejemplos.

Si te refieres a lo que hace por ejemplo "google" son su autocomplementación .. deberías usar técnicas basadas en "Ajax" (creo que por ahí va tu caso ..). En este caso hay poco de PHP por médio (o fuera de lo común) y sí mucho uso de las técnicas de Ajax: javascript, etc ...

Tenemos un foro destinado a la temática "Ajax" para que lo veas (busca en ese foro autocomplementar ... veras opciones ya hechas).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 13/07/2006, 13:31
 
Fecha de Ingreso: junio-2006
Mensajes: 166
Antigüedad: 11 años, 6 meses
Puntos: 3
quisas si les doy mas informacion de lo que quiero hacer, me entenderan mejor, los datos que completo en el formulario son para hacer un libro de compra de iva y un libro de ventas de iva, en el cual el numero de proveedor y otros valores pueden ser reconocidos al completar el formulario y evitar que
tengamos que escribirlos.
por otro lado se me ocurrio hacer una buqueda a la base de datos mysql (ejemplo buscar el numero de o cliente proveedor) y un boton submit y q los resultados aparescan en los campos de entrada del formulario. de esta manera el usuario completa los datos que faltarian para completar el libro de iva y "todos" los datos incluyendo los de la busqueda anterior se almacenen en la base de datos, nose si esto se puede hacer ustedes me diran.
gracias!
  #5 (permalink)  
Antiguo 13/07/2006, 13:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Lo dicho .. si quieres simular bajo este ambiente de desarrollo lo que no está diseñado en principio (bajo WEB 1.0) tendrás que recurrir a lo que te hemos propuesto:

AJAX

Tienes un foro para tal fin . .consulta por allá esa opción.

Otras soluciones .. "levantar ventanas" .. hacer busquedas por esa ventana y devolver el resultado a cierto campo de tu formulario (todo esto se manejaría con javascript el traspaso de datos entre ventanas<->formularios..)

Todo lo demás implicaría otro tipo de procesos, .. pedir tu dato, buscarlo y ofrecer el registro(s) encontrados en modo "edición" .. con un formulario con los datos pre-cargados.

Pero, por otro lado .. esa "filosofía" de llenar un formulario con ciertos datos cuando estás en un sistema "relacional" no sirve de mucho, .. tu sólo necesitas tomar ese "cliente" o "proveedor" o lo que sea como "identificativo" y propagarlo en tus formularios o donde necesites (por sesiones? .. por campos ocultos? ..), ese mismo dato lo usas para consultarlo otra vez a tu BBDD y mostrarlo como "cabecera" tal vez o guía para que se sepa a cuenta de qué estás o vas a introducir el resto de datos relacionados ...

Realmente no sé que que es lo que tienes que hacer . .ayudaría ver lo que tienes hecho (código y sobre todo de como queda) .. ahí se podrán ver mejor que alternativas te vendrían mejor e ir concretando que es lo que no sabrías hacer.

Un saludo,

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 13/07/2006, 14:37
 
Fecha de Ingreso: junio-2006
Mensajes: 166
Antigüedad: 11 años, 6 meses
Puntos: 3
formularios

bueno voy a detallarte bien todo para que puedas ayudarme, creo que no me exprese bien anteriormente.
para hacer un libro de IVA VENTAS
voy a tener una base de datos "CLIENTES", donde la tabla contendra los siguientes datos
NRO - NOM Y AP O RAZON SOCIAL - CUIT - DOMICILIO - TELEFONO - CP

y los datos de entrada del formulario seran los propios de un libro de iva ventas:

FECHA - TIPO DE COMPROB - NRO DE COMPROB - NRO CL - NOM Y AP O RAZON SOCIAL - CUIT - TIPO CONT - TIPO FACT - IMPO NETO GRAV - CONCEPTO NO GRAV - IVA LIQUIDADO - IVA NO INSC - CF - PERCEPCION - TOTAL FACTURADO

Estas son las columnas del libro de iva ventas, los datos ingresados a traves del formulario seran guardados tambien en una base de datos.

Lo que quiero hacer es que de alguna manera los datos del cliente se completen solos por ejemplo al tipear el nro de cuit o al poner el nombre. por eso se me habia ocurrido en un principio hacer una busqueda con el numero de cuit y que los resultados se impriman en el formulario.

tengo un ejemplo hecho con otras tablas que no me salio bien, una vez que entiendas lo que quiero hacer te lo envio, si te lo mando ahora puedo confundirte mas,
muchas gracias!
  #7 (permalink)  
Antiguo 13/07/2006, 16:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Lo que no entiendo es por qué tienes que almacenar -rendundantemente- los datos del cliente en ese "libro de ventas" .. Podrían y deberían quedar relacionados por el "ID" de cliente de la tabla "clientes" ..

Esto es parte del concepto de integridad referencial y relaciones en BB.DD. (no sé si lo conocías).

De esa forma tu tabla de libro de iva quedaría tipo:

id_iva
NRO CL
etc ...

Y sólo eso .. será cuando consultes tu tabla implicada dode harías una consulta SQL con "INNERT JOIN" o similar para "traerte" los datos relacionados del "CLIENTE" en ese momento .. no "repartir" redundante la información .. A no sér que esos datos deban quedar "fijos" pese que se edite la información del cliente.

Bueno . .fuera del dato que guardes. Ya te he comentado que lo que quieres hacer y tal cual lo planteas .. al estilo "aplicación de escritorio" se resolvería con las técnicas de AJAX.

Revisa este tipo de demos realizadas en Ajax (no son exactament lo que necesitas pero es la misma técnica).

http://www.dhtmlgoodies.com
http://www.i-marco.nl/demo_en/demonstratie.php

Si no quieres usar "Ajax" .. y usas sólo PHP, tendrás que recargar la página entera para pre-seleccionar esos datos de tu "Cliente" (ante un evento javascript llamar a tu script que te traiga los datos y genere ese mismo formulario con tus datos pre-establecidos).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 13/07/2006, 18:39
 
Fecha de Ingreso: junio-2006
Mensajes: 166
Antigüedad: 11 años, 6 meses
Puntos: 3
Cluster, gracias una vez mas por tu paciencia y tu ayuda, en este caso que propongo yo, se duplicaria la informacion sin necesidad pero no llevaria a error de redundancia ya que los datos de lo CLIENTES se cargan solo una vez (por cliente) y con estos mismos completaria el formulario para hacer el "libro de iva ventas" sin necesidad que cada vez que llene el formulario de iva ventas tenga que escribir y escribir los datos de los clientes. De todas maneras es buena y eficaz tu idea de identificar a los clientes con un id, si no logro lo que quiero en ultima instancia voy a hacer eso. No puedo usar ajax ya que estoy haciendo esta pagina para aprobar una materia de la facultad que lo temas de la categra no incluyen javascripts y ajax, pero eso aunque no sea el mejor camino debo usar php, html y mysql.
te voy a pegar a continuacion un ejemplo que encontre en internet que se asemeja mucho a lo que quiero hacer... busca el nro de serie de un producto, y a travez del mismo muestra todos los datos del producto impresos en forma de tabla, me pregunto si estos datos no se podrian imprimir en el campo de entrada de un formulario ej: nombre:

Código PHP:
 <INPUT TYPE= TEXT NAME=variable VALUE="<?php ........ php?>  <?
$link 
mysql_connect('localhost','root') or die(mysql_error());
mysql_select_db("prueba");

switch (
$action)
{
case 
addnew:
$engineer $_GET['engineer'];
$lot $_GET['lot'];
$serial $_GET['serial'];
$model $_GET['model'];
$defect $_GET['defect'];
$rootc $_GET['rootcause'];

mysql_query("insert into formulario values ('$engineer', '$serial', '$lot', '$model', '$defect')",$link);
mysql_close($link);

?>
<center>
<table border="1"><tr><td>
<form action="<?php $PHP_SELF ?>" method="get">
<p><strong><center>
Engineer:<input type="text" name="engineer"><br>
Lot:<input type="text" name="lot"><br>
Model:<input type="text" name="model"><br>
Defect:<input type="text" name="defect"><br>
Serial:<input type="text" name="serial"><br>
<input type="submit" value="Save!">
<input type="hidden" name="action" value="addnew">
</strong></p></center>
</form>

</td></tr></table><br>
<table border="1"><tr><td>
<form action="<?php $PHP_SELF ?>" method="get">
<p><strong><center>
Serial:<input type="text" name="serial">
<input type="submit" value="Buscar!">
<input type="hidden" name="action" value="find">
</strong></p></center>
</form>
</td></tr></table>
</center>

<?
break;

case 
find:
$serial $_GET['serial'];
$result mysql_query("select * from formulario where Serial like '%$serial%' order by Serial") or die(mysql_error());
echo 
"<table border=\"1\">";
echo 
"<strong><tr><td><p>Engineer</p></td><td><p>Lot</p></td><td><p>Serial</p></td><td><p>Model</p></td><td><p>Defect</p></td><td></tr></strong>";
while(
$row mysql_fetch_array($result))
{
echo 
"<tr><td><p>".$row['Engineer']."</p></td><td><p>".$row['Lot']."</p></td><td><p>".$row['Serial']."</p></td><td><p>".$row['Model']."</p></td><td><p>".$row['Defect']."</p></td></tr>";
}
echo 
"</table>";

?>
<center>
<table border="1"><tr><td>
<form action="<?php $PHP_SELF ?>" method="get">
<p><strong><center>
Engineer:<input type="text" name="engineer"><br>
Lot:<input type="text" name="lot"><br>
Model:<input type="text" name="model"><br>
Defect:<input type="text" name="defect"><br>
Serial:<input type="text" name="serial"><br>
<input type="submit" value="Save!">
<input type="hidden" name="action" value="addnew">
</strong></p></center>
</form>
</td></tr></table><br>
<table border="1"><tr><td>
<form action="<?php $PHP_SELF ?>" method="get">
<p><strong><center>
Serial:<input type="text" name="serial">
<input type="submit" value="Buscar!">
<input type="hidden" name="action" value="find">
</strong></p></center>
</form>
</td></tr></table>
</center>
<?
break;

default:
?>
<center>
<table border="1"><tr><td>
<form action="<?php $PHP_SELF ?>" method="get">
<p><strong><center>
Engineer:<input type="text" name="engineer"><br>
Lot:<input type="text" name="lot"><br>
Model:<input type="text" name="model"><br>
Defect:<input type="text" name="defect"><br>
Serial:<input type="text" name="serial"><br>
<input type="submit" value="Save!">
<input type="hidden" name="action" value="addnew">
</strong></p></center>
</form>
</td></tr></table><br>
<table border="1"><tr><td>
<form action="<?php $PHP_SELF ?>" method="get">
<p><strong><center>
Serial:<input type="text" name="serial">
<input type="submit" value="Buscar!">
<input type="hidden" name="action" value="find">
</strong></p></center>
</form>
</td></tr></table>
</center>
<?
}
?>
TE REPITO ESTE ES UN EJEMPLO QUE ME DIO ESA IDEA QUE TE COMENTE PERO NO ES LO QUE QUIERO HACER ESTO. SALUDOS

Última edición por Cluster; 14/07/2006 a las 09:56
  #9 (permalink)  
Antiguo 14/07/2006, 09:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Cluster, gracias una vez mas por tu paciencia y tu ayuda, en este caso que propongo yo, se duplicaria la informacion sin necesidad pero no llevaria a error de redundancia ya que los datos de lo CLIENTES se cargan solo una vez (por cliente) y con estos mismos completaria el formulario para hacer el "libro de iva ventas" sin necesidad que cada vez que llene el formulario de iva ventas tenga que escribir y escribir los datos de los clientes. De todas maneras es buena y eficaz tu idea de identificar a los clientes con un id,
Creo que no me entendistes bien .. No hablo de que el usuario ingrese los datos nuevamente o que los "traiga" automáticamente .. sino a nivel de "modelo de datos" .. Lo que llaman el concepto de "normalización" e "integridad referencial"

Esto es más un tema de diseño de Base de datos que de PHP en sí ... te recomiendo cuando tengas tiempo ver estos tutoriales:

http://www.mysql-hispano.org/page.php?id=16
http://www.mysql-hispano.org/page.php?id=27

(Si conocías el tema . .disculpa).

Cita:
No puedo usar ajax ya que estoy haciendo esta pagina para aprobar una materia de la facultad que lo temas de la categra no incluyen javascripts y ajax, pero eso aunque no sea el mejor camino debo usar php, html y mysql.
Ok .. aclarado ese punto vemos como hacerlo en PHP sólo ... en la medida de lo posible.



Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 14/07/2006, 10:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
te voy a pegar a continuacion un ejemplo que encontre en internet que se asemeja mucho a lo que quiero hacer... busca el nro de serie de un producto, y a travez del mismo muestra todos los datos del producto impresos en forma de tabla, me pregunto si estos datos no se podrian imprimir en el campo de entrada de un formulario ej: nombre:
Pues si . se trata de que definas tu formulario en lugar de esa tabla (a menos los "input" y les des valor pre-establecido a sus elementos de formulario usando las propiedades "value" de los input de HTML/formularios.

Código PHP:
echo "<form action=\"donde_proceses.php\" method=\"post\">";

echo 
"<table border=\"1\">"
echo 
"<strong><tr><td><p>Engineer</p></td><td><p>Lot</p></td><td><p>Serial</p></td><td><p>Model</p></td><td><p>Defect</p></td><td></tr></strong>"
while(
$row mysql_fetch_array($result)) 

echo 
"<tr><td><p><input type=\"input\" name=\"ingeniero[]\" value=\"".$row['Engineer']."\"></p></td><td><p>".$row['Lot']."</p></td><td><p>".$row['Serial']."</p></td><td><p>".$row['Model']."</p></td><td><p>".$row['Defect']."</p></td></tr>"
}
echo 
"tu botón de enviar ..."
echo "</form>" 
Te puse el ejemplo para un sólo campo .. haz lo mismo con el resto.

Si te fijas uso como "name" para los input la sintax:
name="ingeniero[]"

El "[]" define que generas un array .. para que así lo puedas tratar en tu script de proceso como un array que es.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 14/07/2006, 17:18
 
Fecha de Ingreso: junio-2006
Mensajes: 166
Antigüedad: 11 años, 6 meses
Puntos: 3
he tomado una decision en cuanto a la manera en que voy a hacer este sistema. voy identificar al usuario con el numero de cuit, es decir con un numero como me habias sugerido vos. me decidi porque encontre varias ventajas en esto: mayor control de errores, menor espacio ocupado (por la info que iba a duplicar), y sobre todo se me simplifica mucho la tarea a la hora de construir la pagina.
ahora tengo una nueva consulta para hacerte:
este sistema seria para pasar los libros iva compra y iva ventas de UNA sola empresa, para que este sistema sea multi-empresa, es decir que cada empresa pueda cargar sus libros de iva, que opcion tengo a demas de aplicar sesiones a los ususarios.???
  #12 (permalink)  
Antiguo 14/07/2006, 17:20
 
Fecha de Ingreso: junio-2006
Mensajes: 166
Antigüedad: 11 años, 6 meses
Puntos: 3
he tomado una decision en cuanto a la manera en que voy a hacer este sistema. voy identificar al usuario con el numero de cuit
--------------------------------
que despistada soy, usuario NO, seria proveedor o cliente...
  #13 (permalink)  
Antiguo 17/07/2006, 07:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
este sistema seria para pasar los libros iva compra y iva ventas de UNA sola empresa, para que este sistema sea multi-empresa, es decir que cada empresa pueda cargar sus libros de iva, que opcion tengo a demas de aplicar sesiones a los ususarios.???

Pues más de lo mismo . .usa otro Identificador para relacionar a que empresa corresponde el dato en tus tablas relacionadas (intenta revisar más afondo sobre "normalización" de Base de datos).

Ejemplo

tabla libro_iva

id_iva
id_empresa
id_usuario
otros_datos
etc_datos

Y por otro lado tendras una tabla de "usuarios" y otra de "empresa" para relacionarlas por su "identificador". (el "id_xxx")

A nivel de "aplicación" .... si un "Usuario X" está o va a trabajar en "tal empresa" .. creas una variable de sesión y la propagas en tus scripts para insertarla en los nuevos registros que se van creando en las tablas relacionadas ..

(Ahí no sé como es el proceso de ingreso de datos .. no sé si un usuario X se pega una "sentada" y trabaja con una empresa por un tiempo creando registros en esos "libros" o bien lo puede hacer en forma alternada para cualquier empresa .. En definitiva esto es lo de menos .. Sólo debes tener claro que es una "variable de sesión", que "vida tiene" y cuando por esas propiedades te vendría bien usarla o no sería necesario).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #14 (permalink)  
Antiguo 18/07/2006, 13:28
 
Fecha de Ingreso: junio-2006
Mensajes: 166
Antigüedad: 11 años, 6 meses
Puntos: 3
cluester, una vez mas gracias, voy a leer lo de normalizacion de bases de datos cuando tenga tiempo.
te cuento que voy a tratar de no usar sesiones ya que mis tiempos se acortan para entregar la pagina web y no se mucho de sesiones y deberia ponerme a estudiar todo ese tema, y creo q va a funcionar bien con las consultas que haga de mysql.
te cuento que hice el formulario para cargar los datos de los CLIENTES y tengo dos dudas al respecto

<?

$link = mysql_connect("localhost","root");
mysql_select_db("IVA",$link);

if(($_POST[numero] == '') or
($_POST[nombre] == '') or
($_POST[cuit] == '') or
($_POST[domicilio] == '') or
($_POST[telefono] == '') or
($_POST[cp] == '') ) {
echo 'complete con los datos de sus clietes...';

}else{

$sql = "INSERT INTO clientes (numero,nombre, cuit, domicilio, telefono, cp) VALUES
('($_POST[numero])','($_POST[nombre])', '($_POST[cuit])', '($_POST[domicilio])', '($_POST[telefono])', '($_POST[cp])')";
$result = mysql_query($sql);

echo "Información introducida.\n";

}

?>
<form method="post" action="tt.php">
Numero:<input type="Text" name="numero"><br>
Nombre:<input type="Text" name="nombre"><br>
cuit:<input type="Text" name="cuit"><br>
domicilio:<input type="Text" name="domicilio"><br>
telefono:<input type="Text" name="telefono"><br>
cp:<input type="Text" name="cp"><br>
<input type="Submit" name="submit" value="Enter information">
</form>

*este script tiene un error, resulta que inserta en la base de datos nada mas que los valores domicilio y nombre, y los de mas datos que son numericos no me los inserta, por que sera?

*otra cosa que te queria consultar, donde dice informacion introducida, me gustaria agregarle al lado el numero de "clientes" cargados ej: usted ha cargado x clientes...
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 08:06.