Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Listar datos de varias tablas

Estas en el tema de Listar datos de varias tablas en el foro de Mysql en Foros del Web. He diseñado varias tablas de las que he sacado datos y los he unido en un listado, me gustaria sacar cada linea de datos en ...
  #1 (permalink)  
Antiguo 12/07/2006, 15:39
 
Fecha de Ingreso: julio-2006
Mensajes: 18
Antigüedad: 17 años, 9 meses
Puntos: 0
Listar datos de varias tablas

He diseñado varias tablas de las que he sacado datos y los he unido en un listado, me gustaria sacar cada linea de datos en forma de formulario ¿me podeis ayudar a conseguir este tema ?Gracias
  #2 (permalink)  
Antiguo 12/07/2006, 16:41
 
Fecha de Ingreso: junio-2002
Mensajes: 750
Antigüedad: 21 años, 10 meses
Puntos: 22
si ya las has podido listar en pantalla (en el navegador), el proceso es parecido, pero a la hora de utilitzar >> echo $row['nombre'];
se trataría de ponerlo como valor de los campos del formulario:

<form action="procesar.php" method="post" name="frm_clientes">
<input name="nombre" type="text" id="nombre" size="40" value="<?php echo $row['nombre'];?>" />
etc...
</form>
  #3 (permalink)  
Antiguo 14/07/2006, 02:58
 
Fecha de Ingreso: julio-2006
Mensajes: 18
Antigüedad: 17 años, 9 meses
Puntos: 0
Cita:
Iniciado por all-ill
si ya las has podido listar en pantalla (en el navegador), el proceso es parecido, pero a la hora de utilitzar >> echo $row['nombre'];
se trataría de ponerlo como valor de los campos del formulario:

<form action="procesar.php" method="post" name="frm_clientes">
<input name="nombre" type="text" id="nombre" size="40" value="<?php echo $row['nombre'];?>" />
etc...
</form>
Gracias por tu información .-Te explico un poco más: en cada linea hay varios conceptos, si no te he entendido mal tendría que poner un enviar en cada linea que envie los datos a procesar y los liste en forma de formulario, ¿es esto lo que tú me comentas?
  #4 (permalink)  
Antiguo 14/07/2006, 06:01
 
Fecha de Ingreso: junio-2002
Mensajes: 750
Antigüedad: 21 años, 10 meses
Puntos: 22
No, no es necesario enviar cada línea individualmente.
Se puede hacer enviando cada línea individualmente o todas de una vez.
Lo de que has unido datos en un listado supongo que será una consulta que obtiene información de varias tablas. Una vez tienes la consulta has conseguido mostrar los resultados de la consulta en pantalla.
Bien, entonces el siguiente paso que quieres es realizar el mismo listado pero en campos de formulario que permitan modificar los datos.
Para ello, o creas un formulario para cada línea (botón enviar por línea) o creas un formulario que englobe todas las líneas (un único botón enviar). Hay otras maneras de hacerlo, pero creo que con un solo formulario te puede servir. El botón enviar del formulario debería dirigir a una página que debes preparar para que realice los UPDATE de los datos en las tablas.
No sé si está muy claro

Salu2!!
  #5 (permalink)  
Antiguo 14/07/2006, 07:19
 
Fecha de Ingreso: julio-2006
Mensajes: 18
Antigüedad: 17 años, 9 meses
Puntos: 0
Te concreto algo más: en pantalla me salen un listado resultado de la union de varios campos de diferentes tablas.- Cada linea corrresponde a un libro diferente, con sus datos:el autor, la editorial, etc. era por lo que te decia que tendria que listar linea a linea.-No quiero actualizar solo que pueda listar cada linea en formato formulario y que en el mismo salga solo los datos de cada linea.-Ya me dices.-Muchas gracias.-

Última edición por fervill; 14/07/2006 a las 10:59
  #6 (permalink)  
Antiguo 17/07/2006, 08:12
 
Fecha de Ingreso: julio-2006
Mensajes: 18
Antigüedad: 17 años, 9 meses
Puntos: 0
Listar datos de varias tablas

Este es el script que he hecho :
<html>

<head>
<title>Relación de empresas</title>
<meta http-equiv="generator" content="PHP Designer 2005" />
</head>

<body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<?php include "logo.php" ;?>
<?php include "header.php"; ?>
<?php include "conecta.php"; ?>

<form action="procesar.php" method="post" name="frm_clientes">
<table width='90%' border='1' align='center'>
<?php
$query = "SELECT empresas.firstinput,cif,nombre,representante,nif,d omicilio,poblacion, provincia,cp,telefono,fax,credito,disponible,coste s.cif2,total1
FROM
empresas,costes
WHERE cif=cif2
ORDER BY cif";

$results = mysql_query($query--)or die (mysql_error());


$cursos_details =<<<EOD
while($row = mysql_fetch_array($results))
<tr>
<input name="firstinput" type="text" id="firstinput" size="40" value="<?php echo $row['firstinput']; ?>"/>
</tr>
<tr>
<input name="cif" type="text" id="cif" size="40" value="<?php echo $row['cif'];?>"/>
</tr>
<tr>
<input name="nombre" type="text" id="nombre" size="40" value="<?php echo $row['nombre'];?>"/>
</tr>
<tr>
<input name="representante" type="text" id="representante" size="40" value="<?php echo $row['representante'];?>"/>
</tr>
<tr>
<input name="nif" type="text" id="nif" size="40" value="<?php echo $row['nif'];?>"/>
</tr>
<tr>
<input name="domicilio" type="text" id="domicilio" size="40" value="<?php echo $row['domicilio'];?>"/>
</tr>
<tr>
<input name="poblacion" type="text" id="poblacion" size="40" value="<?php echo $row['poblacion'];?>"/>
</tr>
<tr>
<input name="provincia" type="text" id="provincia" size="40" value="<?php echo $row['provincia'];?>"/>
</tr>
<tr>
<input name="cp" type="text" id="cp" size="40" value="<?php echo $row['cp'];?>"/>
</tr>
<tr>
<input name="telefono" type="text" id="telefono" size="40" value="<?php echo $row['telefono'];?>"/>
</tr>
<tr>
<input name="fax" type="text" id="fax" size="40" value="<?php echo $row['fax'];?>"/>
</tr>
<tr>
<input name="credito" type="text" id="credito" size="40" value="<?php echo $row['credito'];?>"/>
</tr>
<tr>
<input name="disponible" type="text" id="disponible" size="40" value="<?php echo $row['disponible'];?>"/>
</tr>
<tr>
<input name="total1" type="text" id="total1" size="40" value="<?php echo $row['total1'];?>"/>
</tr>
$disponible=$credito-$total1;
EOD;

?>
</table>
</form>
Me da el siguiente error:Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in c:\inetpub\wwwroot\fernando\listadoempresas3.php on line 28
Por favor dime donde puede estar el error-Gracias
  #7 (permalink)  
Antiguo 17/07/2006, 15:51
 
Fecha de Ingreso: junio-2002
Mensajes: 750
Antigüedad: 21 años, 10 meses
Puntos: 22
El mismo mensaje de error indica donde puedes empezar a buscar-lo (aproximadamente). En la línia 28 estas utilizando heredox syntax (<<<EOD ... EOD;). Si no estoy equivocado dentro de estos delimitadores se admiten texto o código html, javascript... y variables de php pero no el uso de sentencias (while, if, echo, etc.).

A continuación pongo como podría quedar más o menos (no te puedo asegurar que funcione. No lo he comprobado)

Código PHP:
<html>

   <head>
      <title>Relación de empresas</title>
      <meta http-equiv="generator" content="PHP Designer 2005" />
   </head>

<body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<?php include "logo.php" ;?>
<?php 
include "header.php"?>
<?php 
include "conecta.php"?>

 <form action="procesar.php" method="post" name="frm_clientes">
 <table  width='90%' border='1' align='center'>
<?php
$query 
"SELECT 
empresas.firstinput,cif,nombre,representante,nif,domicilio,poblacion, 
provincia,cp,telefono,fax,credito,disponible,costes.cif2,total1
              FROM
                  empresas,costes
              WHERE cif=cif2
              ORDER BY cif"
;

     
$results mysql_query($query /* -- desconozco este uso con consultas sql */) or die (mysql_error());



/* $cursos_details =<<<EOD */ /* su uso no es correcto en este caso ya que en su interior utilizas sentencias sql (puedes usar variables pero sentencias de este tipo creo que no es correcto Ej: while, echo, etiquetas php...)*/
$cursos_details "";
while(
$row mysql_fetch_array($results)) /*falta el corchete de apertura para el while */ {
/*en cada recorrido dentro del bucle while se va añadiendo (.= por eso el uso del "." delante del "=") el contenido a la variable $cursos_details */
$cursos_details .= <<<EOD
 <tr>
 <input name="firstinput" type="text" id="firstinput" size="40" 
value="$row
['firstinput']"/>
 </tr>
 <tr>
 <input name="cif" type="text" id="cif" size="40" 
 value="$row
['cif']"/>
 </tr>
 <tr>
<input name="nombre" type="text" id="nombre" size="40" 
value="$row
['nombre']"/>
</tr>
<tr>
<input name="representante" type="text" id="representante" size="40" 
value="$row
['representante']"/>
</tr>
<tr>
<input name="nif" type="text" id="nif" size="40" 
value="$row
['nif']"/>
</tr>
<tr>
<input name="domicilio" type="text" id="domicilio" size="40" 
value="$row
['domicilio']"/>
</tr>
<tr>
<input name="poblacion" type="text" id="poblacion" size="40" 
value="$row
['poblacion']"/>
</tr>
<tr>
<input name="provincia" type="text" id="provincia" size="40" 
value="$row
['provincia']"/>
</tr>
<tr>
<input name="cp" type="text" id="cp" size="40" 
value="$row
['cp']"/>
</tr>
<tr>
<input name="telefono" type="text" id="telefono" size="40" value="$row
['telefono']"/>
</tr>
<tr>
<input name="fax" type="text" id="fax" size="40" 
value="$row
['fax']"/>
</tr>
<tr>
<input name="credito" type="text" id="credito" size="40" 
value="$row
['credito']"/>
</tr>
<tr>
<input name="disponible" type="text" id="disponible" size="40" 
value="$row
['disponible']"/>
</tr>
<tr>
<input name="total1" type="text" id="total1" size="40" 
value="$row
['total1']"/>
</tr>
EOD;
$disponible=$credito-$total1/* aquí deberás vigilar que es lo que quieres obtener, probablemente deberás modificarlo o realizar la resta de otro modo, ya que tal como está ahora creo que solo obtendrías el disponible del último registro de la tabla/consulta */
/* fin del while */
echo $cursos_details/* mostrar los resultados */
?>
 </table>
 </form>
</body>
</html>
No estaría mal que te descargaras el manual de php y el de mysql, siempre viene bien tenerlos a mano.

Otra manera de hacer lo mismo que en el ejemplo sería utilizar un bucle foreach() (o un "for" combinado con mysql_num_rows para conocer el número de líneas que contiene la consulta) y una misma "plantilla" para mostrar el contenido (<tr><input id="$row[...]" name="$row[...]" value="$row[...]" /></tr> [ojo, no es un ejemplo funcional])

Espero haberte aclarado algo aunque sólo sea un poquito (a veces cuesta explicarse con claridad )
Salu2
  #8 (permalink)  
Antiguo 06/08/2006, 10:45
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Función de la sección de Base de Datos

Por favor... lean el enlace y traten de no colocar código en la seccion de BD.

Gracias.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
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:54.