Comunidad de diseño web y desarrollo en internet online

PROBLEMA CON SWICH EN PHP Y MYSQL

Citar            
MensajeEscrito el 21 Sep 2011 08:00 pm
hola tengo el siguiente problema




si no se ve en este link, lo pondre en que que sugieren XD
http://l4c.me/fotos/elestudiantefantasma/esquema-de-tabla-de-buscador

este dibujo es en teoria de lo que quiero hacer, el campo tipo me permitira filtrar entre que tabla devera buscar, mientras tanto el campo CLAVE sera el filtro de acceso, el codigo que estoy manejando para esto es el siguiente


Código PHP :

<a href="<?php
        if (isset($_GET['TIPO'])){
                 switch ($_GET['TIPO']){                  
                case "tecnologia":
                  $page ="tecnologia/tecnologia.php?CLAVE=".$row_clasificado['CLAVE'];                      
               echo $page;                    
               break;                  
               case "Vehiculos":
                 $page = "VEHICULOS/Vehiculos.php?CLAVE=".$row_clasificado['CLAVE'];                      
               echo $page;                  
               break;
                    }
               }else{
         // valor por defecto si no recibe valor del get
    $page = "VEHICULOS/Vehiculos.php?CLAVE=".$row_clasificado['CLAVE'];                      
               echo $page;
              }
         ?>
    "> 



al dar clic en uno de los vinculos, me sale lo siguiente

Unknown column 'Aut001' in 'where clause'


Aut001 es la clave, siento que me hace falta algo.

gracias amigos y espero su respuesta

Por sombra-fantasma

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Sep 2011 08:54 pm
hola, te aconsejo que imprimas la consulta mysql y compruebes que se realiza correctamente ya que ahi te esta diciendo que no existe una columna Aut001 en la tabla, lo cual es cierto ya que Aut001 es una clave, por lo tanto lo que pasa es que probablemente la consulta se este formando mal. habria que ver como haces la consulta a la bd

Por bray

65 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Sep 2011 12:40 am
mi consulta de base de datos es la siguiente

SELECT *
FROM busqueda
WHERE TITULO AND DESCRIPCION LIKE '%colname%' OR TITULO LIKE '%colname%'

creo que ya me acabas de dar una idea de en donde esta el problema, lo voy a checar, gracias de todos modos y espero tu respuesta

Por sombra-fantasma

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Sep 2011 02:05 am
no me resulto lo que pensaba, crei que si agregaba en el WHERE la CLAVE, me lo vincularia de la manera correcta, pero no, gracias y espero su respuesta

Por sombra-fantasma

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Sep 2011 11:24 am
Hola , primero decirte que esa consulta no es correcta, cuando pones TITULO AND DESCRIPCION LIKE:..

intentas decir a sql que ambos deben cumplir esa condición, pero eso no funciona así, debes indicar por separado la condición que deben cumplir

es decir (TITULO LIKE '%colname%' AND DESCRIPCION LINE '%colname%' )de esta forma te aseguras de que te entienda correctamente

Por otro lado no veo una columna titulo , en la tabla busqueda que has puesto en el esquema. Ademas no entiendo bien que quieres decir cuando dices que CLAVE es el filtro de acceso, no se si son una lista de palabras para buscar, una clave externa o que, ni tampoco lo que significa 'colname' en el where, ya que no se si es el resultado de una búsqueda concreta que has realizado , o es que la consulta la has escrito asi, en principio te voy a decir como haría yo la búsqueda ok

supongamos que la palabra clave de búsqueda es solo una y que viene en $keyword

Código PHP :

$query = " SELECT *
               " FROM BUSQUEDA "
               " WHERE (TITULO LIKE '%$keyword%' )
                 OR ( DESCRIPCION LIKE '%$keyword%');"

Por bray

65 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Sep 2011 04:48 am
Hola Bray, gracias por responder, se me paso incluir en el dibujo el campo TITULO XD,

La CLAVE es un capo que estoy colocando en mis tablas con un valor unico e irepetible (la diferencia con el ID, que es un valor autoincrementable en la tabla Vehiculo y Tecnologia,) pero que pueda reutilizar en la tabla BUSQUEDA

lo que tengo es lo siguiente;
tengo 4 paginas en php,

La primera es Index.php, este tiene un Buscador con la sentecia descrita anteriormente (gracias por la correccion), la 2° pagina es Buscador.php, que muestra los registros de una tabla que realice tomando campos comunes de la tabla Tecnologia y Vehiculos, la 3° pagina es Vehiculos.PHP que es una pagina "Detalle", con lo cual doy con mayor numero de detalle la informacion de mi base de datos de la tabla Vehiculos, la 4° pagina es igual una pagina "Detalle", pero de tecnologia.

en la pagina Buscador, los datos de la tabla que e muestran son:

IMAGEN TITULO TIPO

lo que inteto hacer es que cuando alguien le de clic en la IMAGEN,se procese una desicion en el cual, si el campo TIPO es vehiculos, se valla a la pagina VEHICULOS.PHP filtrando por la CLAVE, para que nada mas me muestre los datos de ese registro, de lo contrario, si el campo tipo dice tecnologia, se valla a la pagia TECNOLOGIA.PHP filtrando por la clave para obtener los datos de ese registro.

se me ocurrio hacerlo mediante un SWICH en caso que en un futuro cercano, tenga que agregar mas tablas a mi base de datos, solo tendria que agregar unos CASE mas sin tanto problema y realizar la pagina "detalle" de las nuevas tablas XD.

El "colname" es el nombre de mi variable que sera procesada en la busqueda.

estoy pensado en que a lo mejor lo que podria hacer seria crear una pagina Redireccion.PHP para realizar la decicion de direccionamiento a la pagina "Detalle" de cada tabla, ya que eh tenido unos problemillas con el codigo, y no me filtra como deveria ser, mi enlace a la pagina podria ser el siguiente

Código HTML :

<a href="Redireccion.php?CLAVE=<?php echo $row_clasificador['CLAVE']; ?>"> 


y ya la CLAVE la puedo manejar de la siguiente forma (como ejemplo XD)

A001 - A999 Vehiculos

T001- T999 Tecnologia,

nada mas que no se como hacer esa indicacion que si le que tiene la clave la letra A, vinculrlo a vehiculos, y si tiene la letra T, vincularlo a Tecnologia.
mas no se cual se vea mas viable.

Muchas gracias amigo y espero tu respuesta .

Por sombra-fantasma

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Sep 2011 09:41 am
Ahora si lo he entendido mejor jejejejeje,

cuando pasas la variable colname, si es una variable php le falta el simbolo $, al principio para que php indicque su valor, si no , sql lo tomara como una cadena literal.


Para ahorrar en switchs e if yo haria esto, haría que el campo tipo fuese una constante, y que el valor indicase a donde se va, es decir supón que leo el dato de la tabla búsqueda y obtengo el tipo , donde $tipo = 'tecnologia'

pues construiría el enlace asi

Código PHP :

echo '<a href="'.$tipo.'.php?CLAVE='.$row_clasificador['CLAVE'].' ">';


de esta forma tu te olvidas de lo que vale el campo tipo, simplemente indicas que el enlace se forma con su valor.

no se como introduces los datos en la tabla, pero para esto convertiría tipo en un ENUM en la tabla SQL

por ejemplo ENUM('tecnologia','vehiculos') y de esta forma me aseguraría de obtener siempre datos validos, si permites que un usuario indique el tipo de imagen, se la das a seleccionar desde una lista y te evitas problemas de que los pongan con mayuscula o se coman alguna letra...

Por bray

65 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Sep 2011 12:43 am
Hola, Muchas gracias BRAY por responder, intente la forma como lo mencionaste, pero no pude hacer que me quedara bien XD, segui intentadon, y se me ocurrio una forma, con la cual me dio resultado, con la idea de dejar en una Variable row_clasificador['TIPO']

Código PHP :

 <?php

$tipo = $row_clasificador['TIPO'];

                 switch ($tipo) {                  
                case "comercios":
                  $page ="TECNOLOGIA/tecnologia.php?CLAVE=".$row_clasificador['CLAVE'];                      
               echo $page ;
               break;                  
               
               case "vehiculos":
                  $page ="VEHICULOS/vehiculos.php?CLAVE=".$row_clasificador['CLAVE'];                      
               echo $page;                  
               break;
}?> 


Muchas gracias por todo XD

Por sombra-fantasma

7 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.