Foros del Web » Programando para Internet » PHP »

Poner imagen Intercalada cada Xresultados de Busqueda

Estas en el tema de Poner imagen Intercalada cada Xresultados de Busqueda en el foro de PHP en Foros del Web. Tengo un Buscador interno en php/mysql me funciona perfecto, pero necesito que cada 5 resultados de busqueda me muestre una imagen un banner horizontal como ...
  #1 (permalink)  
Antiguo 14/09/2010, 15:23
 
Fecha de Ingreso: septiembre-2010
Mensajes: 78
Antigüedad: 14 años, 2 meses
Puntos: 0
Poner imagen Intercalada cada Xresultados de Busqueda

Tengo un Buscador interno en php/mysql me funciona perfecto, pero necesito que cada 5 resultados de busqueda me muestre una imagen un banner horizontal

como debo hacerlo ?.

Ejemplo:

Resultado #1
Resultado #2
Resultado #3
Resultado #4
Resultado #5
***Aqui va el banner***
Resultado #6
Resultado #8
Resultado #9
Resultado #10
***Aqui va otro banner***
Resultado #11

Gracias a los que me ayuden.
  #2 (permalink)  
Antiguo 14/09/2010, 15:29
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Poner imagen Intercalada cada Xresultados de Busqueda

Código PHP:
Ver original
  1. for($i = 0; $i < 100; $i++) {
  2.       if(($i &#37; 5)==0) {
  3.             echo "Banner<br />";
  4.       }
  5.       echo "Resultado : ".$i;
  6. }

Bueno, entre el $i y el 5, va un signo de porcentaje, no sé porque me sale ese código :/
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 21/09/2010, 16:28
 
Fecha de Ingreso: septiembre-2010
Mensajes: 78
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Poner imagen Intercalada cada Xresultados de Busqueda

Amigo tengo una duda , ese numero 100 esta prederminado, pero yo no se cuantos resultados de busqueda van a haber, si lo dejo si como esta me muestra perfectamente un banner cada 5 resultados pero me muestra 100 resultados y si solo hubieran 20?

Gracias por tu ayuda.
  #4 (permalink)  
Antiguo 21/09/2010, 16:46
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Poner imagen Intercalada cada Xresultados de Busqueda

Cita:
Iniciado por Mndrake Ver Mensaje
Amigo tengo una duda , ese numero 100 esta prederminado, pero yo no se cuantos resultados de busqueda van a haber, si lo dejo si como esta me muestra perfectamente un banner cada 5 resultados pero me muestra 100 resultados y si solo hubieran 20?

Gracias por tu ayuda.
Bueno, no recuerdo porque puse el 100... lo más probable que fuera solo un ejemplo .

Lo que debes hacer, es obtener el número de datos devueltos, de lo que creo es una consulta sql. Así que tendrías que asignarle ese valor a una variable, y luego esa variable ponerla donde yo puse el 100.

Cualquier duda, pregunta.

Nos vemos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #5 (permalink)  
Antiguo 21/09/2010, 20:11
 
Fecha de Ingreso: septiembre-2010
Mensajes: 78
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Poner imagen Intercalada cada Xresultados de Busqueda

Amigo ya investigue un poco pero se me present otro problema

$mysql = mysql_query("SELECT COUNT(*) FROM xxxx WHERE provincia = '$xxxxx' and canton = 'xxxx' and xxxx = 'xxxxx'")or die( "Error en query: $sql, el error es: " . mysql_error() );

while( $resul2 = mysql_fetch_row($mysql) )
{
print_r($resul2);
}

eso efectivamente me da el reusltado pero en esta forma:

Array ( [0] => 3 )


como hago para que simplemente me devuelva el numero 3 .
  #6 (permalink)  
Antiguo 21/09/2010, 21:39
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Poner imagen Intercalada cada Xresultados de Busqueda

Pero amigo, si buscas en php.net, deberías encontrar esto respeto a print_r :

Código:
print_r —  Imprime información legible para humanos sobre una variable 

 print_r() muestra información sobre una variable en una forma que es legible por humanos.

print_r(), var_dump() y var_export() mostrarán también propiedades protegidas y privadas de objetos con PHP 5. Miembros de la clase estática no se mostrarán.

Recuerde que print_r() moverá el puntero al final. Use reset() para llevarlo de vuelta al comienzo.
Es solo para ver si la variable tiene información, la cual es mostrada en una forma legible.

Si quieres solo mostrar '3', debes hacer echo $resul2[0].
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #7 (permalink)  
Antiguo 21/09/2010, 22:43
 
Fecha de Ingreso: septiembre-2010
Mensajes: 78
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Poner imagen Intercalada cada Xresultados de Busqueda

Gracias Spider_Boy ya entendi lo que me dijiste, si no es mucha molestia ayudame con este codigo porque no logro hacerlo trabajar correctamente

Código PHP:

/////////////////////////////////////////////////////////////////////////////////////////////
ESTO PAR SABER CANTIDAD DE RESULTADOS
/////////////////////////////////////////////////////////////////////////////////////////////
$mysql mysql_query("SELECT COUNT(*) FROM clientes WHERE provincia = '$provincia' and canton = '$canton' and $oferta = '$oferta'")or die( "Error en query: $sql, el error  es: " mysql_error() );

while( 
$resul2 mysql_fetch_row($mysql) )
{
  echo 
"$resul2[0]";


//////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////               
              
$b mysql_query("SELECT * FROM clientes WHERE provincia = '$provincia' and canton = '$canton' and $oferta = '$oferta'")or die( "Error en query: $sql, el error  es: " mysql_error() );
 
mysql_query("SET NAMES 'utf8'");


 


 while(
$row=mysql_fetch_assoc($b)){

$nombre $row["nombre"];
$detalle $row["detalle"];

          
      for(
$i 0$i $resul2$i++) {
   
            if((
$i 2)==0) {
   
                   echo 
"***************     Banner  **************************<br>";
   
            }
   
echo 
"$nombre  $detalle <br> ".$i;
   
      }              
         
 }
?> 
Asi como esta no funciona, si cambio

for($i = 0; $i < $resul2; $i++) {

esa variable por el numero 2 por ejemplo


me muestra los resultados duplicados, efectivamente me muestra el banner cada 2 pero cada resultado duplicado tambien.

Ayudame paraterminar este cogido que me tiene loco.

Muchas Gracias.
  #8 (permalink)  
Antiguo 22/09/2010, 08:49
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Poner imagen Intercalada cada Xresultados de Busqueda

Es que tienes el for dentro del while, y además $resul2, no es un número, es un resource. Intenta algo como esto :

Código PHP:
Ver original
  1. $i = 0;
  2.  while($row=mysql_fetch_assoc($b)){
  3.  
  4. $nombre = $row["nombre"];
  5. $detalle = $row["detalle"];
  6.  
  7. if(($i % 2) == 0) {
  8.     echo "***************     Banner  **************************<br>";
  9. }
  10.         ++$i;
  11.  }
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #9 (permalink)  
Antiguo 22/09/2010, 10:59
 
Fecha de Ingreso: septiembre-2010
Mensajes: 78
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Poner imagen Intercalada cada Xresultados de Busqueda

Cita:
Iniciado por spider_boy Ver Mensaje
Es que tienes el for dentro del while, y además $resul2, no es un número, es un resource. Intenta algo como esto :

Código PHP:
Ver original
  1. $i = 0;
  2.  while($row=mysql_fetch_assoc($b)){
  3.  
  4. $nombre = $row["nombre"];
  5. $detalle = $row["detalle"];
  6.  
  7. if(($i % 2) == 0) {
  8.     echo "***************     Banner  **************************<br>";
  9. }
  10.         ++$i;
  11.  }
Eso me funciono bien amigo solo que obvimente le agregue los resultados normales de busqueda :

Código PHP:
$i 0;
 while(
$row=mysql_fetch_assoc($b)){

$nombre $row["nombre"];
$detalle $row["detalle"];

if((
$i 2) == 0) {
    echo 
"***************     Banner  **************************<br>";
}
   echo
"$nombre  $detalle"    ++$i;
 } 

Ya me los pone el banner intercalado bien, Ahora como deberia hacer para mostrar esos banners intercalados, si tengo 10 Banners dinferentes


ejemplo:


Resultado #1
Resultado #2
Resultado #3
Resultado #4
Resultado #5
***Aqui va el banner***
Resultado #6
Resultado #8
Resultado #9
Resultado #10
***Aqui va otro banner***
Resultado #11
Resultado #12
Resultado #14
Resultado #15
***Aqui va otro banner***
Resultado #11
Resultado #16
Resultado #17
Resultado #18


Obivamente neceisto que el banenr no sea el mismo

los banners los tengo en una carpeta y la direcion en un campo de la base de datos.
  #10 (permalink)  
Antiguo 22/09/2010, 11:01
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Poner imagen Intercalada cada Xresultados de Busqueda

Pues antes del while, haces la consulta donde obtengas la ruta de cada banner. Luego creas otro contador, como hicimos con $i, y por cada if(($i % 10) == 0) aumentas el nuevo contador en 1, para sacar el siguiente banner.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #11 (permalink)  
Antiguo 22/09/2010, 12:54
 
Fecha de Ingreso: septiembre-2010
Mensajes: 78
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Poner imagen Intercalada cada Xresultados de Busqueda

Cita:
Iniciado por spider_boy Ver Mensaje
Pues antes del while, haces la consulta donde obtengas la ruta de cada banner. Luego creas otro contador, como hicimos con $i, y por cada if(($i % 10) == 0) aumentas el nuevo contador en 1, para sacar el siguiente banner.

Estoy intentando lo que me dices pero algo no tengo en el lugar correcto porque no funciona:

Código PHP:

////////////////////////////////////////////////////////////////////////////////////////////////

SELECIONO LOS BANNERS Y CREO EL CONTADOR 

////////////////////////////////////////////////////////////////////////////////////////////////

mysql_select_db("edupricr_baners")or die( "Error en query: $sql, el error  es: " mysql_error() );
$result mysql_query("SELECT * FROM intercalados")or die( "Error en query: $sql, el error  es: " mysql_error() );


$i 0;
while(
$row mysql_fetch_array($result))
  
  {
      
      if((
$i 1) == 0) {
  
$cada5 $row["cada5"];
  
  }
  
              


//////////////////////////////////////////////////////////////////////////////////////////

SELECIONO LOS DEMAS DATOS 

/////////////////////////////////////////////////////////////////////////////////////////////
mysql_select_db("edupricr_clientes")or die( "Error en query: $sql, el error  es: " mysql_error() );
$b mysql_query("SELECT * FROM clientes WHERE provincia = '$provincia' and canton = '$canton' and $oferta = '$oferta'")or die( "Error en query: $sql, el error  es: " mysql_error() );
 
mysql_query("SET NAMES 'utf8'");

////////////////////////////////////////////////////////////////////////////////////////////////////////
  
$i 0;
  
while(
$row=mysql_fetch_assoc($b)){
  
$nombre $row["nombre"];
$detalle $row["detalle"];

  
if((
$i 2) == 0) {          
//////////////////////////////////////////////////////////////////////////////////////
         
 
AQUI TRTO DE IMPRIMIR LOS BANNER INTERCALADOS

//////////////////////////////////////////////////////////////////////////////////////
 
echo"<img src='banners/cada5/$cada5'><br><br>";++$i;
    
          
      }
      
      }
       echo
"<img src='class.imagen.php?img=banners/instituciones/$logo&tip=1&w=70&h=70'> $b_nombre<br><br>";       ++$i;
  
       }
        
            
?> 

Algo debo tener en lugr equivocado porque no me funciona
  #12 (permalink)  
Antiguo 22/09/2010, 16:03
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Poner imagen Intercalada cada Xresultados de Busqueda

A ver...

Este modelo debes seguir :

Código PHP:
Ver original
  1. // Selecciono los banners, y saco el número de filas devueltas
  2. $query = mysql_query("SELECCIONO LOS BANNERS");
  3. $banners = mysql_fetch_array($query);
  4. $nroBanners = mysql_num_rows($query);
  5.  
  6. // Selecciono los otros datos
  7. $query2 = mysql_query("SELECCIONO LOS CLIENTES");
  8.  
  9. // Creo 2 contadores, uno para el intercalado
  10. // y el otro para el banner
  11. $contador1 = 0;
  12. $contador2 = 0;
  13. while($row = mysql_fetch_assoc($query2)) {
  14.      
  15.        // ...
  16.  
  17.        if(($contador1%2) == 0) {
  18.  
  19.             echo "Banner : " . $banners[$contador2];
  20.         ++$contador2;
  21.  
  22.        }
  23.        ++$contador1;
  24.      
  25.        // ...
  26. }

Bueno, prácticamente hice el ejercico. No sé si funcionará.

Espero te sirva. Nos vemos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #13 (permalink)  
Antiguo 22/09/2010, 17:32
 
Fecha de Ingreso: septiembre-2010
Mensajes: 78
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Poner imagen Intercalada cada Xresultados de Busqueda

Cita:
Iniciado por spider_boy Ver Mensaje
A ver...

Este modelo debes seguir :

Código PHP:
Ver original
  1. // Selecciono los banners, y saco el número de filas devueltas
  2. $query = mysql_query("SELECCIONO LOS BANNERS");
  3. $banners = mysql_fetch_array($query);
  4. $nroBanners = mysql_num_rows($query);
  5.  
  6. // Selecciono los otros datos
  7. $query2 = mysql_query("SELECCIONO LOS CLIENTES");
  8.  
  9. // Creo 2 contadores, uno para el intercalado
  10. // y el otro para el banner
  11. $contador1 = 0;
  12. $contador2 = 0;
  13. while($row = mysql_fetch_assoc($query2)) {
  14.      
  15.        // ...
  16.  
  17.        if(($contador1%2) == 0) {
  18.  
  19.             echo "Banner : " . $banners[$contador2];
  20.         ++$contador2;
  21.  
  22.        }
  23.        ++$contador1;
  24.      
  25.        // ...
  26. }

Bueno, prácticamente hice el ejercico. No sé si funcionará.

Espero te sirva. Nos vemos.


Muchisimas Gracias Spider_Boy por tu ayuda, le hice unos pequeños cambios a lo que que hicistes y me funciona bien efectivamente me muestra los banners cada 3 como le indique solo con un defecto.


EL primer banner es el unico que muestra

Primer Banner / Correcto



segundo banner /banners/cada5/ ***falta el nombre de la imagen ****


tercer banner / igual que el segundo


se que $banners es un array donde guardaste los nombres de los banners pero asi como esta solo muestra el primeo


Código PHP:
/////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////               
// Selecciono los banners, y saco el número de filas devueltas
mysql_select_db("edupricr_baners")or die( "Error en query: $sql, el error  es: " mysql_error() );
$query mysql_query("SELECT cada5 FROM intercalados")or die( "Error en query: $sql, el error  es: " mysql_error() );
$banners mysql_fetch_array($query);
$nroBanners mysql_num_rows($query);


// Selecciono los otros datos
mysql_select_db("edupricr_clientes")or die( "Error en query: $sql, el error  es: " mysql_error() );
$query2 mysql_query("SELECT * FROM clientes WHERE provincia = '$provincia' and canton = '$canton' and $oferta = '$oferta'")or die( "Error en query: $sql, el error  es: " mysql_error() );
 
// Creo 2 contadores, uno para el intercalado
// y el otro para el banner
$contador1 0;
$contador2 0;
while(
$row mysql_fetch_assoc($query2)) {
      
$nombre $row["nombre"];
$detalle $row["detalle"];


 
       if((
$contador1%3) == 0) {
 
            echo 
"<img src='banners/cada5/$banners[$contador2]'><br><br><br>";
        ++
$contador2;
       }
       ++
$contador1;
      
       echo
"$b_nombre   $detalle<br><br><br><br><br>";
}







        
            
?> 
  #14 (permalink)  
Antiguo 22/09/2010, 18:50
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Poner imagen Intercalada cada Xresultados de Busqueda

Si, es verdad. Debes recorrer el mysql_fetch_array del select de los banners y guardarlos en algun arreglo, para luego recorrer ese arreglo.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #15 (permalink)  
Antiguo 22/09/2010, 20:18
 
Fecha de Ingreso: septiembre-2010
Mensajes: 78
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Poner imagen Intercalada cada Xresultados de Busqueda

Muchas Gracias Spider_Boy con tu yuda lo resolvi.

Etiquetas: poner, busquedas
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 19:02.