Foros del Web » Programando para Internet » PHP »

Confusion en resultados

Estas en el tema de Confusion en resultados en el foro de PHP en Foros del Web. Hola: Para resumir les explico que realizo una consulta por ID_CATEGORIA y todo el codigo funciona perfecto, excepto por lo siguiente: Se trata de un ...
  #1 (permalink)  
Antiguo 14/07/2005, 00:34
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 15 años
Puntos: 0
Confusion en resultados

Hola:

Para resumir les explico que realizo una consulta por ID_CATEGORIA y todo el codigo funciona perfecto, excepto por lo siguiente:

Se trata de un listado de categorias que, al pulsar sobre una de ellas me muestra los datos del cliente que concuerdan con dicha categoria(enlace tipo resultado.php?id_categoria=$row[id_categoria]')

Aqui viene el problema:

Por ejemplo, la categoria es la No. 131
Al pulsar sobre ella, perfecto, muestra lo que debe PERO,

al pulsar la número 1, tambien me muestra la misma y al pulsar la número 13 también lo mismo.

Pregunto, cómo decirle al enlace del tipo antes mencionado que me muestre la categoría por el número exacto del ID y no por sus componentes?
  #2 (permalink)  
Antiguo 14/07/2005, 12:37
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 15 años
Puntos: 0
está tan dificil??????
  #3 (permalink)  
Antiguo 14/07/2005, 14:59
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 14 años
Puntos: 2
por favor, pon el codigo exacto donde creas el resultado.php?id_categoria=$row[id_categoria]' y el select donde obtienes el id_categoria.
  #4 (permalink)  
Antiguo 14/07/2005, 16:26
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 15 años
Puntos: 0
este es el codigo de la pagina directorio.php Al pulsar el en lace va a la otra pagina resultados.php

Código PHP:
<?
echo "<table><tr><td width=216 align=left valign=top>"

$conexion mysql_connect("localhost","XXX","XXX") or die("No se pudo realizar la conexion con el servidor."); 
mysql_select_db("principal",$conexion) or die("No se puede seleccionar BD");

$consulta "SELECT DISTINCT id_categoria,categoria FROM categorias ORDER BY categoria ASC";
$res=mysql_query($consulta); 

$counter=0
while(
$row=mysql_fetch_array($res)){ 

if(
$counter%70==&& $counter!=0){ 
echo 
"</td><td width=216 align=left valign=top>"


echo 
"<font color=#2278BB>•&nbsp<a href='categorias.php?id_categoria=$row[id_categoria]'>".$row[categoria]."</a><br>"

$counter++; 


echo 
"</td></tr></table>";
?>

sta es la pagina de resultados, funciona todo muy bien excepto eso, si hay coincidencia de caracteres en el nombre o el id o lo que sea, lo toma como parte de la categoria

Código PHP:
<?
$conexion 
mysql_connect("localhost","XXX","XXX") or die("No se pudo realizar la conexion con el servidor."); 
mysql_select_db("principal",$conexion) or die("No se puede seleccionar BD"); 
   
//$link=Conectarse(); 

//inicializo el criterio y recibo cualquier cadena que se desee buscar 
$criterio ""
$txt_criterio "";
if (isset(
$id_categoria)){
 
$txt_criterio=$id_categoria;
 
$criterio " where id_categoria like '%" $txt_criterio "%' or categoria like '%" $txt_criterio "%' or subcategoria like '%" $txt_criterio "%'"
}
 else{ 
if (
$_GET["criterio"]!=""){ 
   
$txt_criterio $_GET["criterio"]; 
   
$criterio " where id_categoria like '%" $txt_criterio "%' or categoria like '%" $txt_criterio "%' or subcategoria like '%" $txt_criterio "%'"
}
else
  if (
$_POST){ 
   
$txt_criterio $_POST["palabra"]; 
   
$criterio " where id_categoria like '%" $txt_criterio "%' or categoria like '%" $txt_criterio "%' or subcategoria like '%" $txt_criterio "%'"
   }
}
 
$sql="SELECT * FROM clientes".$criterio
$res=mysql_query($sql); 
$numeroRegistros=mysql_num_rows($res); 
if(
$numeroRegistros<=0)

    echo 
"<br><br><br><div align='center'>"
    echo 
"<font face='arial' class='texto'>Aún no tenemos clientes registrados en la categoría seleccionada.</font>"
    echo 
"</div>"
}else{ 
    
//////////elementos para el orden 
    
if(!isset($orden)) 
    { 
       
$orden="nombre"
    } 
    
//////////fin elementos de orden 

    //////////calculo de elementos necesarios para paginacion 
    //tama&ntilde;o de la pagina 
    
$tamPag=4

    
//pagina actual si no esta definida y limites 
    
if(!isset($_GET["pagina"])) 
    { 
       
$pagina=1
       
$inicio=1
       
$final=$tamPag
    }else{ 
       
$pagina $_GET["pagina"]; 
    } 
    
//calculo del limite inferior 
    
$limitInf=($pagina-1)*$tamPag

    
//calculo del numero de paginas 
    
$numPags=ceil($numeroRegistros/$tamPag); 
    if(!isset(
$pagina)) 
    { 
       
$pagina=1
       
$inicio=1
       
$final=$tamPag
    }else{ 
       
$seccionActual=intval(($pagina-1)/$tamPag); 
       
$inicio=($seccionActual*$tamPag)+1
       if(
$pagina<$numPags
       { 
          
$final=$inicio+$tamPag-1
       }else{ 
          
$final=$numPags
       } 
       if (
$final>$numPags){ 
          
$final=$numPags
       } 
    } 
//////////fin de dicho calculo 

//////////creacion de la consulta con limites 
$sql="SELECT * FROM clientes ".$criterio." ORDER BY ".$orden.",nombre ASC LIMIT ".$limitInf.",".$tamPag
$res=mysql_query($sql); 
//////////fin consulta con limites 

/// estadisticas/////
echo "<br><br><br><div align='center'>"
echo 
"<font face='arial' class='texto'>Existen ".$numeroRegistros." clientes registrados en nuestra base de datos para ésta categoría.<br>";
echo 
"Los resultados se mostrarán en " $numPags " páginas<br><br>";

?>
<div align="center"><img src="imagenes/linea_google.gif" width="450" height="10"></div>
<?

/// mostrar los resultados encontrados//////
while($registro=mysql_fetch_array($res)) 

echo 
"<br><div align='left'>";
echo 
"<br><br><b><a href=".$registro[url]."  target=_blank>".$registro[nombre]."</a></b><br>";
echo 
"".$registro[descripcion]."<br><br>";
echo 
"Direcci&oacute;n: ".$registro[direccion]."<br>";
echo 
"Tel&eacute;fonos: ".$registro[telefonos]."<br>";
echo 
"Correo electr&oacute;nico: <a href='correo_usuario.php?email=".$registro[email_uno]."'>".$registro[email_uno]."</a> ";
if (!empty(
$registro[email_dos])){
echo 
"- <a href='correo_usuario_dos.php?email=".$registro[email_dos]."'>".$registro[email_dos]."</a><br>";
echo 
"Ubicaci&oacute;n: ".$registro[barrio]."<br><br>";
echo 
"Categor&iacute;a: ".$registro[categoria]."";
if (!empty(
$registro[subcategoria])){
echo 
" - ".$registro[subcategoria]."<br><br><br>";

}
}
}
//fin while     

//////////a partir de aqui viene la paginacion 
?>
He estado investigando lo de las expresiones regulares pero no encuentro solucion. Todas lo que hacen es comparar no limitar igualdades.
  #5 (permalink)  
Antiguo 14/07/2005, 16:32
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Necesito que me expliquen, por que en:
echo "<font color=#2278BB>•&nbsp<a href='categorias.php?id_categoria=$row[id_categoria]'>".$row[categoria]."</a><br>";

Llaman a una posicion con una constante???...ya lo he visto antes, y es una de la cosas mas incoherentes que he visto. Me parece que falta un poco de lectura en ciertos caso.


COn el tema de tu probelma, estas usando like, si le pasas 1, te traera 11, 134, 15, 51, 105...ect.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #6 (permalink)  
Antiguo 14/07/2005, 16:43
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 15 años
Puntos: 0
y sustituyo el like por???????????????

Gracias
  #7 (permalink)  
Antiguo 14/07/2005, 16:57
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 15 años
Puntos: 0
REsuelto...

es asi que debe quedar:

where id_categoria = " . $txt_criterio . "

Gracias
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 23:38.