entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Mostrar nombre en lugar de ID diferentes tablas

Estoy tratando de optimzar los links para SEO, pero tengo algunos problemas.

puedo mostrar informacion por id, pero no logro mostrar informacion por nombre:

$result = mysql_query( "SELECT p.id,p.nombre
                        FROM puestos as  
                        LEFT JOIN empleados as e ON e.rango = p.id
                        GROUP BY p.id ORDER BY e.nombre ASC" );

tabla1: puestos
id
nombre

tabla2: empleados
id
nombre
rango

uso rango para comprarlo con el id de puestos, y mostrar los datos por id, pero quisiera mostrarlos por nombre ej..

index.php?id=1 a index.php?id=nombre

tienen idea de como hacerle?

2 Respuestas

2votos

Leonardo-Tadei Puntos227320

Hola Darphas,

lo que estás planteando solo funciona si los nombres de los puestos son únicos. En el caso de los puestos, supongo que no será problema agregarles un index de tipo UNIQUE al nombre de los puestos, pero es algo que no se puede hacer con todas las tablas, ya que sí hay descriptores repetidos válidos (como nombres de personas, marcas de autos, etc).

Lo que podrías hacer para mejorar el SEO y no perder la univocacidad de acceso a los datos indispensable para que todo funcione es algo como:

index.php?v=nombre&id=1

Con esto, aparece el nombre como primer parámetro del script (que es el único que los buscadores suelen registrar, pero tu script de visualización lo ignora y usa el ID, que es el segundo parámetro, para generar la query.

En este caso además, la query a usar es la misma que ya estás usando:

SELECT p.id,p.nombre
LEFT JOIN empleados as e ON e.rango = p.id
GROUP BY p.id ORDER BY e.nombre ASC

pero podría darse el caso para otras querys que tengas que crear alias de los nombres descriptivos para que no se repitan con otras tablas.

Saludos!

1voto

darphas comentado

tienes mucha razon, no habia pensando en eso..

la verdad tenia toda la intecion de hacer como

example.com/director/javier-salas

pero tendra que ser:

example.com/1/director/javier-salas

le quita mucha vista, pero no hay de otra :(

gracias como quiera

0voto

Leonardo-Tadei comentado

Si vas a usar URLs amigables, daría lo mismo si fuera:

example.com/1/director/javier-salas

o

example.com/director/1/javier-salas

o

example.com/director/javier-salas/1

pero ponerlo como primer parámetro es lo más simple porque te hace más uniformes las reglas de reescritura.

Saludos!

PD: si podés, editá tu respuesta para convertirla en un comentario de mi respuesta, así no aparece una respuesta de más en tu pregunta.

1voto

mr.objectiveC Puntos590
$result = mysql_query( "SELECT p.nombre
FROM puestos as 
LEFT JOIN empleados as e ON e.rango = p.id
GROUP BY p.id ORDER BY e.nombre ASC" );

Eso devuelve solo los nombres.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta