Foros del Web » Programando para Internet » PHP »

problemita al mostrar datos php/mysql

Estas en el tema de problemita al mostrar datos php/mysql en el foro de PHP en Foros del Web. Hola, he creado una zona de clientes en mi sitio web y muestro sus expedientes listando los nombres des de la base datos con una ...
  #1 (permalink)  
Antiguo 13/06/2006, 03:51
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
problemita al mostrar datos php/mysql

Hola, he creado una zona de clientes en mi sitio web y muestro sus expedientes listando los nombres des de la base datos con una consulta tal que asi..

<?php
$sql="SELECT * FROM Expedientes WHERE dni='$dniUsuarioL'";
$result = mysql_query($sql);
if(isset($result) && mysql_num_rows($result)>0)
{
while($fila=mysql_fetch_assoc($result))
{
echo "<a href=\"cuenta2.php\">".$fila['nombre']. "<br>", "</a>";

Entonces ese campo nombre le tengo convertido en link y me manda cuenta2.php donde ya muestro todo sobre el expediente, hasta ahi todo pero claro cuando tiene varios expedientes la cosa se extropea porque en cuenta2.php me muestra los dos expedientes mezclados, entonces tengo q hacer una distinción con el número de expediente que es autonumérico pero no lo saco como recogerlo, no se si en la consulta mysql de cuenta2. o que porque en la que he pasteado arriba esta bien porque tiene que listarme las dos....Si alguien tiene alguna idea sera bienvenida, gracias
  #2 (permalink)  
Antiguo 13/06/2006, 04:55
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
por lo que puedo entender quieres que se muestre solo el expediente que le pasas, supongo que tendras un campo id en la tabla, pues lo que haces es pasarle el id a cuenta2.php y hay ya seleccionas los datos de ese id:

echo "<a href=\"cuenta2.php?exp=".$fila['id'].\">".$fila['nombre']. "<br>", "</a>";


supongo que es eso lo que quieres hace.. si no lo es ya miraremos otras posibilidades
__________________
ALOZORRO v5.0 (ahora en .es)
  #3 (permalink)  
Antiguo 13/06/2006, 05:27
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
correcto veo q me he explicado bien Azrael666 ya vamos siendo conocidos por mis multiples dudas en mi ansia por aprender, pues bien si tengo un campo en la tabla EXPEDIENTES que se llama expediente que es autonumerico que es clave y que diferencia un expediente de otro....entonces la sintaxis seria....

echo "<a href=\"cuenta2.php?exp=".$fila['expediente'].\">".$fila['nombre'].
"<br>", "</a>";

lo que no se es lo que te he marcado en negrita el exp?
Gracias Azrael666
  #4 (permalink)  
Antiguo 13/06/2006, 05:30
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
ah bueno.. ese exp es una variable que le vas a pasar a la pagina indicandole la id o lo que sea que quieras usar para buscarlo.

luego en esa pagina haces esto para recojer el valor:

if (isset($exp)) {y aqui metes el codigo para mostrar los datos que concuerdan con esa variable $exp, que al final va a ser el $fila['expediente'] que le pasaste en la pagina anterior }

mas o menos y explicado regularcillo jajaja
__________________
ALOZORRO v5.0 (ahora en .es)
  #5 (permalink)  
Antiguo 13/06/2006, 05:33
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
Vamos a ver si me sale, gracias Azrael ahora te comento...
  #6 (permalink)  
Antiguo 13/06/2006, 05:47
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
mmmm me temo q no va a ser tan fácil porque el problema es que yo luego muestro esos datos de ese expediente especifico y me va seguir mostrando los de todos...menudo problema tengo aqui...porque en la otra pagina ya se supone en el expediente especifico me va a mostrar todos los expedientes del dni que recojo

<?php
$sql="SELECT Expedientes.expediente, Documentos.nombre FROM Expedientes, Documentos WHERE Expedientes.dni='$dniUsuarioL' AND Documentos.tipo='foto' AND Documentos.expediente=Expedientes.expediente" ;
$result = mysql_query($sql);
$nregistros=mysql_num_rows($result);
if ($nregistros!=0){
//te he puesto el mysql_fetch_array
While ($registro=mysql_fetch_row($result)){
//mostramos los registros por el orden q los pones en la consulta
echo '<a href="./UPLOAD/'.$registro[1].'" target="_blank">'.$registro[1]. '</a>';

No se si tendre que cambiar la consulta o vale pasandole el parametro expediente
  #7 (permalink)  
Antiguo 13/06/2006, 05:49
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
en ese codigo que he puesto muestra todos los archivos del expediente o expedientes con dni=$dniUsuarioL entonces claro un tio con varios expedientes me sale todos juntitos...
  #8 (permalink)  
Antiguo 13/06/2006, 05:57
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
nose.. si eso en la primera pagina cambialo y muestra los datos de todos los usuarios con documento.tipo='foto' y en cada uno un link a otra pagina que muestre un usuario en concreto (y le pasas ese Expedientes.dni como parametro exp) y en esa pagina muestras todos los expedientes "por encima" solo el nombre y poco mas, con un link a otra pagina que te abra solo un expediente (que le pasas como parametro)

en resumen, tendriamos:

Una pagina donde muestras todos los usuarios (con los datos minimos para poder elegir entre uno u otro)

Una segunda, llamada por la anterior y pasandole un dato de un usuario en concreto que muestre todos los expedientes (con los datos minimos para poder elegir entre uno u otro)

Y una tercera, llamada por la segunda y pasandole un dato de un expediente en concreto (y el usuario si puede haber un expediente para varios usuarios) que muestre todos los datos de ese expendiente

mas o menos asi.. igual es algo mas largo de hacer, pero quedaria cojonudo y bastante profesional (o al menos eso me parece a mi jaja)
__________________
ALOZORRO v5.0 (ahora en .es)
  #9 (permalink)  
Antiguo 13/06/2006, 06:29
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
Vamos a dejar la idea clara, vamos a ver el cliente se logea y entra a su cuenta digamos, en la primera pantalla salen sus datos y al lado un cuadro con sus expedientes, bien de momento todo sale, el problema que al pinchar en cualquiera de los dos expedientes que me lista me va a la cuenta2.php que es donde muestro los archivos de cada expediente, cuando solo hay uno por cliente genial pero cuando hay dos pinche el q pinche me muestra todos juntitos de ambos y si, tienes razon tengo que recoger y mandar el nº expdiente para diferenciar pero no me sale....
En la primera pagina muestro los expedientes asi con una consulta facilita y esto esta bien porque tienen q salir todas.

<?php
$sql="SELECT * FROM Expedientes WHERE dni='$dniUsuarioL'";
$result = mysql_query($sql);
if(isset($result) && mysql_num_rows($result)>0)
{
while($fila=mysql_fetch_assoc($result))
{
echo "<a href=\"cuenta2.php\">".$fila['nombre']. "<br>", "</a>";
echo "<br>";

}
}
?>

Al elegir una te va a cuenta2.php y muestra tres cuadros os pongo el ejmplo de uno porque son los 3 iguales solo diferenciados por el campo tipo.

<?php
$sql="SELECT Expedientes.expediente, Documentos.nombre FROM Expedientes, Documentos WHERE Expedientes.dni='$dniUsuarioL' AND Documentos.tipo='foto' AND Documentos.expediente=Expedientes.expediente" ;
$result = mysql_query($sql);
$nregistros=mysql_num_rows($result);
if ($nregistros!=0){
While ($registro=mysql_fetch_row($result)){

echo '<a href="./UPLOAD/'.$registro[1].'" target="_blank">'.$registro[1]. '</a>';
echo "<br>";
}
}else{
echo "<p style='font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 11px;color: #FF0000; font-weight: bold;' > No hay archivos con este formato </p>";
}
?>

bueno y antes saco el nombre del expediente por pantalla q naturalmente me salen los dos para variar....

$sql="SELECT * FROM Expedientes WHERE dni='$dniUsuarioL'" ;
$result = mysql_query($sql);
if(isset($result) && mysql_num_rows($result)>0)
{
while($fila=mysql_fetch_assoc($result))
{
echo "<a style='font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 20px;color: #FFFFFF; font-weight: bold; float:left;' href=\"cuenta2.php\">".$fila['nombre']. "<br>", "</a>";

aqui tendria q cambiar la consulta supongo.

Esto es lo mejor que se explicarlo entero....
  #10 (permalink)  
Antiguo 13/06/2006, 07:03
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
oye.. ahora por la tarde estoy un peli ocupao y no puedo dedicarle mucho... puedes dejarme la tabla completa de la base de datos para cuando tenga un momento si puedo te preparo un codigo o algo asi para ver si lo sacamos?

venga.. un saludo,

ah.. y si lo sacas tu comentalo por aqui para verlo jeje..
__________________
ALOZORRO v5.0 (ahora en .es)
  #11 (permalink)  
Antiguo 13/06/2006, 09:04
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
vale perfecto yo sigo trabajandolo y te dejo eso, muchas gracias Azrael este es el esquema

$sql = "CREATE TABLE Clientes (
dni VARCHAR (9) NOT NULL,
nombre VARCHAR (100) NOT NULL,
apellido1 VARCHAR (100) NOT NULL,
apellido2 VARCHAR (100) NOT NULL,
direccion VARCHAR (200) NOT NULL,
telefono INT (9) NOT NULL,
mail VARCHAR (50) NOT NULL,
login VARCHAR (100) NOT NULL,
pass VARCHAR (100) NOT NULL,
pass2 VARCHAR (100) NOT NULL,
PRIMARY KEY (dni)
) TYPE = INNODB;";

$sql = "CREATE TABLE Expedientes (
expediente INT (20) NOT NULL AUTO_INCREMENT,
nombre VARCHAR (50) NOT NULL,
fecha VARCHAR (20) NOT NULL,
direccion VARCHAR (200) NOT NULL,
dni VARCHAR (9) NOT NULL,
PRIMARY KEY (expediente),
FOREIGN KEY (dni) REFERENCES Clientes(dni)
) TYPE = INNODB;";

$sql = "CREATE TABLE Documentos(
id_documento VARCHAR (40) NOT NULL,
tipo VARCHAR (20) NOT NULL,
nombre VARCHAR (50) NOT NULL,
expediente VARCHAR (20) NOT NULL,
PRIMARY KEY (id_documento),
FOREIGN KEY (expediente) REFERENCES Expedientes(expediente)
) TYPE = INNODB;";
  #12 (permalink)  
Antiguo 13/06/2006, 09:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Bueno por partes, en tu primer listado donde muestras los expedientes haz esto:
Código PHP:
<?php
$sql
="SELECT * FROM Expedientes WHERE dni='$dniUsuarioL'";
$link "<a href=\"cuenta2.php?expediente=%s\">%s<br></a>";
$result mysql_query($sql);
if(isset(
$result) && mysql_num_rows($result)>0)
{
while(
$fila=mysql_fetch_assoc($result))
{
echo 
sprintf$link$fila['expediente'], $fila['nombre'] );
echo 
"<br>";

}
}
?>
Luego en tu cuenta2 haz esto:
Código PHP:
<?php
$sql
="SELECT Expedientes.expediente, Documentos.nombre FROM Expedientes, Documentos WHERE Expedientes.dni='$dniUsuarioL' AND Documentos.tipo='foto' AND Documentos.expediente=Expedientes.expediente AND Expedientes.expediente='%s'" ;
$result mysql_query(sprintf$sqlmysql_real_escape_string$_GET['expediente'] ) ) );
$nregistros=mysql_num_rows($result);
if (
$nregistros!=0){
While (
$registro=mysql_fetch_row($result)){

echo 
'<a href="./UPLOAD/'.$registro[1].'" target="_blank">'.$registro[1]. '</a>';
echo 
"<br>";
}
}else{
echo 
"<p style='font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 11px;color: #FF0000; font-weight: bold;' > No hay archivos con este formato </p>";
}
?>
  #13 (permalink)  
Antiguo 14/06/2006, 01:31
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
GatorV perfecto me los muestra por separado, me muestra los expedientes por separado osea perfecto, me quito el sombrero....lo unico para sacar el nombre del expediente ya en la segunda pagin utilizo esto y logicamente me saca los dos, como le agrego el expediente para que me muestre solo el q tenga que mostrar, si me puedes explicar por encima como lo has hecho te lo agradeceria, gracias de verdad, mu amable,
  #14 (permalink)  
Antiguo 14/06/2006, 01:38
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
lo q hago para mostrar el nombre es esto, y no se si tengo que cambiar la consulta o es aplicarle algo del expediente en php como has hecho tu..

<?php
//seleccionar los expedientes con dni del usuario y expediente especifico que tendre que sacar mediante un formulario me da a mi....
$sql="SELECT * FROM Expedientes WHERE dni='$dniUsuarioL'" ;
$result = mysql_query($sql);
if(isset($result) && mysql_num_rows($result)>0)
{
while($fila=mysql_fetch_assoc($result))
{
echo "<a style='font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 20px;color: #FFFFFF; font-weight: bold; float:left;' href=\"cuenta2.php\">".$fila['nombre']. "<br>", "</a>";
echo "<br>";
}
}
?>
  #15 (permalink)  
Antiguo 14/06/2006, 02:25
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
cambie la consulta y no me muestra nada, la puse asi pero no muestra nada añadiendo el expediente,

$sql="SELECT * FROM Expedientes WHERE dni='$dniUsuarioL' AND Expedientes.expediente='%s'" ;
  #16 (permalink)  
Antiguo 15/06/2006, 00:58
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
No he conseguido que me muestre el nombre de expediente por separado haciendo esta consulta no me muestra nada,

$sql="SELECT * FROM Expedientes WHERE dni='$dniUsuarioL' AND Expedientes.expediente='%s'" ;
  #17 (permalink)  
Antiguo 15/06/2006, 01:10
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
que es %s ? eso no lo vi nunca... yo lo que conozco es lo de LIKE '%s%'
__________________
ALOZORRO v5.0 (ahora en .es)
  #18 (permalink)  
Antiguo 15/06/2006, 01:23
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
pues esq toy esperando que me lo explique, me corrigio el codigo, funciona de mimo pero queria que me lo explicara y me dijera como es la ultima peguita que tengo aunq no es muy importante, lo he puesto porque me fije que en las consultas para recoger y validar el expediente hace eso.... aver si nos da una explicacióon cuando este y aprendemos todos...
  #19 (permalink)  
Antiguo 15/06/2006, 01:28
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
eso jeje...

PD: siento no haberte ayudado mucho estos dias.. pero es que estube bastante ocupado en el curro... perdon..
__________________
ALOZORRO v5.0 (ahora en .es)
  #20 (permalink)  
Antiguo 15/06/2006, 01:34
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
vaya tonteria Azrael666 si me has ayudado mucho, cada uno tiene sus cosas, esto es un joby para aprender y ayudar en lo que se pueda, muchas gracias de verdad....pa cualquier cosa ya sabes solo tienes q decirlo, yo presento el fin de carrera ahora en julio y tambien ando agobiado.....Saludillos y a ver si aparece GatorV y nos resuelve el enigma...
  #21 (permalink)  
Antiguo 15/06/2006, 01:38
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
eso.. que estoy ahi con la duda..

y mucha suerte con el proyecto es relacionado con estas consultas no?
__________________
ALOZORRO v5.0 (ahora en .es)
  #22 (permalink)  
Antiguo 15/06/2006, 01:59
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
claro....ya ta casi hecho enterito, cuando lo tenga terminado lo echaras un vistazo para hacerme una buena critica...bueno puedes ver la interfaz grafica en XHTML Y CSS pero sin la sección clientes...Esta en obras, echala un vistazo me queda alguna sección de tocar y meter contenido pero para q te hagas una idea....Se aceptan criticas constructivas...
www.nogues.es
  #23 (permalink)  
Antiguo 15/06/2006, 02:05
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
oye.. esta muy guapa jeje

sugerencias: al scrolls de noticias (o en donde puedan salir) meteles css y ponlos del color del titulo.. que igual queda bien... lo demas.. nose.. me gusta..
__________________
ALOZORRO v5.0 (ahora en .es)
  #24 (permalink)  
Antiguo 15/06/2006, 02:06
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
mmmmmmmmmm lo tenia asi pero ya no me pasa el standard CSS....no se si poner un hecho o que hacer....
  #25 (permalink)  
Antiguo 15/06/2006, 09:03
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
GatorV cuando tengas un ratin si me puedes responder te lo agradeceria, gracias
  #26 (permalink)  
Antiguo 15/06/2006, 09:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Javiglez
claro....ya ta casi hecho enterito, cuando lo tenga terminado lo echaras un vistazo para hacerme una buena critica...bueno puedes ver la interfaz grafica en XHTML Y CSS pero sin la sección clientes...Esta en obras, echala un vistazo me queda alguna sección de tocar y meter contenido pero para q te hagas una idea....Se aceptan criticas constructivas...
www.nogues.es
Por favor .. el tema de "criticas" sobre un diseño de una página o similar .. al foro de "Sugerencias para tu trabajo" .. En el foro de PHP por favor tratemos temas exclusimaente de esta área.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #27 (permalink)  
Antiguo 15/06/2006, 09:17
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
Bien solo fue un comentario dentro de otro post relacionado con este "tema" pero bueno pido disculpas....
  #28 (permalink)  
Antiguo 15/06/2006, 09:19
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Lo siento, el %s lo usas para el sprintf, si quieres usar tu segunda consulta haz esto:
Código PHP:
<?php
//seleccionar los expedientes con dni del usuario y expediente especifico que tendre que sacar mediante un formulario me da a mi....
$sql="SELECT * FROM Expedientes WHERE dni='$dniUsuarioL' AND Expedientes.expediente='%s'";
$result mysql_query(sprintf$sqlmysql_real_escape_string$_GET['expediente'] ) ) );
$link "<a href=\"cuenta2.php?expediente=%s\">%s<br></a>";
if(isset(
$result) && mysql_num_rows($result)>0)
{
    while(
$fila=mysql_fetch_assoc($result))
    {
        echo 
sprintf$link$fila['expediente'], $fila['nombre'] );
        echo 
"<br>";
    }
}
?>
La razon de usar %s como variables es escaparlas para prevenir el SQL Injection attack en lugar de meter las variables directamente al Query en el string, espero te pueda haber ayudado :)
  #29 (permalink)  
Antiguo 15/06/2006, 09:57
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
vale vale esq tenias intrigado a mas de uno muchas gracias otra cosa q aprendo y claro que me has ayudado y mucho, muchas gracias muy amable un saludo GatorV
  #30 (permalink)  
Antiguo 15/06/2006, 14:26
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
Cita:
vale vale esq tenias intrigado a mas de uno
hola


bueno.. mas o menos me enteré... gracias.
PD: Javi, mira el privado jeje.
__________________
ALOZORRO v5.0 (ahora en .es)
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 11:46.