Ver Mensaje Individual
  #3 (permalink)  
Antiguo 24/08/2004, 18:57
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Fijate bien el valor que toma $url antes de atacar tu sentencia SQL.

Es probable que uses magic_quote_gpc = ON (que es lo normal y "seguro" en la mayoría de casos) .. eso ocasiona un escape (caracter /) antes de los / así que tal vez estés recibiendo:

http:////www.tal.tal// y no http://www.tal.tal que es lo que esperas y lo que seguramente tienes en tu BD almacenado actualmente.

Para solventar ese problema puedes aplicar la función:

stripslashes()
http://www.php.net/manual/en/function.stripslashes.php

que, elimina los / de más que tienes.

-------

Por otro lado .. NO puedes hacer esto:

Código PHP:
$sqlurl=mysql_db_query("consultex","select * from links where link like'%".$url."%'"); 

if(
$sqlurl==$url){ 
No sé si realmente sabes que hace la ejecución de una consulta SQL vía tu mysq_db_query() (o mysql_query() previo mysql_selec_db() que es lo que deberías usar).

Cuando tu ejecutas una consulta SQL vía esa función .. se origina un "record-set" .. pero los resultados que "puedas" obtener debes de "sacarlos" hacia PHP vía funcoines como mysql_fetch_array() (o del grupo mysql_fetch_xxxx()) o mysql_result() .. pero NOOOO esperar que esa consulta SQL te va a devolver un sólo registro y el dato concreto que andas buscando .. te recuerdo que un "registro" tiene N campos .. campos que "llamas a todos" con ese * que usas para tu SELECT de SQL .. así que NUNCA vas a obtener lo esperado así .. Además usas "LIKE" .. con comodines (%) lo cual implica que te va a dar como resultado todo lo que contenga tu cadena a buscar .. NO exactametne lo que indiques (que sería lo lógico si es que andas UN sólo resultado).

Deberías hacer:
Contar los registros que coinciden con tu cadena a buscar entre los registros (y campo URL) de tu tabla "links" .. Eso lo haces vía SQL (lo más óptimo frente a un mysql_num_rows() .. ) con la función SQL: COUNT() ... Esa sentencia SQL devuelve -UN sólo registro- con el total de coincidencias de tu condición (lo que va despues del "WHERE" ..) .. así que si es > 0 ...(1 o más) no tendrás que hacer tu "INSERT" (crear tu registro) por qué ya existe.

Y para obtener ese único resultado ... como sé que sólo va a devolver un sólo registro .. ("record-set") uso la función directa: mysql_result() al resultado "0" (no va a existir más).

Código PHP:
mysql_select_db("consultex");
$sqlurl=mysql_query("select COUNT(*) from links where link = '".$url."'"); 

if(
mysql_result($sqlurl,0) == 0){ 
  
mysql_query("insert into links(titulo,link,descripcion,categoria) Values ('$titulo','$url','$descripcion','$categoria')"); 

} else { 
    echo 
"La Direccion ya se encuentra en la Base de Datos"


Un saludo,