Foros del Web » Programando para Internet » PHP »

Copiar información

Estas en el tema de Copiar información en el foro de PHP en Foros del Web. Tengo una tabla con información de registros de una base de datos. En la misma página he creado un formulario con campos de texto entre ...
  #1 (permalink)  
Antiguo 26/07/2007, 05:31
 
Fecha de Ingreso: julio-2007
Mensajes: 50
Antigüedad: 16 años, 9 meses
Puntos: 0
Copiar información

Tengo una tabla con información de registros de una base de datos. En la misma página he creado un formulario con campos de texto entre otras cosas. Mi intención es cargar los campos de texto con los datos de la tabla. Así cuando haga clic sobre una fila de la tabla, se rellenan los campos de texto con la información de este registro en concreto. He utilizado innerHTML pero este comando solo permite copiar campo por campo. Alguna otra idea? Gracias
  #2 (permalink)  
Antiguo 26/07/2007, 06:27
Avatar de franquero  
Fecha de Ingreso: julio-2005
Mensajes: 179
Antigüedad: 18 años, 9 meses
Puntos: 1
Re: Copiar información

Buenas.

Idea al vuelo: supongamos que la fila de tu tabla es

Código PHP:
<tr><td>$row['nombre']</td><td>$row['apellido']</td></tr
Le añadimos un botoncito
Código PHP:
<tr><td>$row['nombre']</td><td>$row['apellido']</td><td><a href="$_SERVER['PHP_SELF']?nombre=$row['nombre']&apellido=$row[apellido]"><img src="..."></a></td></tr
Y el formulario:
Código PHP:
//Creamos las variables que van a tomar por defecto los inputs como valor 
//Si hemos enviado variables a través del botón les asignamos ese valor
if (isset($_GET['nombre'])) {
$nombre $_GET['nombre'];
$apellido $_GET['apellido'];
} else {
//Si no, las dejamos vacías
$nombre '';
$apellido '';
}
<
form action="loquesea" method="POST">
Nombre: <input type="text" name="nombre" value="$nombre">
Apellido: <input type="text" name="apellido" value="$apellido">
<
input type="submit" value="enviar">
</
form
Pega de hacer esto: que la consulta que muestra todas tus filas con registros de la tabla se repetiría al pulsar el botón, y que si estás trabajando con variables tendrías que enviarlas de nuevo. No se me ocurre ninguna forma de hacerlo sin recargar la página, por lo que el problema de la doble consulta estará siempre, a no ser que uses AJAX. Otra forma de evitarlo sería colocando el formulario en una página diferente.

Espero que te sirva de algo.
Saludos
__________________
Es una suerte que la sociedad libre sea más productiva, porque de no haberlo sido jamás se habría tolerado.
  #3 (permalink)  
Antiguo 27/07/2007, 01:58
 
Fecha de Ingreso: julio-2007
Mensajes: 50
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Copiar información

Hago lo siguiente en la tabla, como puedes ver quiero copiar 3 campos:

Código PHP:
<td><a href="$_SERVER['PHP_SELF']?referencia=$row_Recordset1['referencia']&descripcion_trabajo=$row['descripcion_trabajo']&justificacion_trabajo=$row['justificacion_trabajo']">Prueba</a></td
Después introduzco este código antes del formulario:

Código PHP:
if (isset($_GET['referencia'])) {
      
$referencia=$_GET['referencia'];
      
$descripcion_trabajo=$_GET['descripcion_trabajo'];
      
$justificacion_trabajo=$_GET['justificacion_trabajo'];
      } else {
      
$referencia='';
      
$descripcion_trabajo='';
      
$justificacion_trabajo='';
      } 
En el formulario hago lo siguiente:

<td><input type="text" name="referencia" size="32" value="$referencia"></td>

<td><input name="descripcion_trabajo" cols="50" rows="5" value="$descripcion_trabajo"></textarea></td>

<td><input name="justificacion_trabajo" cols="50" rows="5" value="$justificacion_trabajo"></textarea></td>


Al ejecutar la aplicación y hacer clic sobre una de las filas no copia el contenido de la tabla sobre los input del form. Sale el típico "No se encontró la pagina" y esta url: http://localhost/$_SERVER['PHP_SELF']?referencia=$row_Recordset1['referencia']&descripcion_trabajo=$row['descripcion_trabajo']&justificacion_trabajo=$row['justificacion_trabajo']

¿En que estoy fallando? Gracias
  #4 (permalink)  
Antiguo 27/07/2007, 20:35
Avatar de franquero  
Fecha de Ingreso: julio-2005
Mensajes: 179
Antigüedad: 18 años, 9 meses
Puntos: 1
Re: Copiar información

Estás utilizando variables PHP sin indicar que es código PHP , por lo que al cargar la página no se lee el contenido de las variables, sino su nombre. Pido disculpas por la parte que me toca en mi código del ejemplo anterior.

Siempre que quieras embeber código PHP dentro de HTML tienes que indicarlo con las etiquetas de inicio y fin de PHP: <?php ....... ?>

Código PHP:
//Nota: si incluyes una variable de array dentro de una cadena: print " ...  $_SERVER[PHP_SELF] .... "; no pongas comillas simples. Puedes separar con puntos para organizarte mejor: print $_SERVER['PHP_SELF'] . '?referencia=' . $row_Recordset1['referencia']....
<td><a href="<?php print "$_SERVER[PHP_SELF]?referencia=$row_Recordset1[referencia]&descripcion_trabajo=$row[descripcion_trabajo]&justificacion_trabajo=$row[justificacion_trabajo]"?>">Prueba</a></td>
Antes del formulario
Código PHP:
<?php
if (isset($_GET['referencia'])) {
      
$referencia=$_GET['referencia'];
      
$descripcion_trabajo=$_GET['descripcion_trabajo'];
      
$justificacion_trabajo=$_GET['justificacion_trabajo'];
      } else {
      
$referencia='';
      
$descripcion_trabajo='';
      
$justificacion_trabajo='';
      }
?>
En el formulario
Código HTML:
<td><input type="text" name="referencia" size="32" value="<?php print $referencia; ?>"></td>

<td><textarea name="descripcion_trabajo" cols="50" rows="5"><?php print $descripcion_trabajo; ?></textarea></td>//Textarea no utiliza value. 

<td><textarea name="justificacion_trabajo" cols="50" rows="5"><?php print $justificacion_trabajo; ?></textarea></td> 
EJEMPLO COMPLETO
Código HTML:
<html>

<head>
  <title></title>
</head>

<body>

<a href="<?php print $_SERVER['PHP_SELF'].'?nombre=Fran&apellido=Quero'; ?>">Fran Quero</a><br><br>

<?php
if (isset($_GET['nombre'])) {
	$nombre = $_GET['nombre'];
	$apellido = $_GET['apellido'];
	} else {
		$nombre = '';
		$apellido = '';
		}
?>

<form action="#" method="POST">
Nombre: <input type="text" name="nombre" value="<?php print $nombre; ?>"><br><br>
Apellido: <input type="text" name="apellido" value="<?php print $apellido; ?>">
</form>

</body>

</html> 
Saludos.

PD. ¿No te has planteado alguna forma de evitar que se repita la consulta?
__________________
Es una suerte que la sociedad libre sea más productiva, porque de no haberlo sido jamás se habría tolerado.
  #5 (permalink)  
Antiguo 30/07/2007, 01:18
 
Fecha de Ingreso: julio-2007
Mensajes: 50
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Copiar información

Franquero funciona perfectamente!!!

Tienes razón, repetir la consulta tiene un inconveniente, se pierden los registros que tenía filtrados en la tabla.

Me he planteado utilizar un lenguaje de lado del cliente como JavaScript para no tener que realizar consultas pero creía que era más sencillo con php.

Voy a intentar arreglar este problema, si tienes alguna idea?

Saludos
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 19:23.