Foros del Web » Programando para Internet » PHP »

No repite en el resto de los resultados de la consulta

Estas en el tema de No repite en el resto de los resultados de la consulta en el foro de PHP en Foros del Web. Hola, tengo este código en el cual hago una consulta a la BD solicitando una serie de datos. Entre ellos se encuentra la ruta de ...
  #1 (permalink)  
Antiguo 15/05/2008, 08:17
mon
 
Fecha de Ingreso: febrero-2003
Mensajes: 506
Antigüedad: 21 años, 3 meses
Puntos: 0
No repite en el resto de los resultados de la consulta

Hola, tengo este código en el cual hago una consulta a la BD solicitando una serie de datos. Entre ellos se encuentra la ruta de una imágen. Esa ruta la descompongo para quedarme solo con la dirección de la carpeta y el nombre del archivo, en este caso imágen. Después la variable de esa imágen la mando a otro archivo en el que la cambio de tamaño y resolución. Vale, todo funciona perfectamente, me dá el resultado que encontró en la BD de muchos articulos encontrados ya que al principio tengo puesto un while. Bién, el caso es que solo me muestra la imágen en el primer resultado de la busqueda en la BD, en el resto, me lo muestra todo bién, menos la imágen. Es como si no repitiera el apartado de descomponer el path.
Os paso el código que estoy usando a ver si me podeis ayudar, porque es lo último que me queda para arreglar un desaguisado que me montaron en el servidoro

Código PHP:
<?     
//Conexión a la base de datos
include("includes/conectobd.php");


# establecemos el criterio de SELECCION 
# en este caso los campos fecha,referencia,descripcion, ordenados de forma descendente me queda por saber  como pedir también las imagenes
# añado dos criterios de seleccion WHERE y AND
 

$_pagi_sql="SELECT * FROM pisos_venta WHERE id_tipo_inmueble='1' AND venta='1' ORDER BY fecha DESC, id DESC "
//cantidad de resultados por página (opcional, por defecto 20)
$_pagi_cuantos 6;
//cantidad de enlaces que se mostrarán como máximo en la barra de navegación
$_pagi_nav_num_enlaces 5;//
$_pagi_mostrar_errores false;//
$_pagi_conteo_alternativo true;//
//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
include("paginator.inc.php");

//$result=mysql_query($sql) or die (mysql_error());



# CREAMOS UNA CABECERA DE UNA TABLA (codigo HTML) 

echo "<table width=480 align=center cellspacing=1 cellpadding=3 border=1 bordercolor=#003366>"
//echo "<tr>";
while($registro mysql_fetch_array($_pagi_result)){
           echo 
"<td valign=top>Ref. ".$registro['referencia']."</td>";
           
$fecha=$registro['fecha'];
           
$var explode('-',$fecha);
           echo 
"<td><div align=right>".$var[2]."-".$var[1]."-".$var[0]."</div></td></tr></td></tr>";
           echo 
"<td>";
           echo 
"<td valign=top>";
           
           
$foto1=$registro['imagen1'];
           
//echo $foto1;
           // DESCOMPONEMOS EL PATH DE LA DIRECCIÓN DE LA FOTO EN LA BD
           
//ESTO ES LO QUE NO ME REPITE - SOLO LO HACE CON EL PRIMER RESULTADO DE LA BÚSQUEDA. 8 LÍNEAS MÁS ABAJO HAGO REFERENCIA A $foto PARA QUE VEAIS COMO LO TENGO.           
            
$a=explode("/"$foto1); 
for(
$i=6;$i<(count($a));$i++) $foto.=($i<((count($a))-1)) ? ($a[$i]."/") : ($a[$i]); 


  
  
  
//echo $foto1;
           
           
?>           
      </td>
  </tr>
  <tr>
    <td width="22%" rowspan="2" valign="top" align="center"><a href="masinfo.php?iden=<? echo $registro['id']; ?>" onClick='this.target = "popup"; window.open("", "popup", "tolbar=0,width=650,height=520, resizable=yes")' ><img src="mini.php?imagen=<? echo $foto?>&tam=55x55" border="0" /></a></td>
    <td width="78%"><? echo "".substr($registro["descripcion"],0,135)."......"?></td>
  </tr>
  <tr>
    <td><div align="right"><a href="masinfo.php?iden=<? echo $registro['id']; ?>" onClick='this.target = "popup"; window.open("", "popup", "tolbar=0,width=650,height=520, resizable=yes  scrollbars=no ")' >más información</a></div></td>
  </tr>


<?
}
     echo 
"<table>";   
    
// echo "<tr>";
       # establecemos el bucle de lectura del ARRAY 
       # con los resultados de cada LINEA 
       # y encerramos cada valor en etiquetas <td></td> 
       # para que aparezcan en celdas distintas de la tabla 

  //Incluimos la barra de navegación
   
echo"<td align=right>".$_pagi_navegacion."</td>";
  
//Incluimos la información de la página actual
  
echo"<tr><td>Mostrando Pisos ".$_pagi_info."</td></tr>";  
 echo 
"</tr>";
   echo 
"</table>"
  
# cerramos la conexion 

    

    
?>
  #2 (permalink)  
Antiguo 15/05/2008, 08:26
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Re: No repite en el resto de los resultados de la consulta

pq no abres el while asi
Código PHP:
do { 
y cierras
Código PHP:
} while 
soy nuevo pero quizas este en lo correcto, saludos
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #3 (permalink)  
Antiguo 15/05/2008, 08:55
mon
 
Fecha de Ingreso: febrero-2003
Mensajes: 506
Antigüedad: 21 años, 3 meses
Puntos: 0
Re: No repite en el resto de los resultados de la consulta

Gracias T4ke0veR. Cómo dices en donde tengo while pongo do? y en el }de cierre pongo }while?
Supongo que serás nuevo en foro, pero en php no creo. Yo soy más nuevo que la última versión del MySql, así que discúlpame.

Gracias de nuevo
  #4 (permalink)  
Antiguo 15/05/2008, 09:20
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Re: No repite en el resto de los resultados de la consulta

Código PHP:
<?php      
//Conexión a la base de datos 
include("includes/conectobd.php"); 


# establecemos el criterio de SELECCION  
# en este caso los campos fecha,referencia,descripcion, ordenados de forma descendente me queda por saber  como pedir también las imagenes 
# añado dos criterios de seleccion WHERE y AND 
  

$_pagi_sql="SELECT * FROM pisos_venta WHERE id_tipo_inmueble='1' AND venta='1' ORDER BY fecha DESC, id DESC ";  
mysql_select_db ('conectobd');
    
$sql_exec=mysql_query($_pagi_sql);

//cantidad de resultados por página (opcional, por defecto 20) 
$_pagi_cuantos 6
//cantidad de enlaces que se mostrarán como máximo en la barra de navegación 
$_pagi_nav_num_enlaces 5;// 
$_pagi_mostrar_errores false;// 
$_pagi_conteo_alternativo true;// 
//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente 
include("paginator.inc.php"); 

//$result=mysql_query($sql) or die (mysql_error()); 



# CREAMOS UNA CABECERA DE UNA TABLA (codigo HTML)  

echo "<table width=480 align=center cellspacing=1 cellpadding=3 border=1 bordercolor=#003366>";  
//echo "<tr>"; 
while($row=mysql_fetch_assoc($sql_exec)){ 
           echo 
"<td valign=top>Ref. ".$registro['referencia']."</td>"
           
$fecha=$registro['fecha']; 
           
$var explode('-',$fecha); 
           echo 
"<td><div align=right>".$var[2]."-".$var[1]."-".$var[0]."</div></td></tr></td></tr>"
           echo 
"<td>"
           echo 
"<td valign=top>"
            
           
$foto1=$registro['imagen1']; 
           
//echo $foto1; 
           // DESCOMPONEMOS EL PATH DE LA DIRECCIÓN DE LA FOTO EN LA BD 
            
//ESTO ES LO QUE NO ME REPITE - SOLO LO HACE CON EL PRIMER RESULTADO DE LA BÚSQUEDA. 8 LÍNEAS MÁS ABAJO HAGO REFERENCIA A $foto PARA QUE VEAIS COMO LO TENGO.            
             
$a=explode("/"$foto1);  
for(
$i=6;$i<(count($a));$i++) $foto.=($i<((count($a))-1)) ? ($a[$i]."/") : ($a[$i]);  


   
   
  
//echo $foto1; 
            
            
?>            
      </td> 
  </tr> 
  <tr> 
    <td width="22%" rowspan="2" valign="top" align="center"><a href="masinfo.php?iden=<? echo $registro['id']; ?>" onClick='this.target = "popup"; window.open("", "popup", "tolbar=0,width=650,height=520, resizable=yes")' ><img src="mini.php?imagen=<?php echo $foto?>&tam=55x55" border="0" /></a></td> 
    <td width="78%"><?php echo "".substr($registro["descripcion"],0,135)."......"?></td> 
  </tr> 
  <tr> 
    <td><div align="right"><a href="masinfo.php?iden=<?php echo $registro['id']; ?>" onClick='this.target = "popup"; window.open("", "popup", "tolbar=0,width=650,height=520, resizable=yes  scrollbars=no ")' >más información</a></div></td> 
  </tr> 
<?php ?>

<?php 
     
echo "<table>";    
    
// echo "<tr>"; 
       # establecemos el bucle de lectura del ARRAY  
       # con los resultados de cada LINEA  
       # y encerramos cada valor en etiquetas <td></td>  
       # para que aparezcan en celdas distintas de la tabla  

  //Incluimos la barra de navegación 
   
echo"<td align=right>".$_pagi_navegacion."</td>"
  
//Incluimos la información de la página actual 
  
echo"<tr><td>Mostrando Pisos ".$_pagi_info."</td></tr>";   
 echo 
"</tr>"
   echo 
"</table>";  
  
# cerramos la conexion  

     

    
?>
prueba asi... ahora una cosa... intenta colocar <?php pues en algunas ocasiones solo <? no funciona .. yo t lo coloque en algunos sitios... termina de completarlo... saludos y espero t sirva
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #5 (permalink)  
Antiguo 15/05/2008, 09:38
mon
 
Fecha de Ingreso: febrero-2003
Mensajes: 506
Antigüedad: 21 años, 3 meses
Puntos: 0
Re: No repite en el resto de los resultados de la consulta

Ya, ya te entiendo. Pero el caso es que sigue sin funcionarme. Antes siémpre funcionó. Pero hicieron cambios en el servidor entre los que está el cambio de MySql 4 a la versión 5 y ahora se lió todo.
Ya no sé que voy a hacer, pero el caso es que no me va.
Muchas gracias de todas formas T4ke0veR
  #6 (permalink)  
Antiguo 15/05/2008, 11:27
mon
 
Fecha de Ingreso: febrero-2003
Mensajes: 506
Antigüedad: 21 años, 3 meses
Puntos: 0
Re: No repite en el resto de los resultados de la consulta

Bueno a ver, ahora si lo repite, peeeero.......
Veamos, hace la consulta y dá los resultados. El primero me muestra la foto, ya que hace bién la partición del path y dá la buena dirección. Cuando va al segundo resultado, dá, el path de la primera más el path de la segunda, con lo cual el path final es uno distinto y lógicamente la imágen no se muestra porque esa no es la dirección. Cuando muestra el tercer resultado, dá, el path del primero, más el path del segundo, más el path del tercero, con lo cual tampoco muestra la imágen, ya que ese path no existe, así sucesivamente como tantos resultados la consulta haya dado, de ahí que solo muestre el primer resultado de la consulta. Osea, cada vez entiendo menos que es lo que ahora está mal.
  #7 (permalink)  
Antiguo 15/05/2008, 12:26
Avatar de Squizophrenia  
Fecha de Ingreso: mayo-2008
Ubicación: Barcelona (Spain)
Mensajes: 41
Antigüedad: 16 años
Puntos: 2
Re: No repite en el resto de los resultados de la consulta

Creo que el for te hace todo el recorrido del bucle en cada ciclo del otro bucle, el while.
Yo probaría a declarar $i fuera de bucle, y una vez dentro hacer la condición if:

Código:
if ($i < (count($a)) {condiciones;}
Al final del bucle, antes de cerrarlo:

Código:
$i++
Algo así te funcionará. Prueba y me comentas.
  #8 (permalink)  
Antiguo 15/05/2008, 12:28
mon
 
Fecha de Ingreso: febrero-2003
Mensajes: 506
Antigüedad: 21 años, 3 meses
Puntos: 0
Re: No repite en el resto de los resultados de la consulta

Bueno, al final lo conseguí. Ahora el código lo tengo así
Código PHP:
$foto1=$registro['imagen1'];
           
           
$a=explode("/"$foto1); 

$rutayarchivo $a[count($a)-3] ."/"$a[count($a)-2] ."/".$a[count($a)-1]; 
Y me lo hace todo bién.

Squizophrenia, no probé lo que tu me comentas, estoy muy liado y todavía tengo que arreglar más cosas en la página pero muchas gracias de todos modos.

Salu2
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 22:39.