What you are after are the mysql aggregate functions that will output your totals from one query. Depending on your mysql version you can also get the group totals totalles by gropu by modifiers with roolup
I'm guessing at your table layout
$sql = "SELECT rate_quality_of_food, COUNT(rate_quality_of_food) AS count FROM survey GROUP BY rate_quality_of_food ORDER BY rate_quality_of_food";
That will give you the count of rows for values 1,2,3,4 and with roolup you would also get the total count of all rows, but that is easy to do in php as you layout the results anyway.
Now what you are really after is a Pivot Table, sometimes called a Crosstab. Mysq; does not have a lot of support for that type of query and I don't think you are ready to takle writing it yourself. Nor are you ready for gettng all counts for all columns in one query: we could help you to write it but you would not be able to maintain it.
To code a query generator that will generate all the queries for al the columns try something like this
$cols = array('rate_planing_process','rate_menu','rate_quality_of_food');
foreach ($cols as $col) {
$sql = "SELECT $col, COUNT($col) as count FROM survey GROUP BY $col ORDER BY $col";
$result = mysql_query($sql);
// etc to deal with the results
}
As I said you can get total count by summing each row count as you display it.