kostenloser Webspace werbefrei: lima-city


frage zu php und feldern

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    c****4

    Hi leute ich fang gerade an bissel was mit php zu schreiben... schreiben is eigentlichs chon zu viel gesagt ich fang halt wirklich grad an...

    mein kompletter Quelltext:

    <?
    $zahl1 = 10;
    $zahl2 = 5;

    $summe = $zahl1 + $zahl2;
    $differenz = $zahl1 - $zahl2;
    $produkt = $zahl1 * $zahl2;
    $quotient = $zahl1 / $zahl2;
    $rest = $zahl1 % $zahl2;

    ?>

    <html>
    <head>
    <title>rechnen mit php</title>
    </head>
    <body>
    <h3>Rechnen mit php5</h3>
    Die erste Zahl ist <font color='blue'><? echo $zahl1; ?></font><br>
    Die zweite Zahl ist <font color='blue'><? echo $zahl2; ?></font><br><br>

    Die Summe aus <font color='red'><? echo $zahl1; ?></font> und <font color='red'><? echo $zahl2; ?>2</font> ist <font color='red' size='+1'><? echo $summe; ?></font><br>

    Die Differenz aus <font color='red'><? echo $zahl1; ?></font> und <font color='red'><? echo $zahl2; ?>2</font> ist <font color='red' size='+1'><? echo $differenz; ?></font><br>

    Das Produkt aus <font color='red'><? echo $zahl1; ?></font> und <font color='red'><? echo $zahl2; ?></font> ist <font color='red' size='+1'><? echo $produkt; ?></font><br>

    Der Quotient aus <font color='red'><? echo $zahl1; ?></font> und <font color='red'><? echo $zahl2; ?></font> ist <font color='red' size='+1'><? echo $quotient; ?></font> Der Rest beträgt <font color='red' size='+1'><? echo $rest; ?></font>.<br><br>


    <h4>Variable $zahl1 und $zahl2 aendern</h4>
    <form action='<? echo $PHP_SELF; ?>' method='post'>
    <input type='text' name='zahl3'>
    <input type='text' name='zahl4'>
    <input type='submit' value='OK'>
    </form>
    <p>Ihre Eingabe war <? echo $zahl3; ?> und <? echo $zahl4; ?></p>

    </body>
    </html>


    Mir geht es aber im näheren um

    <h4>Variable $zahl1 und $zahl2 aendern</h4>
    <form action='<? echo $PHP_SELF; ?>' method='post'>
    <input type='text' name='zahl3'>
    <input type='text' name='zahl4'>
    <input type='submit' value='OK'>
    </form>
    <p>Ihre Eingabe war <? echo $zahl3; ?> und <? echo $zahl4; ?></p>


    Und zwar wenn wir in der schule das so schreiben erzeugt php automatisch nach dem feldnamen einen Ausdruck wie zum beispiel $zahl3 bzw. $zahl4 ...
    Ich habe mir gerade eben apache und php5 installiert da ist dies aber deaktiviert... wie kann ich es aktivieren...
    danke;)

    Beitrag geaendert: 8.12.2006 19:19:52 von ct2004

    Abstimmung (Nur eine Auswahl möglich)

    Option 1
    50 % (2 Stimmen)
    Option 2
    50 % (2 Stimmen)
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Das nennt sich Register Globals und kann sehr gefährlich werden, wenn man keine Ahnung hat, deswegen ist es scho besser, wenn es deaktiviert ist.
    Du musst jetzt statt $zahl3 einfach nur $_POST['zahl3'] schreiben bzw $_GET, wenn du etwas mit Get übermittelst.
  4. o*******r

    Moin.

    Was mir noch auffällt... Du hast die öffnenden PHP-Tags in kurzer Schreibweise ("<?") verwendet. Auf manchen Servern ist der Konfigurationsschalter "short_open_tag", welcher ermöglicht, diese Schreibweise zu nutzen, deaktiviert. Gewöhne Dir am besten gleich "<?php" an. :wink:

    GrEetz, Olliander

    Beitrag geaendert: 8.12.2006 20:08:22 von olliander
  5. Autor dieses Themas

    c****4


    olliander schrieb:
    Moin.

    Was mir noch auffällt... Du hast die öffnenden PHP-Tags in kurzer Schreibweise ('<?') verwendet. Auf manchen Servern ist der Konfigurationsschalter 'short_open_tag', welcher ermöglicht, diese Schreibweise zu nutzen, deaktiviert. Gewöhne Dir am besten gleich '<?php' an. :wink:

    GrEetz, Olliander

    Beitrag geaendert: 8.12.2006 20:08:22 von olliander


    kurios ist bei mir das es auch deaktiviert ist... es geht trotzdem :confused:

    ich habs jetzt mit $zahl3 = $_REQUEST['zahl3']; jetzt gelöst... danke trotzdem :-)

    hab auch gleich ne neue Frage:
    Wie ihr sehr arbeite ich mit operatoren...
    Jetzt habe ich folgendes mal ausprobiert:

    <?

    echo"
    <title>Rechnung in PHP mit einem Formular</title>

    <h3><u>Rechnung in PHP mit einem Formular</u></h3>
    <form action='$PHP_SELF' mehtod='POST'>
    <table>
    <tr>
    <td>Ihre erste Zahl bitte:</td>
    <td><input type='text' name='zahl1'></td>
    </tr>
    <tr>
    <td>und nun bitte Ihre zweite Zahl:</td>
    <td><input type='text' name='zahl2'></td>
    </tr>
    </table>
    <input type='submit' value='OK'>
    </form>
    ";

    $zahl1 = $_REQUEST['zahl1'];
    $zahl2 = $_REQUEST['zahl2'];

    $summe = $zahl1 + $zahl2;
    $differenz = $zahl1 - $zahl2;
    $produkt = $zahl1 * $zahl2;
    $quotient = $zahl1 / $zahl2;
    $rest = $zahl1 % $zahl2;

    echo"
    Ihre erste Zahl war: $zahl1 <br>
    Ihre zweite Zahl war: $zahl2 <br><br>

    Die Summe aus der ersten sowie der zweiten Zahl ist <font color='red' size='+1'>$summe</font><br>
    Die Different aus der ersten sowie der zweiten Zahl ist <font color='red' size='+1'>$differenz</font><br>
    Das Produkt aus der ersten sowie der zweiten Zahl ist <font color='red' size='+1'>$produkt</font><br>
    Der Quotient aus der ersten sowie der zweiten Zahl ist <font color='red' size='+1'>$quotient</font> mit dem Rest <font color='red' size='+1'>$rest</font>.<br><br>

    <h5><u>Sonstige Angaben</u></h5>
    ";


    if ($zahl2 == 0)
    {
    echo "Die Division durch 0 war schon immer nicht möglich ;)";
    }
    elseif ($zahl1 == 0)
    {
    echo "Man... 0 plus irgendwas gleich irgendwas, 0 minus irgendwas gleich irgendwas mal -1, 0 mal irgendwas is 0 und 0 durch irgendwas ist auch null... armes Deutschland!";
    }
    else
    {
    echo "Im Moment gibt es nichts Interresantes zu nennen.";
    }

    ?>

    Wenn ihr das skript jetzt ausführt wird sofort elseif angezeigt also "Man... 0 plus irgendwas gleich irgendwas, 0 minus irgendwas gleich irgendwas mal -1, 0 mal irgendwas is 0 und 0 durch irgendwas ist auch null... armes Deutschland!"
    Wie kann man überprüfen ob ein Ausdruck überhaupt definiert ist... denn sobald ich das skript ausführe habe ich ja eignetlich noch nichts eingegeben...


    achja: mir is aufgefallen das man html code bei aktivierten register globals ausführen kann... liegt es daran dass man es besser deaktiviert hat???

    achja:

    short_open_tag = Off es geht aber trotzdem :eek:

    UND: 6000gulden xD

    Beitrag geaendert: 8.12.2006 20:32:46 von ct2004
  6. o*******r

    Schau mal hier:


    <?php

    print
    "<title>Rechnung in PHP mit einem Formular</title>
    <h3><u>Rechnung in PHP mit einem Formular</u></h3>
    <form action='$PHP_SELF' method='get'>
    <table>
    <tr>
    <td>Ihre erste Zahl bitte:</td>
    <td><input type='text' name='zahl1'></td>
    </tr>
    <tr>
    <td>und nun bitte Ihre zweite Zahl:</td>
    <td><input type='text' name='zahl2'></td>
    </tr>
    </table>
    <input type='submit' value='OK'>
    </form>";

    if(!$_GET['zahl1'] and !$_GET['zahl2']) {
    exit ('Keine Zahlen zur Berechnung gegeben.');
    }
    else {

    if(!$_GET['zahl1']) {
    $zahl1 = 0;
    }
    else {
    $zahl1 = $_GET['zahl1'];
    }

    if(!$_GET['zahl2']) {
    $zahl2 = 0;
    }
    else {
    $zahl2 = $_GET['zahl2'];
    }

    if($zahl1 == 0) {
    exit ('Man... 0 plus irgendwas gleich irgendwas, 0 minus irgendwas gleich irgendwas mal -1,
    0 mal irgendwas ist 0 und 0 durch irgendwas ist auch 0... Armes Deutschland!');
    }

    $summe = $zahl1 + $zahl2;
    $differenz = $zahl1 - $zahl2;
    $produkt = $zahl1 * $zahl2;
    @$quotient = $zahl1 / $zahl2;
    @$rest = $zahl1 % $zahl2;

    if($zahl2 == 0) {
    $quotient = 'Die Division durch 0 war schon immer nicht möglich';
    $rest = 'Welcher Rest?';
    }

    print
    "Ihre erste Zahl war: <b>$zahl1</b> <br>
    Ihre zweite Zahl war: <b>$zahl2</b> <br><br>
    Die Summe aus der ersten sowie der zweiten Zahl ist: <font color='red' size='+1'>$summe</font><br>
    Die Differenz aus der ersten sowie der zweiten Zahl: ist <font color='red' size='+1'>$differenz</font><br>
    Das Produkt aus der ersten sowie der zweiten Zahl ist: <font color='red' size='+1'>$produkt</font><br>
    Der Quotient aus der ersten sowie der zweiten Zahl ist: <font color='red' size='+1'>$quotient</font>. Rest: <font color='red' size='+1'>$rest</font>.<br><br>";
    }

    ?>


    (Direkte Quellcodeansicht: http://olliander.milten.lima-city.de/php_highlighter/index.php?file=rechnen.php)

    So würde ich es lösen. Ob eine Variable (!) definiert ist oder nicht, kann man mit einer Kontrollstruktur prüfen, die der in Zeile 20 ähnelt. In diesem Falle bedeutet sie: Wenn $_GET['zahl1'] und $_GET['zahl2'] nicht gesetzt sind, beende das Skript mit der Ausgabe "Keine Zahlen zur Berechnung gegeben.". Dazu noch etwas: Bei Kontrollstrukturen nicht denken, dass man unbedingt "else" oder "elseif" verwenden muss. Beides ist optional. :wink:

    Das vor der Variable $quotient bzw. $rest gesetzte "@" bewirkt, dass eine eventuelle Fehlermeldung beim Dividieren durch 0 unterdrückt wird. Wenn dies in dem Falle nicht gemacht würde, würde PHP eine Fehlermeldung ausgeben: "Warning: Division by zero in /Pfad/zum/Script.php on line xx". Kann man zulassen, ist aber unschön. Den Fehlerunterdrückungs-Operator kann man übrigens auch z.B. vor Funktionsaufrufen setzen. Er ist besonders praktisch im Zusammenhang mit einer eigenen Fehlerbehandlung. Beim Entwickeln/Debuggen sollte er aber stets weggelassen werden. Denn, wie heißt es doch so schön: "Fehler sind da, um behoben zu werden.". :wink:

    Übrigens... Ausdrücke sind in PHP nicht nur Variablen. Vorsicht bei der Formulierung... Ausdrücke sind auch Funktionsaufrufe etc.

    GrEetz, Olliander

    Beitrag geaendert: 10.12.2006 18:38:14 von olliander
  7. Autor dieses Themas

    c****4

    danke!
    und
    print "
    ";
    ist das selbe wie echo "
    ";
    oder wo sind die unterschiede?





    irgendwie macht das apache aber auch was es will... :confused:
    im apache control monitor steht
    " Apache/2.2.3 (Win32) PHP 5.2.0 "
    hmm aber php funktioniert heute morgen aber nicht :-(
    an was könnte das nun wieder liegen?

    Beitrag geaendert: 9.12.2006 9:51:26 von ct2004
  8. o*******r


    danke!
    und
    print "
    ";
    ist das selbe wie echo "
    ";
    oder wo sind die unterschiede?





    irgendwie macht das apache aber auch was es will... :confused:
    im apache control monitor steht
    " Apache/2.2.3 (Win32) PHP 5.2.0 "
    hmm aber php funktioniert heute morgen aber nicht :-(
    an was könnte das nun wieder liegen?

    Beitrag geaendert: 9.12.2006 9:51:26 von ct2004


    "print" ist nicht dasselbe wie "echo", macht aber das Gleiche. ^^
    Der Unterschied liegt z.B. in der Ausführungsgeschwindigkeit. "print" ist etwas performanter als "echo". Noch ein Tip hierzu... Doppelte Anführungszeichen sagen PHP, dass es bei einer Ausgabe nach Variablen suchen soll und diese auch parsen soll. Bei einfachen Anführungszeichen ist dies nicht der Fall. Es ist also ebenfalls geschwindigkeitsfördernd, bei Ausgaben ohne Variablen einfache Anführungszeichen zu verwenden. Alternativ: Den Verkettungsoperator (".") verwenden. Dann benötigt man doppelte Anführungszeichen fast gar nicht mehr. :wink:

    Was Dein Problem mit Apache und PHP angeht... Schau bitte nach, ob das Modul richtig geladen wird (Anweisung in der Config) und ob "AddType" richtig definiert ist.

    GrEetz, Olliander

    Beitrag geaendert: 9.12.2006 12:25:44 von olliander
  9. Autor dieses Themas

    c****4

    so hab mal nachgeschaut in der php.inf also der php konfigurationsdatei steht nichts mit AddType aber es ging ja gestern schon mal... die apache config finde ich nicht ich kann aber auf wusnch ne kopie reinstellen
  10. o*******r


    so hab mal nachgeschaut in der php.inf also der php konfigurationsdatei steht nichts mit AddType aber es ging ja gestern schon mal... die apache config finde ich nicht ich kann aber auf wusnch ne kopie reinstellen


    Hm... Ich hätte dazu sagen sollen, dass Du in der "httpd.conf" nachschauen sollst. Dies ist die Hauptkonfigurationsdatei von Apache.

    GrEetz, Olliander
  11. Autor dieses Themas

    c****4

    ja genau immer schön langsam ;)
    das steht unter AddType:
    # AddType allows you to add to or override the MIME configuration
    # file specified in TypesConfig for specific file types.
    #
    #AddType application/x-gzip .tgz
    #
    # AddEncoding allows you to have certain browsers uncompress
    # information on the fly. Note: Not all browsers support this.
    #
    #AddEncoding x-compress .Z
    #AddEncoding x-gzip .gz .tgz
    #
    # If the AddEncoding directives above are commented-out, then you
    # probably should define those extensions to indicate media types:
    #
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz

    das kuriose ist bloß das es ja schon mal funktioniert hat...
    und das steht bei den mimetypes... es müsste also theoretisch funktionieren :confused:

    application/x-httpd-php php
    application/x-httpd-php-source phps
    application/x-httpd-php php
    application/x-httpd-php-source phps


    Beitrag geaendert: 9.12.2006 15:49:45 von ct2004

    Beitrag geaendert: 9.12.2006 15:50:03 von ct2004
  12. Der Apache schreibt alles, was ihm auf den Sack geht in ein Error-Log-File. Das liegt in der üblichen 08/15-XAMPP-Konfiguration in einem Verzeichnis, das gleich neben dem liegt, wo die Configurations-Datei drin ist -- wenn du nichts verbogen hast. Jedenfalls sagt dir das Error-Log meistens, was schief gegangen ist.

    Die MIME-Types haben übrigens nichts mit der Server-Konfig und Script-Ausführung zu tun. Sie sind dazu da, dass der Server den richtigen Content-Type zu einer Datei an den Browser schickt.

    Was den Unterschied zwischen print() und echo() angeht:
    1. Muss ich da dem Häuptling der Techniken widersprechen: echo() ist schneller als print(). Trotzdem mag ich print() lieber, denn ...
    2. print() liefert einen Rückgabewert, echo() nicht. Außerdem kenne ich print() von Perl, aber das ist eine andere Geschichte ...^^

    Übrigens, meine Apache-2.2-Conf für PHP sieht so aus:


    # EisFuX locale settings
    #
    <IfModule alias_module>
    <IfModule mime_module>
    # PHP4 als Apache-2.2.3-Modul (php4apache2h.dll von apachelounge ab August 2006)
    # php4apache2.dll ist gepacht, um PHP4- und PHP5-Modul gleichzeitig zu betreiben
    LoadModule php4_module "d:/work/webdev/+php/php4/php4apache2__eisfux.dll"
    AddType application/x-httpdphp4 .php4 .php3

    # PHP5 als Apache-2.2.3-Modul (php5apache22h.dll von apachelounge)
    LoadModule php5_module "d:/work/webdev/+php/php5/php5apache22h.dll"
    AddType application/x-httpd-php .php .php5

    # Verzeichnis fuer php.ini setzen (nur PHP5?)
    PHPIniDir "d:/work/webdev/+php/php_ini"


    </IfModule>
    </IfModule>

    Include conf/extra/eisfux-vhosts.conf


    Woraus wir messerscharf schlussfolgern, dass LoadModule und Addtype definiert sein müssen, und vor allem LoadModule auf eine gültige PHP-Server-Modul-DLL zeigen muss. Existiert diese bei dir in dem Pfad, auf den die Config-Einstellung zeigt?

    Die Pfade dürften bei dir natürlich anders sein ...
  13. Autor dieses Themas

    c****4

    #BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
    PHPIniDir "C:\Programme\Apache Software Foundation\php\"
    LoadModule php5_module "C:\Programme\Apache Software Foundation\php\php5apache2_2.dll"
    #END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL

    /* hmm naja... achja ich hab nich xampp installiert sondern apache direkt von apache.com ...
    und für meinen win§ rechner hab ich dann von php.com die install.msi geladen...

    gestern gings ja... aber heute nicht mehr...
    */

    Ja in der errors datei steht eigentlich nichts nennenswertes drinn
    auf wunsch post ich es


    Die pfade zeigen auf die richtigen verzeichnisse...

    und nochwas was liefert print''; zurück?




    Beitrag geaendert: 9.12.2006 21:31:28 von ct2004
  14. /* hmm naja... achja ich hab nich xampp installiert sondern apache direkt von apache.com ...

    Sehr gut! Gefällt mir ...

    und für meinen win§ rechner hab ich dann von php.com die install.msi geladen...

    Und beide arbeiten zusammen? Als ich das das letze Mal probiert hatte, ging es eben nicht. Ist aber schon eine Weile her ...

    gestern gings ja... aber heute nicht mehr...

    Was hast du in der Zwischenzeit geändert?

    und nochwas was liefert print''; zurück?

    Keine Ahnung. Wichtig ist für mich nur, dass überhaupt ein Rückgabewert geliefert wird. Das ist bei manchen Sprachkonstrukten erforderlich.

    http://de.php.net/manual/de/function.print.php
    http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40

  15. Was den Unterschied zwischen print() und echo() angeht:
    1. Muss ich da dem Häuptling der Techniken widersprechen: echo() ist schneller als print(). Trotzdem mag ich print() lieber, denn ...
    2. print() liefert einen Rückgabewert, echo() nicht. Außerdem kenne ich print() von Perl, aber das ist eine andere Geschichte ...^^


    Hattest du nicht mal einen Benchmark gemacht, bei dem rauskam, dass print() schneller ist als echo()?

    Für Variablen in Strings würde ich eigentlich am besten printf() benutzen.
    http://de.php.net/manual/de/function.printf.php


  16. Was den Unterschied zwischen print() und echo() angeht:
    1. Muss ich da dem Häuptling der Techniken widersprechen: echo() ist schneller als print(). Trotzdem mag ich print() lieber, denn ...
    2. print() liefert einen Rückgabewert, echo() nicht. Außerdem kenne ich print() von Perl, aber das ist eine andere Geschichte ...^^


    Hattest du nicht mal einen Benchmark gemacht, bei dem rauskam, dass print() schneller ist als echo()?

    Nee, der "Benchmark"-Test hat ergeben, das print() ca. 6 Prozent langsamer war. Aber mein zweites (und bisher letztes) Lima-Tutorial hat die "Alternativen" zu echo() aufgelistet, die alle "print" im Namen haben, u.A. printf() und print_r() ...

    Für Variablen in Strings würde ich eigentlich am besten printf() benutzen.
    http://de.php.net/manual/de/function.printf.php

    Bei sofortiger Ausgabe ja, da ich die Rückgabe von Strings vorziehe, ist sprintf() mein Kandidat der Wahl.
  17. Autor dieses Themas

    c****4



    Zitatgestern gings ja... aber heute nicht mehr...

    Was hast du in der Zwischenzeit geändert?


    garnichts.. das ist es ja...
    lol jetzt kann ich gar keinen server mehr emulieren -.-
    -> "The requested operation has failed" :confused:
    ähm ja... jetzt weis ich auch warum fast alle server auf unix laufen... :P

    warum darf ich kein php lernen? :slant:

    Beitrag geaendert: 10.12.2006 10:53:54 von ct2004



  18. Zitatgestern gings ja... aber heute nicht mehr...

    Was hast du in der Zwischenzeit geändert?


    garnichts.. das ist es ja...

    Wirklich gar nichts?
    Es muss ja auf den ersten Blick nichts mit dem Server oder PHP zu tun haben.
    Bei mir lief z.B. nach dem Einspielen des SP2 nichts mehr, weil meine virtuellen Hosts nicht auf die Adresse 127.0.0.1 gemappt waren. Auch beim Rumspielen mit der HOSTS-Datei hab ich schon mal was "unerreichbar" gemacht ...


    lol jetzt kann ich gar keinen server mehr emulieren -.-
    -> "The requested operation has failed" :confused:

    Höe? Ist mir noch nie untergekommen. Wie wäre es mit einer kompletten Neuinstallation von Apache und PHP? Zumindest wenn hier keine besseren Ratschläge kommen.


    ähm ja... jetzt weis ich auch warum fast alle server auf unix laufen... :P

    Ich weiß nicht, aber ich denke, dass es nicht an WinXP liegt ...

    warum darf ich kein php lernen? :slant:

    Musst du in der Zwischenzeit Trockenübungen machen und PHP-Befehle pauken:
    http://de.php.net/manual/de/
    :wink:

    Beitrag geaendert: 10.12.2006 18:32:18 von alopex
  19. Autor dieses Themas

    c****4

    okay ich werd morgen mal apache neu installieren ich geb dann bescheid obs was gebracht hat ;)
  20. Autor dieses Themas

    c****4

    *push*
    so sry das ich mich jetzt erst wieder melden kann.

    Ich habe soeben mein komplettes Apache und PHP runtergeschmissen und dann neu installiert apache funktioniert jetzt wieder, PHP hingegen wieder nicht...
    Weiß jmd an was das leigen könnte?
  21. Autor dieses Themas

    c****4

  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!