Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Buscador para base de datos

Estas en el tema de Buscador para base de datos en el foro de PHP en Foros del Web. Hola he creado una base de datos de jugadores de futbol pero tengo unos cuantos errores que quiero solucionar pero puedo... http://tjlfifa.webcindario.com/jugadores/index.php El primer error: ...
  #1 (permalink)  
Antiguo 29/09/2012, 20:08
dankko
Invitado
 
Mensajes: n/a
Puntos:
Buscador para base de datos

Hola he creado una base de datos de jugadores de futbol pero tengo unos cuantos errores que quiero solucionar pero puedo...

http://tjlfifa.webcindario.com/jugadores/index.php

El primer error:

En el index.php todo se meustra bien, todos los enlaces funcionan correctamente, todos hacen lo que quiero, que es que por ejemplo, si haces click en FC Barcelona, te muestra todos los jugadores de FC Barcelona o en stats, te lleva a la página que contiene las estadísticas del jugador... Pero ahí va el fallo:

Con país no pasa lo mismo, el ID que marca el enlace es incorrecto.
He comprobado si es un error al mandar el dato de país desde el formulario, pero todo bien, en phpmyadmin los ID son correctos, sólo es al mostrarlo.

Se que es un error tonto, porque ya lo solucioné una vez, pero ahora mismo no lo recuerdo y llevo varios días pensando como solucionarlo pero nada...


Segundo error:

No se que problema tengo con la tabla, que el thead se muestra varias veces, supongo que también será otro error tonto pero no lo localizo.

Tercero, la pregunta de verdad.

Estaba interesado en añadirle unas cuantas funciones, como hacer updates o añadir un buscador...

La verdad pensé varias formas de añadirle el buscador. Pensé en uno simple usando la funcion LIKE y luego uno más completo para una búsqueda más completa con AGAINST y MATCH... Pero la verdad no se como hacerlo, si alguien pudiera ayudarme.

Gracias
  #2 (permalink)  
Antiguo 29/09/2012, 20:18
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Buscador para base de datos

Pues si dices que tienes errores sólo tu sabes, nosotros no podemos adivinar que haces y cómo lo haces.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 29/09/2012, 21:07
dankko
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Buscador para base de datos

Hombre si estoy diciendo que no logro encontrarlos y estoy ahí trabado y además dejo la página porsi alguien puede entrar a echarle un vistazo y ver lo que falla... Que más tengo que decir? Sólo se me pasó añadir que si necesito subir algún archivo lo pondría sin problema.
  #4 (permalink)  
Antiguo 29/09/2012, 21:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Buscador para base de datos

A ver, entiendo que no recibes ningún mensaje de error, ¿verdad?

Si es así y no nos muestras el código que tienes explicando lo que haces veo complicado que alguien te de solución así como por arte de magia.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 29/09/2012, 21:38
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Buscador para base de datos

Cita:
Iniciado por dankko Ver Mensaje
Hombre si estoy diciendo que no logro encontrarlos y estoy ahí trabado y además dejo la página porsi alguien puede entrar a echarle un vistazo y ver lo que falla... Que más tengo que decir? Sólo se me pasó añadir que si necesito subir algún archivo lo pondría sin problema.
Tienes que dejar el codigo PHP de donde falla, lo que dices.

salu2
  #6 (permalink)  
Antiguo 30/09/2012, 04:05
dankko
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Buscador para base de datos

Código PHP:
Ver original
  1. <?php
  2. $raiz ="./";//distancia hasta la raíz, empieza en punto y termina en barra.
  3.  
  4. include_once("librerias/funciones-comunes.php");
  5. $descripcion ="Pagina de prueba creada para ilustrar el uso de includes";
  6. $keywords ="";
  7.  
  8. $titulo_pagina = "Base";
  9. include("plantillas/cabecera.php");
  10. ?>
  11. <!----------------------------------------------------Contenido del cuerpo--------------------------------->
  12.      
  13. <?php
  14. //conectar con la base de datos haciendo la llamada a a función
  15. $conexion = conecta_base_datos();
  16.  
  17. //Contenido del cuerpo
  18.      
  19. //Últimos anuncios
  20. $ssql = "select * from jugadores,pais,posicion,equipos,atributo where jugadores.id_pais = pais.id_pais and jugadores.id_posicion = posicion.id_posicion and jugadores.id_equipo = equipos.id_equipo and jugadores.id_atributo = atributo.id_atributo";
  21.  
  22. //muestra los jugadores que son del mismo páis
  23. echo '<p>';
  24. if (isset($_GET["pais"]) && ctype_digit($_GET["pais"])){
  25.    $id_pais = $_GET["pais"];
  26.     $ssql .= " and jugadores.id_pais=" . $id_pais;
  27.     echo '<h2>Jugadores de ';
  28.     echo dame_nombre_pais($id_pais);
  29.     echo '</h2>'; //cierre del título de la búsqueda
  30. }
  31. echo '</p>';
  32.  
  33. //muestra los jugadores que pertenecen a cada equipo
  34. echo '<p>';
  35. if (isset($_GET["equipos"]) && ctype_digit($_GET["equipos"])){
  36.     $id_equipo = $_GET["equipos"];
  37.     $ssql .= " and jugadores.id_equipo=" . $id_equipo;
  38.     echo '<h2>';
  39.     echo "Equipo: " . $fila["nombre_equipo"];
  40.     echo dame_nombre_equipo($id_equipo);
  41.     echo '</h2>'; //cierre del título de la búsqueda
  42. }
  43. echo '</p>';
  44.  
  45.  
  46. //muestra las stats de un jugador
  47. echo '<p>';
  48. if (isset($_GET["nombre"]) && ctype_digit($_GET["nombre"])){
  49.     $id_jugador = $_GET["nombre"];
  50.     $ssql .= " and jugadores.id_jugador=" . $id_jugador;
  51.     echo '<h1>Estadísticas del jugador ';
  52.     echo dame_stats($id_jugador);
  53.     echo '</h1>'; //cierre del título de la búsqueda del país
  54. }
  55. echo '</p>';
  56.  
  57. //muestra los jugadores con el mismo tipo de atributos
  58. echo '<p>';
  59. if (isset($_GET["atributo"]) && ctype_digit($_GET["atributo"])){
  60.     $id_atributo = $_GET["atributo"];
  61.     $ssql .= " and jugadores.id_atributo=" . $id_atributo;
  62.     echo '<h2>Mejores jugadores con el atributo ';
  63.     echo dame_atributo($id_atributo);
  64.     echo '</h2>'; //cierre del título de la búsqueda
  65. }
  66. echo '</p>';
  67.  
  68. //muestra los jugadores que juegan en la misma posición
  69. echo '<p>';
  70. if (isset($_GET["posicion"]) && ctype_digit($_GET["posicion"])){
  71.     $id_posicion = $_GET["posicion"];
  72.     $ssql .= " and jugadores.id_posicion=" . $id_posicion;
  73.     echo '<h2>Mejores jugadores de la posición ';
  74.     echo dame_posicion($id_posicion);
  75.     echo '</h2>'; //cierre del título de la búsqueda
  76. }
  77. echo '</p>';
  78.  
  79.  
  80. //cuidado con el cierre de las comillas y cuidado con modificar el ID del país en la tabla de equipos, porque sino deja un ID fijo
  81. //número máximo que muestra
  82. $ssql .= " order by media desc";
  83. //$ssql .= " order by media desc limit 10";
  84.  
  85. echo '<div id="buscar">';
  86.     echo '<FORM METHOD=POST ACTION="buscar.php">  Buscar: </h2> <INPUT TYPE="text" NAME="busqueda">
  87.     </FORM>';
  88. echo '</div>';
  89.  
  90. $rs = mysql_query($ssql);
  91. if(mysql_num_rows($rs)> 0){
  92. while ($fila = mysql_fetch_array($rs)){
  93. //para cada anuncio
  94.  
  95.  
  96.     echo '<table border="0" borderspacing="0" cellspacing="0">';
  97.     echo "<thead>";
  98.     echo "<tr>";
  99.     echo '<th width="250">Nombre </th>';
  100.     echo '<th width="40">Media</th>';
  101.     echo '<th width="60">Posición</th>';
  102.     echo '<th width="200">Equipo Actual</th>';
  103.     echo '<th width="200">Salario Anual</th>';
  104.     echo '<th width="150">Pais</th>';
  105.     echo '<th width="40">Edad</th>';
  106.     echo '<th width="70">Atributo</th>';
  107.     echo "</tr>";
  108.     echo '</thead>';
  109.     echo "<tbody>";
  110.     echo "</tr>";
  111.     echo "<tr>";
  112.     //echo "<td>";
  113.     //echo '<img border="0" src="images/foto-jugador/' . $fila["imagen_jugador"] . '" width="45" height="55">';
  114.     //echo '</a>';//foto del jugador
  115.     //echo "</td>";
  116.     echo "<td>";
  117.     echo '<a href="stats.php?nombre=' . $fila["id_jugador"] . '">' . $fila["nombre"] . '';
  118.     echo '</a>';
  119.     //echo "<b>" . $fila["nombre"] . "</a></b>";
  120.     echo "</td>";
  121.    
  122.     echo "<td>";
  123.     echo "<b>" . $fila["media"] . "</b>";
  124.     echo "</td>";
  125.    
  126.     echo "<td>";
  127.     echo '<a href="index.php?posicion=' . $fila["id_posicion"] . '">' . $fila["nombre_posicion"] . '';
  128.     echo '</a>';
  129.     //echo "" . $fila["nombre_posicion"];  
  130.     //echo '<img border="0" src="images/posicion/' . $fila["imagen_posicion"] . '" width="32" height="15">';//icono posicion
  131.     echo "</td>";
  132.    
  133.     echo "<td>";
  134.     echo '<a href="index.php?equipos=' . $fila["id_equipo"] . '">' . $fila["nombre_equipo"] . '';
  135.     echo '</a>';
  136.     //echo "Equipo: " . $fila["nombre_equipo"];
  137.     echo "</td>";
  138.    
  139.     echo "<td>";
  140.     echo "<b>" . $fila["salario"] . " €</b>";
  141.     echo "</td>";
  142.    
  143.     echo "<td>";
  144.     //echo "<b>  " . $fila["nombre_pais"] . '</b>';
  145.     echo '<a href="index.php?pais=' . $fila["id_pais"] . '">' . $fila["nombre_pais"] . ' ';
  146.     echo '<img border="0" src="images/iconos-paises/' . $fila["imagen_pais"] . '" width="18" height="15">';
  147.     echo '</a>';
  148.     echo "</td>";
  149.    
  150.     echo "<td>";
  151.     echo "<b>" . $fila["edad"] . " </b>";
  152.     echo "</td>";
  153.  
  154.     echo "<td>";
  155.     //echo "<b>  " . $fila["nombre_atributo"] . '</b>';
  156.     echo '<a href="index.php?atributo=' . $fila["id_atributo"] . '">' . $fila["nombre_atributo"] . '';
  157.     echo '</a>';
  158.     echo "</td>";
  159.     echo "</tr>";
  160.     echo "</tbody>";
  161.     echo '</table>';
  162.  
  163.  }
  164. }else{
  165.     //es que no se encontraron anuncios
  166.     echo"<p>No se encontraron jugadores para mostrar...</p>";
  167. }
  168.  
  169. ?>
  170.      
  171. <!--Contenido del cuerpo-->
  172.  
  173. <?php
  174. include("plantillas/pie.php");
  175. ?>

Función que llama al país

Código PHP:
Ver original
  1. function dame_nombre_pais($id){
  2.     if (ctype_digit($id)){
  3.     $ssql = "select nombre_pais from pais where id_pais=" . $id;
  4.     $rs = mysql_query($ssql);
  5.     //compruebo si se encontró un país
  6.     if (mysql_num_rows($rs)>0){
  7.         $fila =mysql_fetch_array($rs);
  8.         return $fila["nombre_pais"];
  9.     }
  10.     return "equipo desconocido...";
  11.     }else{
  12.     return false;
  13.     }
  14.  }
  #7 (permalink)  
Antiguo 30/09/2012, 08:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Buscador para base de datos

Bien, ¿pero quieres explicarnos poco a poco con tu código nuevamente tus problemas?

No es posible que tengamos que pedir el favor de expandir la información cada vez que respondes, ponte en nuestro lugar y piensa que tampoco entendemos en totalidad con sólo ver código.

La explicación inicial que expones y el código así de pronto no nos dice nada, haz un último esfuerzo y usa el sentido común.

Gracias.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 30/09/2012, 16:24
dankko
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Buscador para base de datos

Vamos por partes, porque parece que me expliqué mal, lo siento si es así.

1º al acceder al index.php (http://tjlfifa.webcindario.com/jugadores/), en la tabla, en el campo "pais", algo debo estar enlazando mal, la verdad, no se que es ya que he comprobado varias veces la función que puse arriba y los enlaces (echo '<a href="index.php?pais=' . $fila["id_pais"] . '">' . $fila["nombre_pais"] . ' '; ).

El problema es, que según el buscador, todos loa países tienen el ID 1, pero al revisar la base de datos en phpmyadmin todos tienen el ID correcto, es sólo al mostrase en la página.

2º Problema que quiero resolver:

El thead se me repite para cada jugador de la tabla, ¿cómo puedo corregir esto?

3º Duda:

Quería implementar dos tipos de búsqueda, una búsqueda simple y una más completa que permita buscar por las estadísticas del jugador ( si hacéis click en el algún jugador os muestra sus estadísticas).

Pensé en hacer la primera búsqueda con SELECT AGAINST y MATCH, aunque la verdad no se como puedo hacerlo.

La segunda, como será el buscador más completo pensé hacerlo con LIKE para cada campo de la búsqueda.

La verdad tengo alguna ligera idea pero no del todo clara, necesitaba alguna referencia o alguna idea más.

Espero haberme explicado bien, de lo contrario, intentaré explicarlo de nuevo.

Gracias
  #9 (permalink)  
Antiguo 01/10/2012, 14:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Buscador para base de datos

1. Revisando el enlace parece que estás equivocado, yo si veo al poner el mouse encima de varios enlaces que eventualmente el ID cambia
2. Pues si la definición de la tabla la tienes dentro del bucle, ¿cómo esperas que no se repita?
3. Ese problema es cuestión del diseño de tu BD, no hay relación necesaria con PHP
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: formulario, tabla, buscadores
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 22:22.