El mismo mensaje de error indica donde puedes empezar a buscar-lo (aproximadamente). En la línia 28 estas utilizando heredox syntax (<<<EOD ... EOD;). Si no estoy equivocado dentro de estos delimitadores se admiten texto o código html, javascript... y variables de php pero no el uso de sentencias (while, if, echo, etc.).
A continuación pongo como podría quedar más o menos (no te puedo asegurar que funcione. No lo he comprobado)
Código PHP:
<html>
<head>
<title>Relación de empresas</title>
<meta http-equiv="generator" content="PHP Designer 2005" />
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<?php include "logo.php" ;?>
<?php include "header.php"; ?>
<?php include "conecta.php"; ?>
<form action="procesar.php" method="post" name="frm_clientes">
<table width='90%' border='1' align='center'>
<?php
$query = "SELECT
empresas.firstinput,cif,nombre,representante,nif,domicilio,poblacion,
provincia,cp,telefono,fax,credito,disponible,costes.cif2,total1
FROM
empresas,costes
WHERE cif=cif2
ORDER BY cif";
$results = mysql_query($query /* -- desconozco este uso con consultas sql */) or die (mysql_error());
/* $cursos_details =<<<EOD */ /* su uso no es correcto en este caso ya que en su interior utilizas sentencias sql (puedes usar variables pero sentencias de este tipo creo que no es correcto Ej: while, echo, etiquetas php...)*/
$cursos_details = "";
while($row = mysql_fetch_array($results)) /*falta el corchete de apertura para el while */ {
/*en cada recorrido dentro del bucle while se va añadiendo (.= por eso el uso del "." delante del "=") el contenido a la variable $cursos_details */
$cursos_details .= <<<EOD
<tr>
<input name="firstinput" type="text" id="firstinput" size="40"
value="$row['firstinput']"/>
</tr>
<tr>
<input name="cif" type="text" id="cif" size="40"
value="$row['cif']"/>
</tr>
<tr>
<input name="nombre" type="text" id="nombre" size="40"
value="$row['nombre']"/>
</tr>
<tr>
<input name="representante" type="text" id="representante" size="40"
value="$row['representante']"/>
</tr>
<tr>
<input name="nif" type="text" id="nif" size="40"
value="$row['nif']"/>
</tr>
<tr>
<input name="domicilio" type="text" id="domicilio" size="40"
value="$row['domicilio']"/>
</tr>
<tr>
<input name="poblacion" type="text" id="poblacion" size="40"
value="$row['poblacion']"/>
</tr>
<tr>
<input name="provincia" type="text" id="provincia" size="40"
value="$row['provincia']"/>
</tr>
<tr>
<input name="cp" type="text" id="cp" size="40"
value="$row['cp']"/>
</tr>
<tr>
<input name="telefono" type="text" id="telefono" size="40" value="$row['telefono']"/>
</tr>
<tr>
<input name="fax" type="text" id="fax" size="40"
value="$row['fax']"/>
</tr>
<tr>
<input name="credito" type="text" id="credito" size="40"
value="$row['credito']"/>
</tr>
<tr>
<input name="disponible" type="text" id="disponible" size="40"
value="$row['disponible']"/>
</tr>
<tr>
<input name="total1" type="text" id="total1" size="40"
value="$row['total1']"/>
</tr>
EOD;
$disponible=$credito-$total1; /* aquí deberás vigilar que es lo que quieres obtener, probablemente deberás modificarlo o realizar la resta de otro modo, ya que tal como está ahora creo que solo obtendrías el disponible del último registro de la tabla/consulta */
} /* fin del while */
echo $cursos_details; /* mostrar los resultados */
?>
</table>
</form>
</body>
</html>
No estaría mal que te descargaras el manual de php y el de mysql, siempre viene bien tenerlos a mano.
Otra manera de hacer lo mismo que en el ejemplo sería utilizar un bucle foreach() (o un "for" combinado con mysql_num_rows para conocer el número de líneas que contiene la consulta) y una misma "plantilla" para mostrar el contenido (<tr><input id="$row[...]" name="$row[...]" value="$row[...]" /></tr> [ojo, no es un ejemplo funcional])
Espero haberte aclarado algo aunque sólo sea un poquito (a veces cuesta explicarse con claridad

)
Salu2