Foros del Web » Programando para Internet » PHP »

pq no funciona mi buscador........

Estas en el tema de pq no funciona mi buscador........ en el foro de PHP en Foros del Web. les mando el code pq ke ma den una mano , ya que no tengo ni idea del pq no funciona el bucle.... Código PHP: ...
  #1 (permalink)  
Antiguo 29/10/2003, 18:18
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 14 años, 6 meses
Puntos: 5
pq no funciona mi buscador........

les mando el code pq ke ma den una mano , ya que no tengo ni idea del pq no funciona el bucle....


Código PHP:
<?

$conecta
=mysql_connect("localhost","cadrogui","mikel") or die ("conexion");

mysql_select_db("revista",$conecta);

$con=mysql_query("select * from contenido where cont_entero like '%$busca%'");

$muestra=mysql_fetch_array($con);


if (
$muestra=mysql_fetch_array($con)==1){


echo 
$muestra["cont_entero"];


    if (
$muestra=mysql_fetch_array($con)>1){


      while (
$muestra=mysql_fetch_array($con)){


        echo 
$muestra["cont_entero"];

    }
   }

}


?>
salu2

pd: este fue mi razonamiento.. si el registro devielto por el query es igual a uno lanza solo un resultado, si es mayor que 1 lanzalos en un bucle....
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl
  #2 (permalink)  
Antiguo 29/10/2003, 19:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Hay una función de PHP que te devuelte el total de registros que ejecutes en un mysql_query() .. se llama:

mysql_num_rows() ..

Y algo mejor y más optimizado puedes obtener el total de registros que te dé una consulta usando la sentencia SQL:

COUNT()

SELECT COUNT(*) FROM tabla WHERE tal LIKE '%$tal%'

(count te devuelve un único registro con el total de coincidencias de tu condición WHERE .... así que puedes acceder a ese resultado con mysql_result() ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 29/10/2003, 21:42
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 14 años, 6 meses
Puntos: 5

parece ke no entendi bien...

pq no me resulta...


Código PHP:
<?

$conecta
=mysql_connect("localhost","cadrogui","mikel") or die ("conexion");

mysql_select_db("revista",$conecta);

$con=mysql_query("select count (*) from contenido where cont_entero like '%$busca%'");

$muestra=mysql_num_rows($con);

mysql_result($muestra)

//echo $muestra[cont_entero]
?>
me da error:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\appserv\www\revista\busqueda.php on line 9

Warning: Wrong parameter count for mysql_result() in c:\appserv\www\revista\busqueda.php on line 11


alguna sugerencia..


salu2
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl
  #4 (permalink)  
Antiguo 29/10/2003, 22:28
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
mmm...

Tienes que poner COUNT(*) así... sin espacio entre la "T" y el paréntesis.

Siempre que tengas un error así:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource... etc, etc...

Revisa antes que nada la sintaxis en la consulta sql
"SELECT... etc..."

Saludos

Última edición por jpinedo; 29/10/2003 a las 22:32
  #5 (permalink)  
Antiguo 30/10/2003, 06:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
A todo esto .. O usas COUNT() o usas mysql_num_rows() pero no ambas.

Si usas COUNT() .. debes acceder al registro/campo que te dá ese dato del total con:

Código PHP:
$total=mysql_result($con,0);
echo 
"El total de coincidencias es: ".$total
Y si usas mysql_num_rows() la consulta SQL es la misma que ya tenias (sin COUNT()) y no se hace un mysql_result() ni nada más por qué esa función ya te devuelve el dato del total de registros que salío de tu consulta SQL.

Un saludo,

PD: visita www.php.net y lee como se usan las funciones. Y usa el buscador del foro .. también te ayudará.
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 30/10/2003, 17:22
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 14 años, 6 meses
Puntos: 5
ahora funciona pero como hago para mostrar los contenidos de la busqueda????


asi lo trate de hacer
Código PHP:

$conecta
=mysql_connect("localhost","cadrogui","mikel") or die ("conexion");

mysql_select_db("revista",$conecta);

$con=mysql_query("select count(*) from contenido where cont_entero like '%$busca%'");

$muestra=mysql_fetch_array($con);


//echo $muestra[cont_entero]

$total=mysql_result($con,0);
echo 
"El total de coincidencias es: ".$total.'<br>';


if (
$total==1){

echo 
$muestra[titulo];

}else{

while (
$muestra=mysql_fetch_array($con)){

echo 
$muestra[cont_entero];

}


alguna sugerencia....


salu2
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl
  #7 (permalink)  
Antiguo 30/10/2003, 18:23
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Si lo que quieres es mostrar todos los registros, mejor olvidate del COUNT(*), y simplemente haz la consulta y usa mysql_num_rows() para saber el numero de registros.

Y por cierto, el while te sirve para mostrar 1 o mas registros. A no ser que cuando sea solo uno quieras mostrarlo diferente, no hace falta diferenciar el caso en que solo te devuelva 1.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 31/10/2003, 06:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si el fin de todo esto es ver si hay 1 registro o más y si existe hay que desplegar su información ..mejor usa mysql_num_rows() ..

Pero, tambien se puede hacer una consulta via COUNT() y ver si hay mas de un registro ... si existe ahí tendrás que hacer otra consulta (mysql_query()) SIN count() para extraer los resultados que pueda arrojar (sea 1 o mas de uno).

Si prevees que las posibilidades de que no se encuentre ningun registro van a ser altas y esa tabla trabaja con muchos registros .. tal vez te conviene usar COUNT() y luego tu mysql_query() con un SELECT normal ..

El "COUNT()" es más ràpido en decir si "existe" o no mas de un registro bajo esa condición de tu consulta (WHERE ...) pero si ademas de saber si existe o no .. deseas obtener dicho registro debes hacer una consulta mas que será para obtener ese registro. Por esto mismo, en algunos casos puede ser más optimo y en otros no.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 02/11/2003, 23:54
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
Sobre el uso de COUNT(*), dejo este link donde se puede uno hacer una idea bastante clara:

http://www.programacion.com/bbdd/tut...sql_basico/12/

Saludos
  #10 (permalink)  
Antiguo 03/11/2003, 05:15
Avatar de jercer  
Fecha de Ingreso: octubre-2003
Mensajes: 373
Antigüedad: 14 años, 1 mes
Puntos: 13
Donde pones:

$con=mysql_query("select count(*) from contenido where cont_entero like '%$busca%'");

Pon:

$con=mysql_query("select count(*) as total, * from contenido where cont_entero like '%$busca%'");

Ahora para mostrar el número total solo tienes que cojer el campo 'total'.

Espero que esto lo soluciones
__________________
Jerónimo Cernuda
Wemaster de McAnam.com
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 03:46.