Foros del Web » Programando para Internet » PHP »

Solo dos preguntas...

Estas en el tema de Solo dos preguntas... en el foro de PHP en Foros del Web. Hola: Tengo un codigo que en general funciona de las mil maravillas, solo que hay un par de detalles que no he podido resolver. No ...
  #1 (permalink)  
Antiguo 29/04/2005, 00:52
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 15 años
Puntos: 0
Solo dos preguntas...

Hola:

Tengo un codigo que en general funciona de las mil maravillas, solo que hay un par de detalles que no he podido resolver. No coloco los codigos porque como les digo, funciona todo bien, menos:

1.- Se trata de un buscador que, mientras ingreses parametros de busqueda te da las respuestas perfectas y correctamente. El problema es que, si no introduces nada en la casilla de texto y le das a buscar, te muestra todo lo que hay en la base de datos. Se que existe la forma de decirle que "si no se coloca nada, no muestres nada". Eso necesito, se que lo he visto funcionar pero no tengo claro como hacerlo.

2.- Se trata de un directorio extraido de la base de datos en el que se muestran una serie de categorias ordenadas alfabeticamente, de la A a la Z. Lo que quisiera (esto no lo he visto asi que no se si se puede) es que, como son tantos registros que se muestran en 4 columnas (son mas de 200 categorias), poder colocar por medio de la misma consulta o por PHP, no se, quizas la letra A sobre los resultados que empiezan con A, una B sobre los de B, etc. O al menos, al terminar la letra A, un par de espacios hacia abajo antes de los de la letra B y asi... Se puede hacer algo asi sin tener que inventar mucho?
  #2 (permalink)  
Antiguo 29/04/2005, 02:18
 
Fecha de Ingreso: diciembre-2003
Mensajes: 213
Antigüedad: 14 años
Puntos: 0
1.- no se, pero como el parametro de la busqueda lo recibiras por GET o POST pues entonces:
if (isset($_REQUEST["Nombre_campo_formulario_de_busqueda"]))
{
Realizar_busqueda();
}
else
{
Escribir_algo_vacio(); //yo que se, una tabla vacia o lo que sea
}

2.- Yo realizaria la consulta SQL en varias tandas, primero las que empiezan por A, luego las que empiezan por B.....
SELECT lo_que_sea FROM tabla WHERE lo_que_sea LIKE 'A%'; --->Obtienes las A...
SELECT lo_que_sea FROM tabla WHERE lo_que_sea LIKE 'B%'; --->Obtienes las B...
................

Asi ya las tienes separadas por cada inicial, pero bueno, esta es una de las muchas opciones.
  #3 (permalink)  
Antiguo 29/04/2005, 02:22
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 15 años
Puntos: 0
Gracias Kurlax, voy a probar a ver que tal....
  #4 (permalink)  
Antiguo 29/04/2005, 02:37
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 15 años
Puntos: 0
creo que me va a tocar poner los codigos, pues no se exactamente en que parte debo poner las modificaciones que me sugieran...

Caso 1.-

Código PHP:
<? 
$conexion 
mysql_connect("localhost","bogonli_entre2","a4tech") or die("No se pudo realizar la conexion con el servidor."); 
mysql_select_db("bogonli_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(
$Buscacriterio)){
 
$txt_criterio=$Buscacriterio;
 
$criterio " where nombre like '%" $txt_criterio "%' or categoria like '%" $txt_criterio "%' or subcategoria like '%" $txt_criterio "%'"
}
 else{ 
if (
$_GET["criterio"]!=""){ 
   
$txt_criterio $_GET["criterio"]; 
   
$criterio " where nombre like '%" $txt_criterio "%' or categoria like '%" $txt_criterio "%' or subcategoria like '%" $txt_criterio "%'"
}
else
  if (
$_POST){ 
   
$txt_criterio $_POST["palabra"]; 
   
$criterio " where nombre 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><div align='center'>"
    echo 
"<font face='arial' class='texto'>No se encontraron resultados</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=5

    
//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 "<div align='center'>"
echo 
"<font face='arial' class='texto'>Fueron encontrados ".$numeroRegistros." resultados en nuestra base de datos.<br>";
echo 
"Esta es la p&aacute;gina " $pagina " de un total de " $numPags "<br><br><br>";

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

echo 
"<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='mailto:".$registro[email_uno]."'>".$registro[email_uno]."</a> ";
if (!empty(
$registro[email_dos])){
echo 
"- <a href='mailto:".$registro[email_dos]."'>".$registro[email_dos]."</a><br>";
echo 
"Ubicaci&oacute;n: ".$registro[barrio]."<br><br><br>";

}
}
//fin while     
}  
?>
Caso 2.-

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

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

$consulta "SELECT DISTINCT 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='resultados.php?Buscacriterio=$row[categoria]'>".$row[categoria]."</a><br>"

$counter++; 


echo 
"</td></tr></table>";
?>
  #5 (permalink)  
Antiguo 29/04/2005, 11:30
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 15 años
Puntos: 0
nada que doy con las respuestas. ni siquiera en internet he podido encontrar algo.

Alguien me ayuda???
  #6 (permalink)  
Antiguo 30/04/2005, 05:52
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
1) if(strlen($cadena_recibida)==0) echo "No tecleaste nada";

2)... ... lo que dice kurlax esta bien... sencillo, pero bien.



Edito: www.php.net/strlen
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #7 (permalink)  
Antiguo 30/04/2005, 16:41
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Lo mejor en este caso es utilizar la función empty() en lugar del strlen() que propone jam1138.
http://www.php.net/empty
Código PHP:
if(empty($variable)){
    echo 
"No tecleaste nada";

Saludos
  #8 (permalink)  
Antiguo 30/04/2005, 16:52
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Hola

Debes asegurar que la varible esta totalmente vacia, y ademas que el usuario no puso espacios en blanco, etc.


Algo como:

if(empty(trim($variable)) ){
echo "No tecleaste nada";
}

Ahi, primero limpiaste la variable de cualquier caracter raro, y luego dices que si esta vacia.

De las consultas, intentaste algo como:

select X from X where X order by nombre asc

Es un ejemplo, lo que hace es ordenar los resultados por x campo, y lo que quieres de los esapcios en los resultados, debes hacerlo con php, cuando muestras los resultados dices algo como:

Empieza con A ... Escribe un titulo

Ahora empiezan con B... Encribe un tiulo.

Etc... eso dentro del while donde muestras los resultados.

Suerte!!
  #9 (permalink)  
Antiguo 01/05/2005, 01:54
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Iniciado por jpinedo
Lo mejor en este caso es utilizar la función empty() en lugar del strlen() que propone jam1138.
En efecto... ¿en qué estaba pensando?? .

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

"100 años después, la revolución no es con armas, es intelectual y digital"
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 06:44.