Al netto di tutto il codice HTML, quanto hai scritto si riassume in:
Codice PHP:
$something = "string" . if ($condition) { $var = "A"; } else { $var = "B"; } echo $var;
Usando l'operatore di concatenazione di stringhe viene richiesto un valore, non puoi utilizzare un costrutto condizionale (un if-then-else) in quel punto.
Sposta il costrutto condizionale prima della costruzione della stringa:
Codice PHP:
if ($row->appello == "1") {
$stato = "Presente";
}
elseif ($row->appello == "2") {
$stato = "Assente";
}
elseif ($row->appello == "3") {
$stato = "Uscito";
}
echo '<td><input type="text" name="anno" class="textox2" value="' . $stato . '"></td>';
Altre osservazioni: anziché un insieme di if potresti valutare l'uso di uno switch o di una lookup table. In ogni caso dovresti gestire la possibilità che $row->appello contenga un valore inatteso, ad esempio 0 o 4, e prevedere un valore di default o una gestione degli errori.