Foros del Web » Programando para Internet » PHP »

un problema con foreach

Estas en el tema de un problema con foreach en el foro de PHP en Foros del Web. quiero cargar las entradas del foro, uso foreach, pero teniene un error. cuando hago la coneccion con la base de datos, selecciona pongamos dos lineas, ...
  #1 (permalink)  
Antiguo 06/03/2011, 10:25
 
Fecha de Ingreso: febrero-2011
Mensajes: 17
Antigüedad: 13 años, 2 meses
Puntos: 0
un problema con foreach

quiero cargar las entradas del foro, uso foreach, pero teniene un error. cuando hago la coneccion con la base de datos, selecciona pongamos dos lineas, cuando recorro la matriz, en vex de cargar dos lineas nada mas, me carga cinco veces esas dos lines. NO SE QUE ESTA MAL, POR QUE HACE DOS DIAS USABA EL MISMO CODIGO Y NO ME TIRABA ESE ERRROR


este es el codigo PHP>


function MostrarRecibidos()
{
//ESTA PAGINA EXTRAE DE LA BASE DE DATOS LOS MENSAJES DE LA BANDEJA DE ENTRADA

//CONEXION A BASE DE DATOS
$link = mysql_connect('localhost', 'root', '')
or die('Error de conexion: ' . mysql_error());

//SELECCIONAMOS LA BASE DE DATOS
mysql_select_db('pag_per')
or die('Error al seleccionar base de datos');

$dia= date("d");
$mes= date("m");
$a= date("Y");
$mes -= 1;
if($mes == 0)
{
$mes = 12;
$a -= 1;
}


$dia = strrev($dia);
$mes = strrev($mes);
$time = $dia."/".$mes."/".$a;
$time = strrev($time);
echo $time;

$query = 'SELECT foro.id_foro, foro.titulo, usuario.img_simbolo , usuario.name, foro.texto, foro.fecha FROM foro, usuario';

$result = mysql_query($query) or die('Falló la busqueda: ' .mysql_error());

// Imprimo una tabla con los resultados de mi query

echo "<!--ACA INCLUYO LA HOJA DE ESTILO--> <link href=EstilosMails.css' rel='stylesheet' type='text/css'>";
echo "<table border='0'; cellpadding='0'; cellspacing='0' style='position:absolute; top:60px; left:460px' >\n";
echo "\t<tr>\n";

echo "\t\t<td class='CeldaEmisorPrimerFilaTablaRecibidos' style='width:100px'>Emisor</td>\n";
echo "\t\t<td class='CeldaAsuntoPrimerFilaTablaRecibidos' style='width:200px'>Asunto</td>\n";
echo "\t\t<td class='CeldaEstadoPrimerFilaTablaRecibidos' style='width:100px'>Estado</td>\n";
echo "\t\t<td></td>\n";

echo "\t</tr>\n";
$i=0;
$a=0;

while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
{
$i = 0;
echo "\t<tr>\n";

foreach ($line as $col_value)
{
echo $a;
if ($i == 0)
echo "\t\t<td class='PrimerCeldaTablaRecibidos'>$col_value</td>\n";

if ($i == 1)
echo "\t\t<td class='OtrasCeldasTablaRecibidos'>$col_value</td>\n";

if ($i == 2)
{
if ($col_value==0)
echo "\t\t<td class='OtrasCeldasTablaRecibidos'>No Leido</td>\n";
else
echo "\t\t<td class='OtrasCeldasTablaRecibidos'>Leido</td>\n";
}

if ($i == 3)
{
echo "\t\t<td class='LeerTablaRecibidos'><a href='cargarDatosMail.php?codMensaje=$col_value'>L eer</a></td>\n";
echo "\t\t<td class='LeerTablaRecibidos'><a href='borrarMail.php?codMensaje=$col_value'>&nbsp& nbsp&nbspBorrar</a></td>\n";
}

$i++;
}
echo $i;
echo "\t</tr>\n";


}
echo "</table>\n";

//LIBERAMOS LA MEMORIA
mysql_free_result($result);
//CERRAMOS LA CONEXION
mysql_close($link);

}
  #2 (permalink)  
Antiguo 06/03/2011, 11:09
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: un problema con foreach

una sugerencia coloca tus codigos dentro del highlight del foro de manera que sea mas facil de visualizar, lo que te esta pasando lo mas seguro es por el resultado de la consulta ya que la misma no tiene ninguna union entre las dos tabla que utilizas
Cita:
$query = 'SELECT foro.id_foro, foro.titulo, usuario.img_simbolo , usuario.name, foro.texto, foro.fecha FROM foro, usuario';
has la misma consulta en el PHPMYADMIN o el cliente que utilizas y ve si te da los mismos resultados.
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 06/03/2011, 12:54
 
Fecha de Ingreso: febrero-2011
Mensajes: 17
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: un problema con foreach

Cita:
Iniciado por dragonsr Ver Mensaje
quiero cargar las entradas del foro, uso foreach, pero teniene un error. cuando hago la coneccion con la base de datos, selecciona pongamos dos lineas, cuando recorro la matriz, en vex de cargar dos lineas nada mas, me carga cinco veces esas dos lines. NO SE QUE ESTA MAL, POR QUE HACE DOS DIAS USABA EL MISMO CODIGO Y NO ME TIRABA ESE ERRROR


este es el codigo PHP>


function MostrarRecibidos()
{
//ESTA PAGINA EXTRAE DE LA BASE DE DATOS LOS MENSAJES DE LA BANDEJA DE ENTRADA

//CONEXION A BASE DE DATOS
$link = mysql_connect('localhost', 'root', '')
or die('Error de conexion: ' . mysql_error());

//SELECCIONAMOS LA BASE DE DATOS
mysql_select_db('pag_per')
or die('Error al seleccionar base de datos');

$dia= date("d");
$mes= date("m");
$a= date("Y");
$mes -= 1;
if($mes == 0)
{
$mes = 12;
$a -= 1;
}


$dia = strrev($dia);
$mes = strrev($mes);
$time = $dia."/".$mes."/".$a;
$time = strrev($time);
echo $time;

$query = 'SELECT foro.id_foro, foro.titulo, usuario.img_simbolo , usuario.name, foro.texto, foro.fecha FROM foro, usuario';

$result = mysql_query($query) or die('Falló la busqueda: ' .mysql_error());

// Imprimo una tabla con los resultados de mi query

echo "<!--ACA INCLUYO LA HOJA DE ESTILO--> <link href=EstilosMails.css' rel='stylesheet' type='text/css'>";
echo "<table border='0'; cellpadding='0'; cellspacing='0' style='position:absolute; top:60px; left:460px' >\n";
echo "\t<tr>\n";

echo "\t\t<td class='CeldaEmisorPrimerFilaTablaRecibidos' style='width:100px'>Emisor</td>\n";
echo "\t\t<td class='CeldaAsuntoPrimerFilaTablaRecibidos' style='width:200px'>Asunto</td>\n";
echo "\t\t<td class='CeldaEstadoPrimerFilaTablaRecibidos' style='width:100px'>Estado</td>\n";
echo "\t\t<td></td>\n";

echo "\t</tr>\n";
$i=0;
$a=0;

while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
{
$i = 0;
echo "\t<tr>\n";

foreach ($line as $col_value)
{
echo $a;
if ($i == 0)
echo "\t\t<td class='PrimerCeldaTablaRecibidos'>$col_value</td>\n";

if ($i == 1)
echo "\t\t<td class='OtrasCeldasTablaRecibidos'>$col_value</td>\n";

if ($i == 2)
{
if ($col_value==0)
echo "\t\t<td class='OtrasCeldasTablaRecibidos'>No Leido</td>\n";
else
echo "\t\t<td class='OtrasCeldasTablaRecibidos'>Leido</td>\n";
}

if ($i == 3)
{
echo "\t\t<td class='LeerTablaRecibidos'><a href='cargarDatosMail.php?codMensaje=$col_value'>L eer</a></td>\n";
echo "\t\t<td class='LeerTablaRecibidos'><a href='borrarMail.php?codMensaje=$col_value'>&nbsp& nbsp&nbspBorrar</a></td>\n";
}

$i++;
}
echo $i;
echo "\t</tr>\n";


}
echo "</table>\n";

//LIBERAMOS LA MEMORIA
mysql_free_result($result);
//CERRAMOS LA CONEXION
mysql_close($link);

}
aclaracion esto no esta subdo a un servidor, lo pruebo en mi compu todabia

Etiquetas: foreach
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 03:47.