Foros del Web » Programando para Internet » PHP »

Problema con array vacio ""

Estas en el tema de Problema con array vacio "" en el foro de PHP en Foros del Web. Buenas, espero que puedan ayudarme. Estoy aprendiendo php se bastante creo pero todavia sigo aprendiendo y estoy dedicandome mas a esto, acabo de crear algo ...
  #1 (permalink)  
Antiguo 21/12/2010, 13:59
 
Fecha de Ingreso: julio-2010
Mensajes: 18
Antigüedad: 13 años, 9 meses
Puntos: 1
Problema con array vacio ""

Buenas, espero que puedan ayudarme. Estoy aprendiendo php se bastante creo pero todavia sigo aprendiendo y estoy dedicandome mas a esto, acabo de crear algo simple un tipo de "blog" solo la parte que muestra los post.. obtiene los datos de una base de datos mysql y los publica.. Resulta que lo estoy creando con matrices multidimensionales $post[1]["titulo"] algo asi.. me muestra correctamente el post pero siempre arriba me crea un espacio en blanco como si fuera otro post ejemplo:

------------------------------

------------------------------ Espacio en blanco que no deberia mostrar en una tabla

------------------------------
TITULO POST 2
--------------------------------
CONTENIDO POST 2
--------------------------------
TITULO POST 1
-------------------------------
CONTENIDO POST 1
---------------------------------

aqui les dejo mi codigo, gracias...

Código PHP:
//FUNCION PARA OBTENER POST
<?php
function obtenerPost()
{
    
$query mysql_query("SELECT * FROM noticias ORDER BY id DESC");
    
$postArray[] = array();
    while (
$row mysql_fetch_array($query))
    {
        
array_push($postArray$row);
    }
    return 
$postArray;
}
?>
<table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td align="center" valign="middle"><table width="500" border="0" cellspacing="0" cellpadding="7">
        <?php
        $not 
obtenerPost();
        foreach (
$not as $post)
        {
            echo 
'<tr>';
            echo 
'<td height="30" align="center" valign="middle" bgcolor="#333333">';
            echo 
$post["titulo"];
            echo 
'</td>';
            echo 
'</tr>';
            echo 
'<tr>';
            echo 
'<td bgcolor="#666666">';
            
$post["noticia"] = strip_tags($post["noticia"]);
            echo 
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.$post["noticia"];
            echo 
'</td>';
            echo 
'</tr>';
        }
        
?>
    </table></td>
  </tr>
</table>
  #2 (permalink)  
Antiguo 21/12/2010, 14:31
 
Fecha de Ingreso: diciembre-2010
Mensajes: 31
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problema con array vacio ""

Dos cosas, cambia:

Código PHP:
$postArray[] = array(); 
por

Código PHP:
$postArray = array(); 

y en el for debes comprobar que no está vacío lo que imprimes, por ejemplo:


Código PHP:
foreach ($not as $post)
        {
            if(!empty(
$post["titulo"])) {
            echo 
'<tr>';
            echo 
'<td height="30" align="center" valign="middle" bgcolor="#333333">';
            echo 
$post["titulo"];
            echo 
'</td>';
            echo 
'</tr>';
            echo 
'<tr>';
            echo 
'<td bgcolor="#666666">';
            
$post["noticia"] = strip_tags($post["noticia"]);
            echo 
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.$post["noticia"];
            echo 
'</td>';
            echo 
'</tr>';
           }
        } 
  #3 (permalink)  
Antiguo 21/12/2010, 16:30
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Problema con array vacio ""

Decirte que esto puede simplificarse:

Código PHP:
Ver original
  1. $postArray[] = array();
  2.     while ($row = mysql_fetch_array($query))
  3.     {
  4.         array_push($postArray, $row);
  5.     }

así:

Código PHP:
Ver original
  1. while ($row = mysql_fetch_array($query))
  2.     {
  3.         $postArray[] = $row;
  4.     }

Con eso ya conseguís un "array autoincrementable".

En cuanto a evitar los vacíos, a mi me gusta hacer esto:

Código PHP:
Ver original
  1. if(empty($post["titulo"])) continue;

Con esa sentencia se saltean los items vacios en el bucle. O el problema no era saltearlos sino saber por qué existen?
  #4 (permalink)  
Antiguo 21/12/2010, 21:43
 
Fecha de Ingreso: julio-2010
Mensajes: 18
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Problema con array vacio ""

Gracias por sus respuestas!! me sirvieron mucho incluse yo hic una de otra manera para verificar que no estuviera vacio y no mostrarlo, se me resuelve el problema pero tambien me serviria demasiado porque crea el array vacio... si es que la funcion esta mala o simplemente se crea un array vacio al final que no ai que mostrar.. gracias salu2 y bendiciones
  #5 (permalink)  
Antiguo 22/12/2010, 06:51
 
Fecha de Ingreso: diciembre-2010
Mensajes: 32
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: Problema con array vacio ""

De nada, como te había dicho antes, el error esta acá:

Código PHP:
Ver original
  1. $postArray[] = array();

Estás creando vos mismo el lugar vacío.

Los corchetes crean un lugar vacío, si del otro lado del igual (=) hubiera un valor, se agregaría al array, pero del otro lado hay un array vacío. Espero se haya entendido.

Por lo que queda así:

Código PHP:
Ver original
  1. $postArray = array();
  #6 (permalink)  
Antiguo 22/12/2010, 09:40
 
Fecha de Ingreso: julio-2010
Mensajes: 18
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Problema con array vacio ""

Ah ya entiendo si es cierto, muchas gracias por la ayuda ahora si me funciona perfectamente sin necesidad de estar haciendo algun IF para comprobar que esta vacio, ya no aparece. Muchas gracias a los 2 por su respuestas las 2 me sirvieron.

Etiquetas: vacio
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 23:30.