Broken markup when using the_excerpt() in a widget?

as you are working with strings, you need to use a function which returns the value, instead of echoing it;
in this line:

$byh_content .= "<p>" . the_excerpt() . "</p>";

use get_the_excerpt()
http://codex.wordpress.org/Function_Reference/get_the_excerpt