> Faqs > Problemas al listar el contenido de una BBDD

Problemas al listar el contenido de una BBDD

Muy buenas a ver si explico claramente mi problema: Estoy intentando programar un juego en PHP y MySQL, para ello tengo (entre otras que no viene al caso) dos bases de datos una con los datos generales del usuario y una segunda con todos los datos del personaje. Estoy tratando de hacer la interface donde el usuario ve su personaje y las cosas que tiene por lo que vuelco todos sus datos con esta sentencia:

$datos = "SELECT usuario, nombre, idcabeza ,idpecho,idmanos ,idpanta ,idbotas ,arma1 ,arma2 ,municion ,nivel ,exp ,carrerastot ,carganadas,carperdidas ,fuerza ,agilidad ,constitucion ,carisma ,dinero, vida FROM personajes,maaking_users WHERE personajes.usuario = '$userid' ";

Despues de recoger todos los datos paso este codigo para que me lo guarde en un array y asi poder irlo imprimiendolo en pantalla como a mi me vaya gustando:

<span class="codigo"> $result = mysql_query($datos) or die (mysql_error());

while($row = mysql_fetch_array($result)){
echo $row['nombre']."<br />";
} </span>

Has ahí todo bien recoge el dato del nombre y me lo printa pero mi problema es que lo printa tantas veces como usuarios existen en la base de datos original, en este caso tengo 4 usuarios de pruebas asi que me sale 4 veces el nombre del personaje. ¿Alguien me puede dar alguna idea de como solucionar esto?

Gracias por adelantado.

Respuestas

Hola al parecer si tienes una relación entre dos tablas y la clave primaria del uno baja a la otra tabla al hacer la relación deberías compararlas para que te saque de las 2 uno solo. Para eso puedes usar uniones con alias ejemplo si en la relación tu clave es codigo_usuario deberia generar un alias a este de la siguiente forma A.codigo_usuario (esta seria de la tabla A) B.codigo_usuario (tabla B) de esta forma comparas los codigos para que te devuelva los existentes y no todos. La comparación seria WHERE B.codigo_usuario= A.codigo_usuario Ojalá te sirva

Cesar Martinez