Foros del Web » Programando para Internet » PHP »

Insertar datos en un formulario

Estas en el tema de Insertar datos en un formulario en el foro de PHP en Foros del Web. Hola a todos, Tengo un formulario con varios controles (combos, cajas de texto,..), relleno un combo con una consulta a una BBDD, y despues cuando ...
  #1 (permalink)  
Antiguo 25/08/2004, 04:05
 
Fecha de Ingreso: agosto-2004
Mensajes: 83
Antigüedad: 13 años, 3 meses
Puntos: 0
Insertar datos en un formulario

Hola a todos,

Tengo un formulario con varios controles (combos, cajas de texto,..), relleno un combo con una consulta a una BBDD, y despues cuando eligo un elemento de dicho combo, hago otra consulta a la BBDD.
Mi problema es que no consigo con los resultados de la consulta última poner el valor a cualquier control ya 'creado' en el formulario.

Gracias de antemano.
  #2 (permalink)  
Antiguo 25/08/2004, 06:53
 
Fecha de Ingreso: diciembre-2003
Mensajes: 213
Antigüedad: 14 años
Puntos: 0
Como no pongas algo del codigo que tengas echo lo llevamos claro
  #3 (permalink)  
Antiguo 25/08/2004, 07:33
 
Fecha de Ingreso: agosto-2004
Mensajes: 83
Antigüedad: 13 años, 3 meses
Puntos: 0
Perdón, aquí está el código:

<?php
$link=mysql_connect("localhost","root","root");
mysql_select_db("LUGERDB",$link);
if (isset($_POST['opcion'])){
$id=$_POST['opcion'];
$consult='SELECT CLIE_NUMERO,DIRE_DIRECCION FROM direccion_cliente WHERE CLIE_NUMERO='.$id;
$result=mysql_query($consult,$link) or die(mysql_error());
while($fil= mysql_fetch_array($result))
{
// AQUI ES DONDE QUIERO ASIGNAR EL VALOR DEL CAMPO DIRE_DIRECCION
// A LA CAJA DE TEXTO 'texto' DEL FORMULARIO 'form1'.
}
mysql_free_result($result); // Liberar memoria usada por consulta.
}
?>

<HTML>

<HEAD>
<TITLE>Titulo de la pagina</TITLE>

<script language="JavaScript">
function carga(){
document.form1.submit();
}
</script>

</HEAD>
<BODY>

<FORM name="form1" method="post" action="<?=$PHP_SELF?>">
<SELECT name="opcion" onChange="carga()">
<?php
$consulta="select CLIE_NUMERO,CLIE_ALIAS from CLIENTE";
$resultado=mysql_query($consulta,$link);
while($fila=mysql_fetch_array($resultado))
{
echo "<option value=".$fila['CLIE_NUMERO'].">".$fila['CLIE_ALIAS']."</option>";
}
?>
</SELECT>

<SELECT name="otra_opcion">
</SELECT>
<input name="texto" type="text" id="texto" value="WW">
</FORM>

</BODY>

</HTML>

Gracias.
  #4 (permalink)  
Antiguo 25/08/2004, 07:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Según la consulta SQL que haces .. supongo que el resultado será 0 o 1 registro .. no más.

Entonces ..podrías usar:

En lugar de:

Código PHP:
while($filmysql_fetch_array($result))

// AQUI ES DONDE QUIERO ASIGNAR EL VALOR DEL CAMPO DIRE_DIRECCION
// A LA CAJA DE TEXTO 'texto' DEL FORMULARIO 'form1'.

Usar: (sin bule . sólo esperas 1 o 0 resultados (registros))

Código PHP:
if (mysql_num_rows($result)) == 1){
    
$filmysql_fetch_array($result);
} else {
   echo 
"No hay resultados";

Y en tu <input ...>

Código PHP:
<input name="texto" type="text" id="texto" value="<? echo $fil['DIRE_DIRECCION'?>">
o el campo que quieras ...(de los que indicas en tu SELECT campos FROM ....)

Por lo demás .. te vendría bien tener ese código (al menos ese IF() completo que dejé como ejemplo) en el punto que deseas mostrar tu mensaje de "No hay resultados" .. por ejemplo bajo tu <body> en algún punto ... (o usas una variable y le haces un <? echo $mensajito ?> donde gustes y lo dejas el código PHP arriba "separado" ..)

Un saludo,

Última edición por Cluster; 25/08/2004 a las 07:59
  #5 (permalink)  
Antiguo 25/08/2004, 08:19
 
Fecha de Ingreso: agosto-2004
Mensajes: 83
Antigüedad: 13 años, 3 meses
Puntos: 0
No me actualiza la caja de texto cuando escogo un elemento del combo 'opcion'.

Y es un registro porque estoy probando con un ejemplo sencillo (caja de texto), pero pueden ser más y rellenaré un combo box.

Código:

<?php
$link=mysql_connect("localhost","root","root");
mysql_select_db("LUGERDB",$link);
if (isset($_POST['opcion'])){
$id=$_POST['opcion'];
$consult='SELECT CLIE_NUMERO,DIRE_DIRECCION FROM direccion_cliente WHERE CLIE_NUMERO='.$id;
$result=mysql_query($consult,$link) or die(mysql_error());
while($fil= mysql_fetch_array($result))
{
// AQUI ES DONDE QUIERO ASIGNAR EL VALOR DEL CAMPO DIRE_DIRECCION
// A LA CAJA DE TEXTO 'texto' DEL FORMULARIO 'form1'.
}
mysql_free_result($result); // Liberar memoria usada por consulta.
}
?>

<HTML>

<HEAD>
<TITLE>Titulo de la pagina</TITLE>

<script language="JavaScript">
function carga(){
document.form1.submit();
}
</script>

</HEAD>
<BODY>

<FORM name="form1" method="post" action="<?=$PHP_SELF?>">
<SELECT name="opcion" onChange="carga()">
<?php
$consulta="select CLIE_NUMERO,CLIE_ALIAS from CLIENTE";
$resultado=mysql_query($consulta,$link);
while($fila=mysql_fetch_array($resultado))
{
echo "<option value=".$fila['CLIE_NUMERO'].">".$fila['CLIE_ALIAS']."</option>";
}
?>
</SELECT>

<SELECT name="otra_opcion">
</SELECT>
<input name="texto" type="text" id="texto" value="<?=$fila['DIRE_DIRECCION']; ?>" >
</FORM>

</BODY>

</HTML>

Saludos.
  #6 (permalink)  
Antiguo 25/08/2004, 08:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. en principio el ejemplo que te puse era para evitar tener que usar el while() . (no sé por qué no lo quitas ...)

Fijate.. en (y quita el while .. que no hace nada ..):
while($fil= mysql_fetch_array($result))

usas $fil . y mas abajo usas $fila en:
<input name="texto" type="text" id="texto" value="<?=$fila['DIRE_DIRECCION']; ?>" >

DEBE ser $fil .. por qué es el resultado de tu primera consulta SQL (ya que usas otra más para mostar ese <select>

Un saludo,
  #7 (permalink)  
Antiguo 25/08/2004, 08:47
 
Fecha de Ingreso: agosto-2004
Mensajes: 83
Antigüedad: 13 años, 3 meses
Puntos: 0
Gracias, he conseguido que me cargue el value de la caja de texto 'texto'.

Pero como lo hago para rellenar un combo con los registros devueltos de esa consulta,
siendo más de un registro.
Debo usar un combo.

te envio como me ha funcionado:

<input name='texto' type='text' id='texto' value="<?=$dire;?>">

$dire es una variable que he creado en php:
$dire=$fil['DIRE_DIRECCION'];

Gracias.
  #8 (permalink)  
Antiguo 25/08/2004, 09:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Pero como lo hago para rellenar un combo con los registros devueltos de esa consulta,
siendo más de un registro.
Debo usar un combo.
Pues con la misma técnica que ya usas para tu otro combo donde recorres los N registros que puedan resultar de tu consulta bajo un bucle while() y el xxx_fecht_array() ...

Un saludo,
  #9 (permalink)  
Antiguo 25/08/2004, 10:01
 
Fecha de Ingreso: agosto-2004
Mensajes: 83
Antigüedad: 13 años, 3 meses
Puntos: 0
Pero este combo, ya está creado y tengo que generar los diferentes elementos segun los registros devueltos en la consulta.
  #10 (permalink)  
Antiguo 25/08/2004, 11:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Que significa que ese "combo" está creado? ..

Así haces un "combo" generado dinámicamente con los datos de una consulta SQL:

Código PHP:
<SELECT name="opcion">
<?php
$consulta
="select CLIE_NUMERO,CLIE_ALIAS from CLIENTE";
$resultado=mysql_query($consulta,$link);
while(
$fila=mysql_fetch_array($resultado))
{
echo 
"<option value=".$fila['CLIE_NUMERO'].">".$fila['CLIE_ALIAS']."</option>";
}
?>
</SELECT>
Un saludo,
  #11 (permalink)  
Antiguo 25/08/2004, 11:51
 
Fecha de Ingreso: agosto-2004
Mensajes: 83
Antigüedad: 13 años, 3 meses
Puntos: 0
Pues que está en el formulario, pero no he insertado los diferentes valores.

<SELECT name="otra_opcion">
<option value="vacio">Direccion</option>
</SELECT>

Los 'options' los quiero crear cuando hago la consulta.
  #12 (permalink)  
Antiguo 25/08/2004, 12:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues insisto en que te fijes!!! .. ya estás generadon las opciones de un Select en otro punto de tu código .. No sé si entendistes como funciona lo que hicistes pero para este otro caso es exactamente lo mismo (técnica).

Un saludo,
  #13 (permalink)  
Antiguo 26/08/2004, 03:22
 
Fecha de Ingreso: agosto-2004
Mensajes: 83
Antigüedad: 13 años, 3 meses
Puntos: 0
Creo que he conseguido lo que buscaba, ya te iré comentando.
Es que soy un poco torpe.

Muchas gracias.
  #14 (permalink)  
Antiguo 27/08/2004, 06:53
 
Fecha de Ingreso: agosto-2004
Mensajes: 83
Antigüedad: 13 años, 3 meses
Puntos: 0
Hola de nuevo,

Sigo con problemas, ahora estoy intentando insertar los datos del formulario pero cuando hago un evento onclick de una imagen, llamo a una function de javascript para que me realice esto, pongo el ejemplo:

function Inserta(){
<?
$cad="INSERT INTO cliente VALUES ('1111','cc','v3','v4')";
$consulta=mysql_query($cad,$link) or die(mysql_error());
?>
}

El problema viene que me lo ejecuta sin hacer click en la imagen, p. ej. cuando refresco la página.

Muchas Gracias.
  #15 (permalink)  
Antiguo 27/08/2004, 09:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Esque no puedes mezclar PHP con Javascript ..

PHP es lo primero que se ejecuta (en el servidor) .. tus eventos son en javacript y se ejecutan en el cliente .. así que si tu haces un "evento" en el cliente que ha de referenciarse a algo en un script PHP (código, función .. etc de este) debes de "recargar tu página" o enviarla a dicha página (script mejor dicho)

Es decir . .tu "evento" tiene que llamar a tu script PHP de proceso pasandole los parámetros que requieras y tal vez alguna otra variable de control (si es que es un mismo script el que pueda hacer várias cosas) para que sepa "PHP" (tu lógica) que es lo que debe hace en ese caso concreto.

** Podría ser que tu evento javacript .. capture no sé que variable de tu formulario o de otro sitio (fijas por ejemplo) y redireccione hacia tu script PHP de proceso:

..... onClick="window.location=procesa.php?accion=insert ar&dato=valor" .....

** O si usas un formulario HTML .. lo más simple es que tu "javacript" (evento) haga un "submit" del mismo .. (ahora no me acuerdo como se hace en javacript).

Un saludo,
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:49.