Ergebnis 1 bis 4 von 4

Thema: Verschiedene PHP Fragen

  1. #1

    Pik Gast

    Verschiedene PHP Fragen

    Joa, ich hab mich etwas mit PHP beschäftigt und habe jetzt (und warscheinlich auch zukünftig) ein paar fragen.

    So, zu Übungszwecken habe ich mir heute 'nen Taschenrechner gebastelt. Der funktioniert auch soweit:
    PHP-Code:
    <?php

     
    echo "
    <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>"
    ;

     
    $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;

    ?>
    Allerdings mit folgenden Meldungen:
    Zitat Zitat
    Notice: Undefined index: rechenmeth in CProgramme\XAMPP\xampp\htdocs\TESTORDNER\formular.php on line 23

    Notice: Undefined index: zahl1 in CProgramme\XAMPP\xampp\htdocs\TESTORDNER\formular.php on line 42

    Notice: Undefined index: zahl2 in CProgramme\XAMPP\xampp\htdocs\TESTORDNER\formular.php on line 42
    Nach dem ersten Rechnen sind die Meldungen logischerweise weg. Scheinbar ist ja ein vordefinierter Wert für die Arrayelemente erwünschenswert, aber wie bzw. wo wäre das denn sinnvoll machbar?

    Dann noch eine generelle Frage zur Struktur von php-Dateien. HTML-Elemente kann man ja einfach so reinschreiben, jede Zeile per echo ausgeben oder ganze Blöcke mit echo ausgeben. Am einfachsten ist logischwerweise erstere Variante, wegen dem Escapen von Zeichen, aber ist das erlaubt?

    Ach ja, gibt's ne Seite, die mehrer kleine Aufgaben zu einem Thema vorgibt? Due Tutorials sind ja alle ganz nett, aber Lernen durch Lesen bringt nicht halb soviel wie durch selber probieren. Außerdem vergißt man schnell die Hälfte und schreibt im Endeffekt nur die Tutorialbeispiele ab, wenn man was brauch.

    Geändert von Pik (04.03.2006 um 17:39 Uhr)

  2. #2
    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
    ?>

  3. #3

    Pik Gast
    Danke, funktioniert.

    Zitat Zitat
    Du könntest auch einfach error_reporting auf "E_ALL & ~E_NOTICE" setzten, um Notices auszublenden (Die sind meistens uninteressant)
    Ja sicher, aber wenn ich es ausblende ist es immernoch da, auch wenn es unwichtig ist. Soviel Mühe, die Sachen eineindeutig zu machen ist es ja meistens nicht. Und ich will mir ja nicht gleich am Anfang 'nen schlechten Stil angewöhnen

  4. #4
    Zitat Zitat von Pik
    Dann noch eine generelle Frage zur Struktur von php-Dateien. HTML-Elemente kann man ja einfach so reinschreiben, jede Zeile per echo ausgeben oder ganze Blöcke mit echo ausgeben. Am einfachsten ist logischwerweise erstere Variante, wegen dem Escapen von Zeichen, aber ist das erlaubt?
    Es ist erlaubt, ich rate aber stark davon ab. Wenn du dich daran gewöhnst, so zu arbeiten wirst du bei größeren Projekten vielleicht auf die Idee kommen, es da auch so zu machen und das führt unweigerlich zu Code, der mindestens schlecht und im schlimmsten Fall gar nicht wartbar ist.

    Als prominentes Beispiel führe ich das RPG-Atelier an: Der Code da müßte an sich erweitert werden und ich habe SDS versprochen, es mir anzusehen. Als er mir den Quelltext geschickt hat war ich erst mal platt - da waren PHP-Blöcke in HTML-Blöcken in PHP-Blöcken und so weiter... ad nauseam. Ich hab's aufgegeben, den Code verstehen zu wollen und außer dem ursprünglichen Autor (den ich mal nicht nenne) wird kaum jemand in der Lage und gewillt sein, sich da einzuarbeiten.
    Wahrscheinlich wird zumindest der Backend-Code vom Atelier komplett ersetzt werden müssen, weil er unwartbar ist.

    Man muß nicht nur Präsentation und Inhalt sauber trennen sondern auch Programmlogik und Interface, sonst kommt man nur in Schwierigkeiten.
    Ein Projekt, das du mal probieren könntest, wäre das Einbinden von HTML-Templates über get_file_contents() und str_replace(). Glaub' mir, das wirst du später brauchen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •