Foros del Web » Programando para Internet » PHP »

problema con mysql

Estas en el tema de problema con mysql en el foro de PHP en Foros del Web. Hola... ando con un problema... tengo un buscador en mi sitio el cual guarda las keywords de las busquedas en una base de datos mysql. ...
  #1 (permalink)  
Antiguo 15/03/2006, 12:29
 
Fecha de Ingreso: noviembre-2004
Mensajes: 14
Antigüedad: 20 años
Puntos: 0
problema con mysql

Hola... ando con un problema... tengo un buscador en mi sitio el cual guarda las keywords de las busquedas en una base de datos mysql. El problema es que cada vez que realizan una busqueda, me guarda 2 o 3 veces la misma busqueda, y no se como hacer para que esto no ocurra, y lo ingrese solamente una vez... creo que una solucion seria que permita guardar solo 1 vez determinada keyword... y no que tenga varias veces la misma busqueda... pero no encuentro la forma.

Me podrian ayudar con esto? gracias!!
  #2 (permalink)  
Antiguo 15/03/2006, 15:57
Avatar de bistoco  
Fecha de Ingreso: marzo-2006
Mensajes: 141
Antigüedad: 18 años, 8 meses
Puntos: 0
tienes dos opciones....

1.- en la tabla ke guarda las keyword , poner este campo como llave primaria y asi no se repetira , pero igualmente tienes ke hacer una consulta para ke no te lance un error

2.- esta es la opcion ke yo ocuparia, antes de ingresar una nueva keyword a la base de buskeda pregunta

$sql="SELECT COUNT(columna_keyword) AS numero FROM tabla_keywords WHERE columna_keyword LIKE '".$keyword_para_insertar."'";
$fila=mysql_fetch_array($mysql_query($sql,$conexio n);
// pregunto por el numero de keywods ke existen = a la ke kiero ingresar
// tecnicamente puede ser 1 o 0
if($fila['numero']==0){
$sql="INSERT INTO tabla_keyword(campos...) VALUES(valores...)";
$r=mysql_query($sql_conexion);
}


saludos
  #3 (permalink)  
Antiguo 15/03/2006, 16:08
 
Fecha de Ingreso: noviembre-2004
Mensajes: 14
Antigüedad: 20 años
Puntos: 0
si, ya habia logrado hacerlo poniendolo como llave primaria... gracias igual...

Ahora el tema es que necesito contar la cantidad de cada busqueda que se realice.. para luego poder armar algo de lo mas buscado, etc.

Alguna idea??

Muchas Gracias!!!
Facundo.
  #4 (permalink)  
Antiguo 15/03/2006, 16:47
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
Cita:
me guarda 2 o 3 veces la misma busqueda, y no se como hacer para que esto no ocurra, y lo ingrese solamente una vez..
Por favor reviza las FAQ... para eso están. Hay una que titula algo como: "Cómo evitar guardar datos repetidos en la BD?".

Cita:
Ahora el tema es que necesito contar la cantidad de cada busqueda que se realice
no entendí bien... pero, como mencionas que manejas "keywords", podrías añadir una columna que almacene las "coincidencias" de busqueda... no es más que aumentar la cantidad en uno si hubo coincidencia...

Prueba...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 15/03/2006, 17:19
 
Fecha de Ingreso: noviembre-2004
Mensajes: 14
Antigüedad: 20 años
Puntos: 0
Cita:
no entendí bien... pero, como mencionas que manejas "keywords", podrías añadir una columna que almacene las "coincidencias" de busqueda... no es más que aumentar la cantidad en uno si hubo coincidencia...
Eso justamente necesito... pero recien empiezo a manejar todo el tema de mysql... me podrias armar un ej simple?... te lo agradeceria... luego yo me doy la manija para hacerlo andar en mi buscador...

Gracias!!!
  #6 (permalink)  
Antiguo 15/03/2006, 20:09
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 11 meses
Puntos: 1
a que no se saben esta...

Eso que quieres hacer de no guardar datos repetidos se puede hacer básicamente de dos formas (hacerlo Primary Key o bien Unique, no es necesariamente la mejor de todas)...

Método Complicado:

1. Hay que hacer dos consultas, en la primera se usa un SELECT más o menos así para saber si ya está almacenada con anterioridad:

SELECT keyword FROM palabras WHERE keyword = "forosdelweb";

2. Contar el número de ocurrencias de la palabra buscada para ver si ya ha sido insertada:

$num = mysql_num_rows($resultado_de_la_consulta);

3. Si (if) la variable $num es mayor a CERO, quiere decir que ya se almacenó previamente la palabra, en cuyo caso no hacemos nada, pero si no, hay que almacenarla:

INSERT INTO palabras(keyword) values ("forosdelweb");

Método Fácil:

Hay una sola instrucción en MySQL que sirve para hacer todo eso que acabo de mencionar de una sola sentada:

REPLACE INTO palabras(keyword) values ("forosdelweb");

Lo que hace es lo mismo que Insert, pero si encuentra una fila con un elemento anterior igual a la fila que se quiere ingresar, entonces la borra antes de insertar.

Aunque usted no lo crea, de Rippley.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
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 21:26.