Foros del Web » Programando para Internet » PHP »

Listar consulta en horizontal

Estas en el tema de Listar consulta en horizontal en el foro de PHP en Foros del Web. Buenas, quería ver si alguien me podía ayudar para hacer un codigo, o si alguien tenia un codigo, o darme una idea, de como listar ...
  #1 (permalink)  
Antiguo 03/12/2008, 14:36
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 8 meses
Puntos: 1
Listar consulta en horizontal

Buenas, quería ver si alguien me podía ayudar para hacer un codigo, o si alguien tenia un codigo, o darme una idea, de como listar los resultados de una consulta horizontalmente, al mejor estilo mercado libre, o de remate, es decir, que tenga los registros (3) en columnas, y al terminar las columnas se cree una fila nueva. En fin, en el foro conseguí un codigo, que es el que pongo a continuación, pero elimina siempre el ultimo registro, y si por ejemplo, yo quiero mostrar 10 por pagina, y son 5 paginas, ya pierdo 5 registros, lo cual no puede suceder. Este es el codigo que usé:

Código PHP:
<?
  
echo '<table width="100%" align=center>'

$columnes 3# Número de columnas (variable) 

if (($rows=mysql_num_rows($curricular))==0) { 
  echo 
'<tr><td colspan=$columnes>No hay resultados en la BD.</td></tr> '
} else { 
  echo 
'<tr><td colspan=$columnes>Proyectos ingresados </td></tr>'


for (
$i=1$row mysql_fetch_row ($curricular); $i++) { 
$resto = ($i $columnes); # Número de celda del <tr> en que nos encontramos 
if ($resto == 1) {echo "<tr>";} # Si es la primera celda, abrimos <tr> 
    
echo '<td width="33%"><table width="100%" border="0" cellspacing="2" cellpadding="2">
              <tr>
                <td class="proyecto">'
$row[1]. '</td>
              </tr>
              <tr>
                <td><div align="center"><img src="" alt="" name="foto" width="250" height="180" id="foto" /></div></td>
              </tr>
              <tr>
                <td class="texto">Detalles</td>
              </tr>
            </table></td>'
;  
if (
$resto == 0) {echo "</tr>";} # Si es la última celda, cerramos </tr> 

if (
$resto <> 0) { # Si el resultado no es múltiple de $columnes acabamos de rellenar los huecos 
$ajust $columnes $resto# Número de huecos necesarios 
for ($j 0$j $ajust$j++) {echo "<td>&nbsp;</td>";} 
echo 
"</tr>"# Cerramos la última línea </tr> 
};
Aparte, como mis imagenes estan en otra tabla, tengo que poder relacionar el id de esta tabla con el id de las fotos, y el codigo utliza $row[1], y ese es el nombre... $row[0] sería el id, digamos? mi primera fila??

bueno, si alguien tiene o sabe algun codigo o alguna mejor forma de hacerlo, le voy a estar muy agradecido!!!

Muchas gracias de antemano, un saludo para todos!

Pablo.
  #2 (permalink)  
Antiguo 04/12/2008, 09:04
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Listar consulta en horizontal

nadie tiene niguna ayuda para miii???

con respecto al titulo... no se si son horizontales, o verticales.. no se como las toman uds!! mi idea es que se repitan verticalmente.... se entiende, no??

gracias!
  #3 (permalink)  
Antiguo 04/12/2008, 09:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Listar consulta en horizontal

Bueno viendo el código te muestra todos -1, porque el for() lo empiezas desde $i=1, no desde 0.

Saludos.
  #4 (permalink)  
Antiguo 04/12/2008, 10:29
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Listar consulta en horizontal

no... sigue salteando un registro.... modifique eso y no sirve.

no tienen algun codigo para esto? alguien debe saber... son un monton de lugares donde se usa el listado vertical... por columnas... nadie me puede ayudar? :(

gracias, nuevamente, de antemano!!! jajaj

saludos! pablo.
  #5 (permalink)  
Antiguo 04/12/2008, 10:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Listar consulta en horizontal

Pues es muy raro que se salte el registro, estas seguro que ese es todo tu código?, no estaras llamando a mysql_fetch_row antes en alguna parte?

Por otro lado te recomendaria usar un while() y e ir incrementando $i por aparte, es más limpio.

Saludos.
  #6 (permalink)  
Antiguo 04/12/2008, 11:08
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Listar consulta en horizontal

A ver si pongo todo el codigo, puedes ver donde está el error... lo que tengo es (oq uiero tener) es un listado de registros, 3 por columnas, y un maxim de 9 por fila.. o sea... tendria que aparecer el registro 10 en la segunda hoja, etc.. pero ma aparece el 11. Y en la primera a partir del 2, y asi. Me salte un registro. Este es el codigo:

Código PHP:
<?php require_once('../../Connections/final.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  if (
PHP_VERSION 6) {
    
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}

$currentPage $_SERVER["PHP_SELF"];

$maxRows_curricular 9;
$pageNum_curricular 0;
if (isset(
$_GET['pageNum_curricular'])) {
  
$pageNum_curricular $_GET['pageNum_curricular'];
}
$startRow_curricular $pageNum_curricular $maxRows_curricular;

mysql_select_db($database_final$final);
$query_curricular "SELECT * FROM proyectos";
$query_limit_curricular sprintf("%s LIMIT %d, %d"$query_curricular$startRow_curricular$maxRows_curricular);
$curricular mysql_query($query_limit_curricular$final) or die(mysql_error());
$row_curricular mysql_fetch_assoc($curricular);

if (isset(
$_GET['totalRows_curricular'])) {
  
$totalRows_curricular $_GET['totalRows_curricular'];
} else {
  
$all_curricular mysql_query($query_curricular);
  
$totalRows_curricular mysql_num_rows($all_curricular);
}
$totalPages_curricular ceil($totalRows_curricular/$maxRows_curricular)-1;

$titulo$row_curricular['nombre'];

mysql_select_db($database_final$final);
$query_fotos "SELECT imagenes.nombre, imagenes.id_proyecto FROM imagenes, proyectos";
$fotos mysql_query($query_fotos$final) or die(mysql_error());
$row_fotos mysql_fetch_assoc($fotos);
$totalRows_fotos mysql_num_rows($fotos);

$queryString_curricular "";
if (!empty(
$_SERVER['QUERY_STRING'])) {
  
$params explode("&"$_SERVER['QUERY_STRING']);
  
$newParams = array();
  foreach (
$params as $param) {
    if (
stristr($param"pageNum_curricular") == false && 
        
stristr($param"totalRows_curricular") == false) {
      
array_push($newParams$param);
    }
  }
  if (
count($newParams) != 0) {
    
$queryString_curricular "&" htmlentities(implode("&"$newParams));
  }
}
$queryString_curricular sprintf("&totalRows_curricular=%d%s"$totalRows_curricular$queryString_curricular);
?>
<?php 
require_once('../../Connections/proyecto.php'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Ingresar Proyectos</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script src="../../SpryAssets/SpryMenuBar.js" type="text/javascript"></script>
</head>

<body><div align="center">

      <table>
  <tr>
    <td><table width="100%" border="0" cellspacing="2" cellpadding="2">
      <tr>
<td class="titulo">Ingresar Proyecto de Investigaci&oacute;n Extracurricular</td>
      </tr>
      <tr>
        <td class="titulo">&nbsp;</td>
      </tr>
<tr>
  <?php do { ?>
    <?
  
echo '<table width="100%" align=center>'

$columnes 3# Número de columnas (variable) 

if (($rows=mysql_num_rows($curricular))==0) { 
  echo 
'<tr><td colspan=$columnes>No hay resultados en la BD.</td></tr> '
} else { 
  echo 
'<tr><td colspan=$columnes>Proyectos ingresados </td></tr>'


for (
$i=0$row mysql_fetch_row ($curricular); $i++) { 
$resto = ($i $columnes); # Número de celda del <tr> en que nos encontramos 
if ($resto == 1) {echo "<tr>";} # Si es la primera celda, abrimos <tr> 
    
echo '<td width="33%"><table width="100%" border="0" cellspacing="2" cellpadding="2">
              <tr>
                <td class="proyecto">'
$row[1]. " "$row[0]. '</td>
              </tr>
              <tr>
                <td><div align="center"><img src="" alt="" name="foto" width="250" height="180" id="foto" /></div></td>
              </tr>
              <tr>
                <td class="texto">Detalles</td>
              </tr>
            </table></td>'
;  
if (
$resto == 0) {echo "</tr>";} # Si es la última celda, cerramos </tr> 

if (
$resto <> 0) { # Si el resultado no es múltiple de $columnes acabamos de rellenar los huecos 
$ajust $columnes $resto# Número de huecos necesarios 
for ($j 0$j $ajust$j++) {echo "<td>&nbsp;</td>";} 
echo 
"</tr>"# Cerramos la última línea </tr> 

mysql_close($final); 
echo 
"</table>"?>
    <?php } while ($row_curricular mysql_fetch_assoc($curricular)); ?>
  <table border="0">
    <tr>
      <td><?php if ($pageNum_curricular 0) { // Show if not first page ?>
            <a href="<?php printf("%s?pageNum_curricular=%d%s"$currentPage0$queryString_curricular); ?>">First</a>
            <?php // Show if not first page ?></td>
      <td><?php if ($pageNum_curricular 0) { // Show if not first page ?>
            <a href="<?php printf("%s?pageNum_curricular=%d%s"$currentPagemax(0$pageNum_curricular 1), $queryString_curricular); ?>">Previous</a>
            <?php // Show if not first page ?></td>
      <td><?php if ($pageNum_curricular $totalPages_curricular) { // Show if not last page ?>
            <a href="<?php printf("%s?pageNum_curricular=%d%s"$currentPagemin($totalPages_curricular$pageNum_curricular 1), $queryString_curricular); ?>">Next</a>
            <?php // Show if not last page ?></td>
      <td><?php if ($pageNum_curricular $totalPages_curricular) { // Show if not last page ?>
            <a href="<?php printf("%s?pageNum_curricular=%d%s"$currentPage$totalPages_curricular$queryString_curricular); ?>">Last</a>
            <?php // Show if not last page ?></td>
    </tr>
  </table>
</tr>
    </table></td>
  </tr>
  <tr>
    <td style="background-repeat:no-repeat; background-position:center" background="../imagenes/abajo.gif" height="28"><div align="center" class="copy" style="background-repeat:no-repeat; background-position:center; font-family: 'Lucida Grande'; font-size: 10px; color: #FFF;">Copyright 2008, <strong>Proyectoshuerto.com.ar</strong> - Todos los derechos reservados. Prohibida la reproducci&oacute;n total o parcial de este sitio sin previo consentimiento de los autores y/o due&ntilde;os del sitio. <strong> | Contacto:</strong><em>[email protected]</em></div></td>
  </tr>
</table></div>
<script type="text/javascript">
<!--
var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgDown:"../SpryAssets/SpryMenuBarDownHover.gif", imgRight:"../SpryAssets/SpryMenuBarRightHover.gif"});
//-->
</script>
</body>
</html>
<?php
mysql_free_result
($curricular);

mysql_free_result($fotos);

?>
Si encuentran donde puede estar el error, estaré muy agradecido!!

saludos,

pablo

pd: y que era lo que quedaba más limpio? en que parte? gracias!
  #7 (permalink)  
Antiguo 04/12/2008, 11:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Listar consulta en horizontal

Pues si te fijas en la parte de hasta arriba, haces un $row_curricular = mysql_fetch_assoc($curricular); , eso hace que se descargue el primer valor, por ende no te sale.

Por otro lado, deberias sinceramente dejar de usar Dreamweaver, el codigo que genera es ineficaz y dificil de mantener, mejor estudia como hacerlo "a mano" es más facil y sencillo de entender que en ese mar de codigo.

Saludos.
  #8 (permalink)  
Antiguo 04/12/2008, 11:44
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Listar consulta en horizontal

muchas gracias! ahora si sale...

con respecto a dreamweaver.... no eres el primero que me lo dice.. de hecho, uso dreamweaver más que nada en modo diseño, el resto lo trato de escribir a mano. Pero hay ciertas cosas que, al no ser profesional sino aficionado, me ahorra mucho tiempo, como lo es el navegador de registros (cuando se quieren mostrar x cantidad de registros por pagina). Se que genera mucho codigo ineficaz, pero en ese sentido ayuda.. Me recomendarías algun otro editor, o simplemente aprender PHP a fondo, y hacer todo a mano??

un saludo!!! y gracias!!

pablo.
  #9 (permalink)  
Antiguo 04/12/2008, 11:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Listar consulta en horizontal

Pues por "a mano", me referia a que tu escribieras y sepas lo que escribes, por editores, en lo particular yo uso un poco de Notepad++, para scripts rapidos y sencillos, y Eclipse PDT para cosas más serias.

Saludos.
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 17:44.