php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.12.2009, 21:35  
Neuer Benutzer
 
Registriert seit: 19.12.2009
Beiträge: 18
PHP-Kenntnisse:
Anfänger
fripon77 befindet sich auf einem aufstrebenden Ast
Standard fehlerfreies formular - aber wie schneller, besser, schlanker?

ich hoffe, mein wunsch ist nicht unverschämt: ich würde mich freuen, wenn ein erfahrener php´ler mein folgendes script auf effizienz & sicherheit überprüft - quasi als mentor. das script selbst funktioniert fehlerfrei. ich habe mir das die letzten tage selbst angelesen & erarbeitet - auch dank dieses beitrags (Logarithmus, Zins, Runden...) und eurer unterstützung.

um aber zu erkennen, was man besser, schneller, schlanker machen könnte, bedarf es sicherlich viel erfahrung - und das geht in ein paar tagen bestimmt nicht.

also wer lust hat, mir tipps zu geben, der kann das script vielleicht mal überfliegen...

PHP-Code:
<?php
if ( $_GET['darlehensbetrag'] == "" OR $_GET['zinssatz'] == "" OR $_GET['mtl_rate_inkl_tilgung'] == "")
{
    echo 
'<form id="laufzeitrechner" action="rechner.php" method="GET">';

    if ( 
$_GET['darlehensbetrag'] == "" )
    {
        if ( 
$_GET['schon_mal_abgesendet'] == "ja" )
        {
            echo 
"<p class='error'>Hinweis: Bitte Feld Darlehensbetrag ausfüllen</p>";
        }
    }
    echo 
'Darlehensbetrag (EUR): ';
    echo 
'<input type="text" name="darlehensbetrag" value="';

    echo 
$_GET['darlehensbetrag'];

    echo 
'" size="12" maxlength="12" />';

    if ( 
$_GET['zinssatz'] == "" )
    {
        if ( 
$_GET['schon_mal_abgesendet'] == "ja" )
        {
            echo 
"<p class='error'>Hinweis: Bitte Feld Zinssatz ausfüllen</p>";
        }
    }
    echo 
'<p>Zinssatz (%):';
    echo 
'<input type="text" name="zinssatz" value="';

    echo 
$_GET['zinssatz'];

    echo 
'" size="5" maxlength="5" />';
    
    if ( 
$_GET['mtl_rate_inkl_tilgung'] == "" )
    {
        if ( 
$_GET['schon_mal_abgesendet'] == "ja" )
        {
            echo 
"<p class='error'>Hinweis: Bitte Feld Rate inkl. Tilgung ausfüllen</p>";
        }
    }
    echo 
'<p>Rate inkl. Tilgung (EUR): ';
    echo 
'<input type="text" name="mtl_rate_inkl_tilgung" value="';

    echo 
$_GET['mtl_rate_inkl_tilgung'];

    echo 
'" size="9" maxlength="9" />';
    

    echo 
'<p>Verrechnung: '
    echo 
'<select name="verrechnung">    
    <option value="12">monatlich</option>
    <option value="3">vierteljährlich</option>
    <option value="2">halbjährlich</option>
    <option value="1">jährlich</option>
    </select></p>'
;

    echo 
'<input type="hidden" name="schon_mal_abgesendet" 
          value="ja" />'
;

    echo 
'<br />';
    echo 
'<input type="Submit" name="" value="Laufzeit berechnen" />';

    echo 
'</form>';

    echo 
"<p>Hinweise: nachschüssige Verrechnung, keine Berücksichtigung von Sondertilgungen</p>";
    exit;

}
else
{

        
$_darlehensbetrag str_replace(".""",$_GET["darlehensbetrag"]); // punkte löschen
        
$_darlehensbetrag str_replace(",""."$_darlehensbetrag); // komma durch punkt ersetzen

        
$_zinssatz str_replace("."""$_GET['zinssatz']); // punkte löschen
        
$_zinssatz str_replace(",""."$_zinssatz); // komma durch punkte ersetzen
        
        
$_verrechnung $_GET["verrechnung"];
        
        
$_mtl_rate_inkl_tilgung str_replace(".""",$_GET["mtl_rate_inkl_tilgung"]); // punkte löschen
        
$_mtl_rate_inkl_tilgung str_replace(",""."$_mtl_rate_inkl_tilgung); // komma durch punkte ersetzen

        
$wert1 log(($_zinssatz/100-$_mtl_rate_inkl_tilgung*$_verrechnung/$_darlehensbetrag)/
(
0-$_mtl_rate_inkl_tilgung*$_verrechnung/$_darlehensbetrag));
        
$wert2 log(1/(1+$_zinssatz/100/$_verrechnung));
        
$geslfzt $wert1/$wert2/$_verrechnung
        
        if (
$geslfzt 0
        {
            echo 
"Gesamtlaufzeit: ".round($geslfzt,2); // auf zwei nachkommastellen runden - wie ausgabe mit komma???
        

        else 
        {
            echo 
"Ihre Eingaben sind unlogisch und führen zu entsprechend unlogischen Ergebnissen";
        }

}
?>
fripon77 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 22.12.2009, 21:40  
Erfahrener Benutzer
 
Benutzerbild von md5()
 
Registriert seit: 10.12.2009
Beiträge: 122
PHP-Kenntnisse:
Anfänger
md5() zeigte ein beschämendes Verhalten in der Vergangenheit
md5() eine Nachricht über ICQ schicken
Standard

PHP-Code:
    if ( $_GET['darlehensbetrag'] == "" )
    {
        if ( 
$_GET['schon_mal_abgesendet'] == "ja" )
        {
            echo 
"<p class='error'>Hinweis: Bitte Feld Darlehensbetrag ausfüllen</p>";
        }
    } 
darlehensbetrag brauchst du nicht noch einmal uberprufen da du es schon vorher gemacht hast
md5() ist offline  
Alt 22.12.2009, 21:49  
Benutzer
 
Registriert seit: 22.11.2009
Beiträge: 78
PHP-Kenntnisse:
Anfänger
christophk befindet sich auf einem aufstrebenden Ast
Standard

Ich würde gar nicht so einen Aufwand betreiben, alle Felder einzeln zu überprüfen. Ein einfacher Hinweis "mindestens ein Feld wurde nicht ausgefüllt" sollte in diesem Fall reichen, da du ja sowieso alle brauchst und bei drei Feldern noch ein überschaubares Formular hast.
Außerdem würde ich das Formular über Post laufen lassen, da du dann kein extra hidden-Feld brauchst, sondern die REQUEST_METHOD aus dem $_SERVER-Array überprüfen kannst.

Vielleicht könnte für dich auch der Artikel Affenformular (Standardverfahren) interessant sein.

Was md5() da von sich gibt, ist nicht korrekt, da du ja jedes Feld nochmal überprüfen musst, wenn du für jedes Feld einzeln eine Fehlermeldung ausgeben möchtest.

Gruß
christophk ist offline  
Alt 22.12.2009, 21:58  
Neuer Benutzer
 
Registriert seit: 19.12.2009
Beiträge: 18
PHP-Kenntnisse:
Anfänger
fripon77 befindet sich auf einem aufstrebenden Ast
Standard

okay, danke euch. euer feedback beschäftigt mich dann schon mal wieder ein zwei tage

@christoph: wenn ich die bereits ausgefüllten felder jedoch ausgefüllt lassen will, muss ich dann die felder nicht einzeln überprüfen? --> du siehts, ich bin einsteiger...
aber im prinzip hast du schon recht: der besucher, der interesse an der berechnung hat, wird sowieso alles ausfüllen.

Geändert von fripon77 (22.12.2009 um 22:02 Uhr).
fripon77 ist offline  
Alt 23.12.2009, 14:30  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.849
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Der Code ist sehr unstrukturiert. Ein wenig PHP wechselt sich mit HTML-Teilen ab.

Versuch doch mal, zuerst mit PHP alles zu ermitteln und zu nberechnen, was du brauchst, und dann erst HTML auszugeben. Wenn du das hier mal in 6 Wochen ändern willst, suchst du dich blöd.

Nur eine allgemeine Fehlermeldung vom Stil "Sie haben irgendwas vergessen einzugeben" ist Quatsch. Wenn du schon ermittelst, was fehlst, dann kannst du das deinem Besucher auch exakt mitteilen:

PHP-Code:
$err = array();
if ( 
$_POST['feld1'] == '' $err[] = 'Feld1 nicht ausgefüllt';
if ( 
$_POST['feld2'] == '' $err[] = 'Feld2 nicht ausgefüllt';
if ( 
$_POST['feld3'] == '' $err[] = 'Feld3 nicht ausgefüllt';

if ( 
count($err) > ) {
  
// Fehler festgestellt
  
$fehler explode('<br>',err);
} else {
  
$fehler '';
}

if (
$fehler == '') {

  
// Speichern
  
include 'dankeseite.php';

} else {

  
// formular nochmal anzeigen
  
include 'formular.php';

Das ist Teil des Affenformulars.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline  
Alt 23.12.2009, 17:31  
Neuer Benutzer
 
Registriert seit: 19.12.2009
Beiträge: 18
PHP-Kenntnisse:
Anfänger
fripon77 befindet sich auf einem aufstrebenden Ast
Standard

@wolla: danke dir. aber du verwirrst mich etwas, denn ich geb doch exakt an, was fehlt...

PHP-Code:
echo "<p class='error'>Hinweis: Bitte Feld Darlehensbetrag ausfüllen</p>"
fripon77 ist offline  
Alt 24.12.2009, 10:41  
Neuer Benutzer
 
Registriert seit: 19.12.2009
Beiträge: 18
PHP-Kenntnisse:
Anfänger
fripon77 befindet sich auf einem aufstrebenden Ast
Standard

wollas kritik leuchtet mir ein. ich hab mich jetzt mal an diese vorlage gehalten und alles für mich umgeschrieben...

wie gesagt, ich bin anfänger... ich gehe davon aus, dass ich an dieser stelle meinen berechnungscode einfügen muss:

PHP-Code:
if (empty($error)) {
         
          
/*
           * Hier z.B. alle Daten in der Datenbank abspeichern und darauf hin
           * den Benutzer an eine andere Stelle weiterleiten.
           */
          
echo 'STATT ECHO MEINE BERECHNUNG HIER REIN... - ABER WIE???';
         
          
// Scriptablauf abbrechen, da alles wichtige erledigt ist
          
exit(); 
Mein Berechnungscode (siehe start-posting) funktioniert an sich fehlerfrei.

Wenn ich ihn aber an die o.g. Stelle einfüge, kommen eine Menge Fehlermeldungen:

Code:
Notice: Undefined index: darlehensbetrag in /Applications/XAMPP/xamppfiles/htdocs/xampp/rechner5.php on line 79

Notice: Undefined index: zinssatz in /Applications/XAMPP/xamppfiles/htdocs/xampp/rechner5.php on line 82

Notice: Undefined index: verrechnung in /Applications/XAMPP/xamppfiles/htdocs/xampp/rechner5.php on line 86

Notice: Undefined index: mtl_rate_inkl_tilgung in /Applications/XAMPP/xamppfiles/htdocs/xampp/rechner5.php on line 88

Warning: Division by zero in /Applications/XAMPP/xamppfiles/htdocs/xampp/rechner5.php on line 92
usw.
--> mir ist einfach nicht klar, wie ich die Berechnung RICHTIG einbinden muss? ausgelagert (include) wäre mir unrecht...
fripon77 ist offline  
Alt 24.12.2009, 11:09  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

crosspost :P
script besser machen
robo47 ist offline  
Alt 24.12.2009, 11:48  
Neuer Benutzer
 
Registriert seit: 19.12.2009
Beiträge: 18
PHP-Kenntnisse:
Anfänger
fripon77 befindet sich auf einem aufstrebenden Ast
Standard

@robo47: stimmt, mitglied md5 hatte mich darum gebeten, die frage auch in seinem forum zu stellen... können admins in meinem postfach sicher überprüfen. da frage ich mich dann schon, ob es nicht eher "böse" ist, mitglieder in andere foren zu verleiten... aber okay, ich will hier nicht gegen forenregeln verstoßen und hab den thread dort gelöscht.

wie auch immer - meine letzte frage / antwort auf walla bezieht sich mittlerweile auf eine andere problemstellung.
fripon77 ist offline  
Alt 24.12.2009, 12:04  
Erfahrener Benutzer
 
Registriert seit: 10.02.2009
Beiträge: 923
ragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Mensch
Standard

[offtopic]
Zitat:
Zitat von fripon77 Beitrag anzeigen
@robo47: stimmt, mitglied md5 hatte mich darum gebeten, die frage auch in seinem forum zu stellen... k
Lol, auch eine Möglichkeit Benutzer in ein Forum zu kriegen, wobei ich echt sagen muss, dass es nicht wirklich nötig ist, ein weiteres PHP Forum zu haben, vorallem wenn es dann noch von einem Amateur geführt wird, der 1. den Inhalt von anderen Seiten besorgt und 1:1 kopiert (ohne Quellenangabe, ist zwar laut Quelle erlaubt, aber ich finde das gehört sich nicht) und 2. keinen blossen Schimmer von php hat (siehe youtube video )
Jeder hat mal klein angefangen, aber muss man dann gleich ein Forum starten, wo sich benutzer wirklich Hilfe erwarten, aber eher nur falsche Antworten kriegen.
[/offtopic]
ragtek ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP: Formular Generator Zergling-new Tutorials 16 06.07.2010 03:14
Mehrseitiges verzweigtes Formular RobbyNaish PHP Tipps 2009 1 19.12.2009 01:51
Wert aus Textfeld in neues Formular übernehmen (kein Submit) PsychoEagle HTML, Usability und Barrierefreiheit 9 02.01.2007 14:51
[Erledigt] Formular in Formular HTML, Usability und Barrierefreiheit 4 19.10.2005 12:18
[Erledigt] PHP Formular ~~wichtig~~ PHP Tipps 2005 27 29.05.2005 19:38
[Erledigt] Im Formular user abfragen? Datenbanken 3 06.01.2005 10:51
[Erledigt] Vokabelabfrage per Formular / Besser in PHP oder DB ? PHP Tipps 2004 5 21.08.2004 20:21

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
notice undefined index affenformular, php wenn form ausgefüllt echo, im formular komma durch punkt ersetzen, php formular \ausgefüllt lassen\, mehrseitiges affenformular hilfe, php formular komma durch punkt ersetzen, php affenformular submit wird nicht berücksichtigt, echo (\<option value=\\\$jahr\\\ selected= affe, php form echo if ausrechnen, formular echo $_get undefined index, html formular punkt durch komme ersetzen, punkt durch komma bei formular ersetzen php, html php formular hinweis fehler über, php affenformular undefined index bei anzeige ], komma zu punkt in formular, $_get , komma, html formular komma durch punkt ersetzen, formular.php löschen und durch neues formular ersetzen php, php im formular punkt durch komma ersetzen, laufen fehlerfreie php scripts schneller

Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum