1)
Codice PHP:
$sql =@mysql_query($query);
Questo è un ABOMINIO da evitare come la peste.
Codice PHP:
$sql =mysql_query($query) or die(mysql_error());
2) NON E' VERO che mysql_query non restituisce un booleano. In caso di istruzione di aggiornamento restituisce proprio un booleano, invece
For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.
For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc, mysql_query() returns TRUE on success or FALSE on error.
Per finire: probabilmente l'id lo devi prendere da $_POST e non da $_GET, visto che tutto il resto lo prendi da $_POST immagino che anche quello sia lì.