Foro de elhacker.net

Programación => 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
  1. mysql> SELECT categoria, imgurl FROM categoria;
  2. +-------------------+----------------+
  3. | categoria         | imgurl         |
  4. +-------------------+----------------+
  5. | Lujos             | lujos.jpg      |
  6. | Latas             | latas.jpg      |
  7. | Aseo              | aseo.jpg       |
  8. | Partes Electricas | electricas.jpg |
  9. +-------------------+----------------+
  10. 4 ROWS IN SET (0.00 sec)

Ahora dentro de PHP quiero que aparezca lo mismo en la siguiente estructura:
Código
  1. +-------------------+-------------------+
  2. | Lujos             | Latas             |
  3. +-------------------+-------------------+
  4. | lujos.jpg         | latas.jpg         |
  5. |                   |                   |
  6. |                   |                   |
  7. +-------------------+-------------------+
  8. | Aseo              | Partes Electricas |
  9. +-------------------+-------------------+
  10. | aseo.jpg          | partes.jpg        |
  11. |                   |                   |
  12. |                   |                   |
  13. +-------------------+-------------------+

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

Código
  1.  function sCategorias( $sColumnas )
  2.  {
  3.    $sHTML   = "";
  4.    $sSQL    = "";
  5.    $sQuery  = "";
  6.  
  7.    # QUERY
  8.    $sSQL   = "SELECT categoria, imgurl FROM categoria;";
  9.    $sQuery = sExecQuery( $sSQL );
  10.  
  11.    # HTML
  12.    $sHTML .= "<table border='1'>";
  13.    $sHTML .= "<tr>";
  14.    while( $sRows = mysql_fetch_array( $sQuery, MYSQL_NUM )){
  15.      $sHTML .= "<td>".$sRows[0]."</td>";
  16.    }
  17.    $sHTML .= "</tr>";
  18.    $sHTML .= "</table>";
  19.    return $sHTML;
  20.  }

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
  1. # HTML
  2.    $sHTML .= "<table border='1'>";
  3.   $i = 2;
  4.    while( $sRows = mysql_fetch_array( $sQuery, MYSQL_NUM )){
  5.  
  6. if($i == 2){$sHTML .= "<tr>";}
  7.      $sHTML .= "<td>".$sRows[0]."</td>";
  8. if($i == 2){$sHTML .= "</tr>";$i=0}
  9. $i++;
  10.    }
  11.  
  12.    $sHTML .= "</table>";
  13.    return $sHTML;
  14.  
  15.  

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
  1.  function sCategorias( $sColumnas )
  2.  {
  3.    $sHTML   = "";
  4.    $sSQL    = "";
  5.    $sQuery  = "";
  6.  
  7.    # QUERY
  8.    $sSQL   = "SELECT categoria, imgurl FROM categoria;";
  9.    $sQuery = sExecQuery( $sSQL );
  10.  
  11.    # HTML
  12.    $sHTML .= "<table border='1'>";
  13.    $sHTML .= "<tr>";
  14.  
  15.    $i = 0;
  16.    while( $sRows = mysql_fetch_array( $sQuery, MYSQL_NUM ))
  17.    {
  18.      $sHTML .= "<td>".$sRows[0]."</td>";
  19.      $i++;
  20.      if( $i == $sColumnas )
  21.      {
  22.        $sHTML .= "</tr><tr>";
  23.        $i = 0;
  24.      }
  25.    }
  26.  
  27.    $sHTML .= "</tr>";
  28.    $sHTML .= "</table>";
  29.    return $sHTML;
  30.  }
  31.  
  32.  print sCategorias( 2 );
OUTPUT:
Código
  1. Lujos Latas
  2. 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:

Código:
 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
  1. mysql> DESCRIBE categoria;
  2. +-----------+------------------+------+-----+---------+----------------+
  3. | FIELD     | TYPE             | NULL | KEY | DEFAULT | Extra          |
  4. +-----------+------------------+------+-----+---------+----------------+
  5. | id        | INT(10) UNSIGNED | NO   | PRI | NULL    | AUTO_INCREMENT |
  6. | categoria | VARCHAR(30)      | NO   | MUL | NULL    |                |
  7. | imageurl  | VARCHAR(30)      | NO   |     | NULL    |                |
  8. +-----------+------------------+------+-----+---------+----------------+
  9. 3 ROWS IN SET (0.00 sec)
  10.  

Código
  1. <?php
  2.  
  3. $link = mysql_connect("127.0.0.1", "root", "pass");
  4. mysql_selectdb("ejemplo", $link);
  5.  
  6. function ejemplo()
  7. {
  8.   //
  9.   //SQL
  10.   $sql = mysql_query("SELECT id,categoria, imageurl FROM categoria");
  11.  
  12.   //Iinicio la variable $i
  13.   $i = 0;
  14.  
  15.   while($row = mysql_fetch_array($sql, MYSQL_ASSOC)):
  16.  
  17.      $i += 1;
  18.      $tab[$i] = array($row['categoria'], $row['imageurl']);
  19.  
  20.   endwhile;//Fin del while
  21.  
  22. return $tab;// Retorno un array
  23. }
  24.  
  25. ?>
  26.  
  27. <?php
  28.  
  29. $results = ejemplo();
  30.  
  31. //Debe ser multiplo de 2, ya que la tabla es
  32. // 2xN(numero que sea multiplo de 2)
  33. //Ej: 2x2, 2x4, 2x8
  34. $show = 4;
  35.  
  36. ?>
  37.  
  38. <table border="1">
  39.  <tbody>
  40.  
  41.   <?php for($i = 2; $i <= $show; $i+= 2): ?>
  42.    <tr>
  43.      <td><?php echo $results[$i-1][0] ?></td>
  44.      <td><?php echo $results[$i][0] ?></td>
  45.    </tr>
  46.    <tr>
  47.      <td><?php echo $results[$i-1][1] ?></td>
  48.      <td><?php echo $results[$i][1] ?></td>
  49.    </tr>
  50.  
  51.   <?php endfor; ?>
  52.  
  53.  </tbody>
  54. </table>
  55.  

Salida:

Código:
Lujos 	Latas
lujos.jpg latas.jpg
Aseo Partes Electricas
aseo.jpg electricas.jpg