« first day
next day →
last day (22 days later) »
Neder Alfonso Fandiño Andrade
00:00
Exacto mira es sencillo, en algun lado tienes una consulta así:
SELECT * FROM jugador WHERE id_jugador=$VARIABLE
esta consulta es la que te trae al jugador
y todos sus datos
Javier Parra
tengo una consulta donde me trae los datos del jugador y el genero asociado al jugador y el resultado es el que muestro en la tabla, será esa la que dices?
Neder Alfonso Fandiño Andrade
No tienes necesidad de hacer inner join
Javier Parra
claro con son dos tablas o como se entonces el genero de la persona?
Neder Alfonso Fandiño Andrade
recuerda el principio de las bases de datos relacionales
tu tienes esto:
jugador(id_jugador, nombres, id_genero)
genero(id_genero, nombre_ge)
el jugador tiene lo unico que necesita de la tabla genero el id asociado
por tanto cuando tu haces la consulta
SELECT * FROM genero => esta es para llenar el select
SELCT * FROM jugador WHERE id_jugador = ? => esta es para consultar a un jugador en especifico
Javier Parra
entonces SELECT * FROM jugador WHERE id_jugador = id_genero?
Neder Alfonso Fandiño Andrade
00:13
No, no puedes comparar el jugador con el genero, lo que puedes hacer es buscar al jugador por su id_jugador
cuando haces esto
SELECT * FROM jugador WHERE id_jugador=?
es igual que
SELECT id_jugador, nombres, id_genero FROM jugador WHERE id_jugador=?
Puedes ver que en la consulta ya traes un id_genero
Javier Parra
al comparar el id_jugador con id_genero me muestra es el id del genero y no el nombre
Neder Alfonso Fandiño Andrade
SELECT * FROM jugador WHERE id_jugador = id_genero [Es un error]
SELECT * FROM jugador WHERE id_jugador=? [El signo de interrogacion es la variable que indica al jugador]
Copia y pega tu codigo completo
creo que hay algo errado. [A decir verdad es mas un error conceptual de tu parte]
Javier Parra
<?php
session_start();
if (isset($_SESSION['nombreusu'])) {
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title>CRUD php Mysql + bootstrap</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/estilos.css">
<script src="js/metodos.js"></script>
</head>
<body>
<header>
<nav class="navbar navbar-default navbar-static-top" role="navigation">
eso es todo el código donde esta el modal para registrar, y modificar
amigo le pido disculpas, tengo que salir acompañar a mi mamá
Neder Alfonso Fandiño Andrade
Vez esta linea
echo "<a data-toggle='modal' data-target='#editUsu' data-id_jugador='" . $fila[0] . "' data-documento='" . $fila[1] . "' data-nombres='" . $fila[2] . "' data-id_genero='" . $fila[3] . "' class='btn btn-primary btn-xs'><span class='glyphicon glyphicon-pencil'></span> Editar</a> ";
en la consulta que haces
SELECT ju.id_jugador, ju.documento, ju.nombres, ge.nombre_ge FROM jugador AS ju "
. "INNER JOIN genero AS ge ON ju.id_genero = ge.id_genero;
el valor que esta en la 3ra posicion $fila[3] es equivalente al nombre_ge de la consulta
y no al id_genero de la consulta
es por ello que fallas
estas trayendote el nombre del genero y no su codigo
el nombre es inutil por si mismo
para solucionar debes cambiar la consulta:
SELECT ju.id_jugador, ju.documento, ju.nombres, ge.nombre_ge FROM jugador AS ju "
. "INNER JOIN genero AS ge ON ju.id_genero = ge.id_genero;
por
SELECT id_jugador, documento, nombres, id_genero FROM jugador;
Así si tendrás el id_genero y no el nombre_ge
Javier Parra
con esa corrección me muestra el nombre del genero correcto en el modal
pero entonces como muestro el nombre del género en la tabla donde muestro los datos
porque en la tabla donde muestro los datos en genero me muestra es el id
Neder Alfonso Fandiño Andrade
00:30
A pues es sencillo en ese caso
No habia tenido en cuenta que listabas esa iformacion en la tabla
asi que lo que requieres es hacer mas o menos lo que tenias antes pero con una pequeña variacion
SELECT id_jugador, documento, nombres, id_genero, nombre_ge FROM jugador NATURAL JOIN genero;
en la linea donde tienes
echo "<td>$fila[1]</td><td>$fila[2]</td><td>$fila[3]</td>";
la remplazas por esta
echo "<td>$fila[1]</td><td>$fila[2]</td><td>$fila[4]</td>";
nota que cambiamos $fila[3] por $fila[4] basandonos en que nombre_ge tiene esa posicion en la consulta
Javier Parra
bien ahí funciona
y si tengo una tercera tabla jornada entonces la consulta como queda
SELECT id_jugador, documento, nombres, id_genero, nombre_ge, id_jornada, nombre_jo FROM jugador NATURAL JOIN genero;
?
y lo otro sería
echo "<td>$fila[1]</td><td>$fila[2]</td><td>$fila[4]</td><td>$fila[6]</td>";
Neder Alfonso Fandiño Andrade
Pues ojo
en ningun momento estas juntando la tabla jornada
Asi que asumiendo que se llama así
seria algo mas o menos como:
SELECT id_jugador, documento, nombres, id_genero, nombre_ge, id_jornada, nombre_jo FROM jugador NATURAL JOIN genero NATURAL JOIN jornada;
Javier Parra
umm ya
ok amigo me fue de gran ayuda
Neder Alfonso Fandiño Andrade
asumiendo tambien que el campo que relaciona a la jornada y al jugador se llaman iguales
Ok men, da por solucionada la pregunta
Para que el sitio sepa que ya esta solucionada.
Javier Parra
ok, muchas gracias por su tiempo
Neder Alfonso Fandiño Andrade
00:38
De nada estamos para colaborar, y tenia bastante tiempo libre
[Porcierto seria bueno que leyeses un poco sobre fundamentos SQL]
te ayudara...
Javier Parra
la verdad no me sabía esa de natural join
« first day
next day →
last day (22 days later) »
all rooms
Transcript for
Jun
18
Jun '17
19
Jun
27
Discussion on answer by Neder Alfonso
…
Imported from a comment discussion on
es.stackoverflow.com/que...
bootstrap
html
modal
mysql
php
join this room
about this room
00:00
06:00
12:00
18:00
all times are UTC
site design / logo © 2025 Stack Exchange Inc;
legal
mobile