Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: Shell Root en 29 Marzo 2011, 05:03 AM

Título: Un pequeño problema de lógica
Publicado por: Shell Root en 29 Marzo 2011, 05:03 AM
Tengo lo siguiente,
Código (sql) [Seleccionar]
mysql> SELECT categoria, imgurl FROM categoria;
+-------------------+----------------+
| categoria         | imgurl         |
+-------------------+----------------+
| Lujos             | lujos.jpg      |
| Latas             | latas.jpg      |
| Aseo              | aseo.jpg       |
| Partes Electricas | electricas.jpg |
+-------------------+----------------+
4 rows in set (0.00 sec)


Ahora dentro de PHP quiero que aparezca lo mismo en la siguiente estructura:
Código (sql) [Seleccionar]
+-------------------+-------------------+
| Lujos             | Latas             |
+-------------------+-------------------+
| lujos.jpg         | latas.jpg         |
|                   |                   |
|                   |                   |
+-------------------+-------------------+
| Aseo              | Partes Electricas |
+-------------------+-------------------+
| aseo.jpg          | partes.jpg        |
|                   |                   |
|                   |                   |
+-------------------+-------------------+


Las columnas depende de un parámetro ingresado en la función.

Código (php) [Seleccionar]
  function sCategorias( $sColumnas )
  {
    $sHTML   = "";
    $sSQL    = "";
    $sQuery  = "";

    # QUERY
    $sSQL   = "SELECT categoria, imgurl FROM categoria;";
    $sQuery = sExecQuery( $sSQL );

    # HTML
    $sHTML .= "<table border='1'>";
    $sHTML .= "<tr>";
    while( $sRows = mysql_fetch_array( $sQuery, MYSQL_NUM )){
      $sHTML .= "<td>".$sRows[0]."</td>";
    }
    $sHTML .= "</tr>";
    $sHTML .= "</table>";
    return $sHTML;
  }


No se como hacerlo, alguna idea?
Título: Re: Un pequeño problema de lógica
Publicado por: bomba1990 en 29 Marzo 2011, 05:59 AM
Código (php) [Seleccionar]

# HTML
    $sHTML .= "<table border='1'>";
   $i = 2;
    while( $sRows = mysql_fetch_array( $sQuery, MYSQL_NUM )){

if($i == 2){$sHTML .= "<tr>";}
      $sHTML .= "<td>".$sRows[0]."</td>";
if($i == 2){$sHTML .= "</tr>";$i=0}
$i++;
    }
   
    $sHTML .= "</table>";
    return $sHTML;



asi, te lo deberia imprimir pero cada 2 salta de linea.

lo hice rapidito, no lo probe
Título: Re: Un pequeño problema de lógica
Publicado por: Shell Root en 29 Marzo 2011, 06:03 AM
Thanks, pero así lo tenia no me funciona para la linea de la imagen.
Código (php) [Seleccionar]
  function sCategorias( $sColumnas )
  {
    $sHTML   = "";
    $sSQL    = "";
    $sQuery  = "";

    # QUERY
    $sSQL   = "SELECT categoria, imgurl FROM categoria;";
    $sQuery = sExecQuery( $sSQL );

    # HTML
    $sHTML .= "<table border='1'>";
    $sHTML .= "<tr>";

    $i = 0;
    while( $sRows = mysql_fetch_array( $sQuery, MYSQL_NUM ))
    {
      $sHTML .= "<td>".$sRows[0]."</td>";
      $i++;
      if( $i == $sColumnas )
      {
        $sHTML .= "</tr><tr>";
        $i = 0;
      }
    }

    $sHTML .= "</tr>";
    $sHTML .= "</table>";
    return $sHTML;
  }

  print sCategorias( 2 );

OUTPUT:
Código (PoC) [Seleccionar]
Lujos Latas
Aseo Partes Electricas


Seguiré codeando un rato.
Título: Re: Un pequeño problema de lógica
Publicado por: RedZer en 29 Marzo 2011, 06:50 AM
siempre seran 4 categorias? las que mecionas lujas,latas,partes electricas,aseo????
Título: Re: Un pequeño problema de lógica
Publicado por: whalther en 29 Marzo 2011, 08:10 AM
Espero que te sirva de esta manera  ;D:

function sCategorias( $sColumnas )
{
  $sHTML   = "";
  $sSQL    = "";
  $sQuery  = "";
  # QUERY
  $sSQL   = "SELECT categoria, imgurl FROM categoria;";
  $sQuery = sExecQuery( $sSQL );

  # HTML
  $sHTML .= "<table border='1'>";
 
   $i = 1;
  while( $sRows = mysql_fetch_array( $sQuery)){
  if($i==1){$sHTML .= '<tr>';}
   
$sHTML .= "<td>".$sRows['categoria']."<br><img src='".$sRows['imgurl']."'></td>";

if($i==$sColumnas){$sHTML .= '</tr>';$i=0;}
    $i++;
}//end while
  $sHTML .= "</table>";
  return $sHTML;
}

print sCategorias( 2 );

Título: Re: Un pequeño problema de lógica
Publicado por: Shell Root en 29 Marzo 2011, 20:44 PM
@RedZer, no quizás existan más.
@whalther, esperaría que fuese la última opción. Si miras mi segudo POST, espero que sea en tablas como el ejemplo que dí.

Hoy pensando, quizás pueda usar 2 arrays, sería más fácil manejarlo.
Título: Re: Un pequeño problema de lógica * Modificado
Publicado por: ~ Yoya ~ en 29 Marzo 2011, 23:41 PM
Bueno, creo que pude terminarlo xD

Código (sql) [Seleccionar]
mysql> describe categoria;
+-----------+------------------+------+-----+---------+----------------+
| Field     | Type             | Null | Key | Default | Extra          |
+-----------+------------------+------+-----+---------+----------------+
| id        | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| categoria | varchar(30)      | NO   | MUL | NULL    |                |
| imageurl  | varchar(30)      | NO   |     | NULL    |                |
+-----------+------------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)


Código (php) [Seleccionar]
<?php

$link 
mysql_connect("127.0.0.1""root""pass");
mysql_selectdb("ejemplo"$link);

function 
ejemplo()
{
   
//
   //SQL
   
$sql mysql_query("SELECT id,categoria, imageurl FROM categoria");

   
//Iinicio la variable $i
   
$i 0;

   while(
$row mysql_fetch_array($sqlMYSQL_ASSOC)):

      
$i += 1;
      
$tab[$i] = array($row['categoria'], $row['imageurl']);

   endwhile;
//Fin del while

return $tab;// Retorno un array
}

?>


<?php

$results 
ejemplo();

//Debe ser multiplo de 2, ya que la tabla es
// 2xN(numero que sea multiplo de 2)
//Ej: 2x2, 2x4, 2x8
$show 4;

?>


<table border="1">
 <tbody>

  <?php for($i 2$i <= $show$i+= 2): ?>
   <tr>
     <td><?php echo $results[$i-1][0?></td>
     <td><?php echo $results[$i][0?></td>
   </tr>
   <tr>
     <td><?php echo $results[$i-1][1?></td>
     <td><?php echo $results[$i][1?></td>
   </tr>

  <?php endfor; ?>

 </tbody>
</table>


Salida:

Lujos Latas
lujos.jpg latas.jpg
Aseo Partes Electricas
aseo.jpg electricas.jpg