El problema no es con sesiones .. sino con la consulta SQL que haces y como obtienes sus resultados ..
Las funciones mysql_fetch_xxx() de PHP hacen lo siguiente:
"Obtienen un resultado de tu consulta (registro) y mueven el puntero a la siguiente posición".
Si tu haces un "if()" pero asignando $row par "psudo-comprobar" que el resultado de tu consulta se ejecutó.. ya estás "moviendo" el puntero del resultado a la siguiente posición de resultados .. Y, supongo que por el tipo de consulta y datos que són sólo obtendras un resultado o cero resultados de tu SQL ..
Si quieres hacerlo como lo estabas implementado tendrias que usar:
Código PHP:
if ($row =mysql_fetch_array ($res)){
// Si hay datos
list ($act,$fecha,$nombre,$texto) = $row;
}else{
//no hay datos
echo "error al buscar el anuncio";
exit;
}
echo "$nombre"; //no sale
echo "$id"; // si sale
Pero yo haría:
Código PHP:
if (mysql_num_rows($res) == 1){
// Si hay datos
list ($act,$fecha,$nombre,$texto) = mysql_fetch_array ($res);
}else{
//no hay datos
echo "error al buscar el anuncio";
exit;
}
Y mejor todavía para evitar problemas con los nombres/orden de los campos que use en el SQL empleado:
Código PHP:
if (mysql_num_rows($res) == 1){
// Si hay datos
$row=mysql_array_array ($res);
echo $row['nombre'];
echo $row['otro_campo'];
}else{
//no hay datos
echo "error al buscar el anuncio";
exit;
}
La función myslq_num_rows() Cuenta el total de registros que arrojó tu consulta SQL (record-set) .. así que me baso en ese resultado para saber si hay registros (uno es lo que espero si esos ID son únicos) o no que mostrar mas que en que si la función arrojó o no un error al ejecutarse.
Un saludo,