Foros del Web » Programando para Internet » PHP »

Pagina de busqueda II

Estas en el tema de Pagina de busqueda II en el foro de PHP en Foros del Web. Hola gente!. Estoy creando una pagina de busqueda en mi web, esto consiste en ingresar el nombre de un objeto y buscarlo en la DB, ...
  #1 (permalink)  
Antiguo 25/08/2015, 17:14
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 meses
Puntos: 12
Pagina de busqueda II

Hola gente!.

Estoy creando una pagina de busqueda en mi web, esto consiste en ingresar el nombre de un objeto y buscarlo en la DB, hasta aqui esto va perfecto.

Pero para perfeccionar algunas cosas de la busqueda requiero de su ayuda profesional y teniendome pasiencia dado a que soy novato hahaha.

Bueno, primero les mostrare este codigo que tengo actualmente:

Código PHP:
<?php
require('config.php');
            
$conexion mysqli_connect($host$user$pass)or die("Error al conectar con el servidor.");
            
mysqli_select_db($conexion,$db_world)or die("Error al conectar con la base de datos.");
    if(isset(
$_POST['buscar_item'])){
        
$nombre=$_POST['buscar_item_texto'];
            
$consulta mysqli_query($conexion ,"SELECT * FROM item_template WHERE name LIKE '%$nombre%' LIMIT 10");
                
            while(
$linea mysqli_fetch_array($consulta)){
            
$resultado_item[] = "
            <tr>
            <td>"
.$linea['name']."</td>
            <td>"
.$linea['class']."</td>
            <td>"
.$linea['subclass']."</td>
            </tr>
            "
;
            }
    }
    
mysqli_close($conexion);
?>
Hasta aqui lo que sucede es que al ingresar el nombre recibiremos 3 datos del objeto: Nombre, Clase y Subclase.

el valor de nombre es texto, pero el de clase y subclase es de numerico, es decir que recibiremos algo asi en el resultado: "Arco de Sombra" "2" "2".

Bueno aqui la pregunta que puede generarse es: ¿Porque la clase es 2 y la subclase tambien?.
Para responder esta pregunta les pondre unos datos:

Código:
Clases:
0 = consumible
1 = contenedor
2 = arma
3 = gema
4 = armadura
Código:
Subclases (Esto combina clase y subclase)
Clase | SubClase | Resultado
    0             0          Consumible
    0             1           Posion
    0             2             Elixir
    1             0              Bolsa
    1             1            Bolsa Almas
    1             2            Bolse Hierbas
    2             0            Hacha 1Mano
    2             1            Hacha 2Manos
    2             2               Arco
Este es un ejemplo real de las combinaciones...
Lo que yo quiero lograr en el codigo que esta ahi arriba es:
Que si yo busco la palabra "Arco" en la pagina de busqueda, esta como resultado me dara: "Arco Sombra" "2" "2"
Si busco hacha, me puede dar: "hacha pequeña" "2" "0" o tambien
"hacha grande" "2" "1"
(los nombres son ejemplos..)..
Bueno, yo quiero lograr que enves de que aparezcan esos numeros, quiero que muestre algo asi:
Supongamos que buscamos espadas y hay dos resultados, entonces diria:
"Espada Filosa" "Arma" "Dos Manos"
"Espada Rustica" "Arma" "Una Mano"


Eso quiero lograr, para que el usuario sepa que tipo de objeto es y si requiere dos manos o solo una mano.

Espero sepan perdonar si es que soy pesado con este tema, es que como he dicho varias veces.. soy novato y me gusta mucho este tema, y mas haya de solucionar problemas lo que quiero es lograr guardar esta info en mi cabeza para en un futuro saber rebuscarmela solo gracias a lo que he aprendido.

Desde ya muchas gracias y un saludo a todos!
  #2 (permalink)  
Antiguo 25/08/2015, 18:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Pagina de busqueda II

Primero debes generar un modelo en memoria con dichos valores, a partir de ahí ya puedes usar el índice para obtener el valor.

Es decir:
Cita:
0 = consumible
1 = contenedor
2 = arma
3 = gema
4 = armadura
Eso, lo debes almacenar en un array auxiliar:
Código PHP:
Ver original
  1. $x = [
  2.   0 => 'consumible',
  3.   1 => 'contenedor',
  4.   2 => 'arma',
  5.   3 => 'gema',
  6.   4 => 'armadura',
  7. ];
  8.  
  9. var_dump($x[2]); // arma

¿Se entiende la idea?

Si esos valores los tienes en la base de datos tendrás que extraerlos primero.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 25/08/2015, 18:52
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 meses
Puntos: 12
Respuesta: Pagina de busqueda II

Cita:
Iniciado por pateketrueke Ver Mensaje
Primero debes generar un modelo en memoria con dichos valores, a partir de ahí ya puedes usar el índice para obtener el valor.
Aqui ya tendria dichos valores en el array:
Código PHP:
<?php
require('config.php');
            
$conexion mysqli_connect($host$user$pass)or die("Error al conectar con el servidor.");
            
mysqli_select_db($conexion,$db_world)or die("Error al conectar con la base de datos.");
    if(isset(
$_POST['buscar_item'])){
        
$nombre=$_POST['buscar_item_texto'];
            
$consulta mysqli_query($conexion ,"SELECT * FROM item_template WHERE name LIKE '%$nombre%' LIMIT 10");
                
            while(
$linea mysqli_fetch_array($consulta)){
            
$clase=array('consumible','contenedor','arma','gema','armadura');
            
$resultado_clase=$linea['class'];
            
$tipo_clase=$clase[$resultado_clase];
            
$resultado_item[] = "
            <tr>
            <td>"
.$linea['name']."</td>
            <td>"
.$linea['class']."</td>
            <td>"
.$linea['subclass']."</td>
            </tr>
            "
;
            }
    }
    
mysqli_close($conexion);
?>
Pero, ahora como es que comparo lo que hay en el array con lo de la subclase?
  #4 (permalink)  
Antiguo 25/08/2015, 19:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Pagina de busqueda II

Pues si $clase es igual a $x, además $y es igual $linea['subclass'] entonces debes usar $x[$y] ¿por qué no lo intentas?

No necesitas una guía o ayuda para eso.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 26/08/2015, 13:10
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 meses
Puntos: 12
Respuesta: Pagina de busqueda II

Cita:
Iniciado por pateketrueke Ver Mensaje
Pues si $clase es igual a $x, además $y es igual $linea['subclass'] entonces debes usar $x[$y] ¿por qué no lo intentas?
Porque no comprendo.. soy novato y con mis ojos de novato lo unico para lograr lo que quiero hacer es asi:

Código PHP:
<?php
require('config.php');
            
$conexion mysqli_connect($host$user$pass)or die("Error al conectar con el servidor.");
            
mysqli_select_db($conexion,$db_world)or die("Error al conectar con la base de datos.");
    if(isset(
$_POST['buscar_item'])){
        
$nombre=$_POST['buscar_item_texto'];
            
$consulta mysqli_query($conexion ,"SELECT * FROM item_template WHERE name LIKE '%$nombre%' LIMIT 10");
                
            while(
$linea mysqli_fetch_array($consulta)){
            
$clase=array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17);
            
$resultado_clase=$linea['class'];
            
$tipo_clase=$clase[$resultado_clase];
            
$subclase=array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17);
            
$resultado_subclase=$linea['subclass'];
            
$tipo_subclase=$subclase[$resultado_subclase];
            if(
$tipo_clase==&& $tipo_subclase==2){
                
$tipo_subclase="Arco";
            }
            
$resultado_item[] = "
            <tr>
            <td>"
.$linea['name']."</td>
            <td>"
.$linea['class']."</td>
            <td>"
.$tipo_subclase."</td>
            </tr>
            "
;
            }
    }
    
mysqli_close($conexion);
?>
Claro que podria hacerlo... pero preferiria aprender una forma mas eficiente y con menos lineas de codigo.. supongo que unas.. 80 lineas de codigo o mas podrian reducirse a menos de 4 si no me equivoco... pero como dije.. ese es el codigo que tengo y no comprendo como ahorrar code..
Apreciearia un ejemplo con mi codigo como para entenderlo...

Etiquetas: busqueda, mysql, select
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 16:51.