C'è da riorganizzare la query e la gestione dell'output relativo.
Codice PHP:
$sqlcat2 "SELECT * from ordini where id='$id'";
$rescat2 mysql_query($sqlcat2) or die("Impossibile caricare il numero di ordine: ".mysql_error());
while (
$rowcat2 mysql_fetch_array($rescat2)) {
  
$ordine $rowcat2[1];

Non c'è alcun output in forma di testo che possa andare a completare la variabile $messaggio.

Per cui, cominciamo con il produrre l'output:

Codice PHP:
$sqlcat2 "SELECT * from ordini where id='$id'";
$rescat2 mysql_query($sqlcat2) or die("Impossibile caricare il numero di ordine: ".mysql_error());
$ordine "";
while (
$rowcat2 mysql_fetch_array($rescat2)) {
  
$ordine .= $rowcat2[1];

e poi, $messaggio potrebbe diventare qualcosa del genere:

Codice PHP:
$messaggio "blah blha codice html".$ordine."blah blah resto del codice html"