1. Pack deine case-Anweisung in einen if-Block, mit dem du überprüfst, ob $_POST['rechenmeth'] gesetzt wurde.
Du könntest auch einfach error_reporting auf "E_ALL & ~E_NOTICE" setzten, um Notices auszublenden (Die sind meistens uninteressant) Mehr...

2. Natürlich íst das erlaubt:
PHP-Code:
<b>Taschenrechner</b>

<form action='main.php?site=formular' method='post'>
  <p>Zahl 1:<br><input name='zahl1' type='text' size='30' maxlength='30'></p>
  <p>Zahl 2:<br><input name='zahl2' type='text' size='30' maxlength='40'></p>
  <br><br>
  <select name='rechenmeth'>
    <option>addieren</option>
    <option>subtrahieren</option>
    <option>multiplizieren</option>
    <option>dividieren</option>
  </select>

  <input type='submit'>
</form>
<?php
if(isset($_POST['rechenmeth'])) {  << Diese Zeile ist neu

   $ergebnis
=0;

    switch(
$_POST['rechenmeth']) 
    {
    case 
"addieren":
            
$ergebnis=($_POST['zahl1'] + $_POST['zahl2']);
            break;

    case 
"subtrahieren":
            
$ergebnis=($_POST['zahl1'] - $_POST['zahl2']);
            break;

    case 
"multiplizieren":
        
$ergebnis=($_POST['zahl1'] * $_POST['zahl2']);
        break;

    case 
"dividieren":
        
$ergebnis=($_POST['zahl1'] / $_POST['zahl2']);
        break;

        default:  
        
$ergebnis=($_POST['zahl1'] + $_POST['zahl2']);
            break;
    }

 echo 
"Ergebbis: ".$ergebnis;

} << Die 
Zeile ist auch neu
?>