$eel$orger: Frage und Fehler bei PHP 5

Hallo Leute!!  Ich habe mir ein PHP-Lernbuch gekauft und fand ein Kalkulationsskript. Da ich BWL im 1. Semester studiere und mich früher mit dem Thema befasst habe, fand ich die Idee ganz witzig, das mal zu machen. Naja, leichter gesagt als getan. Kopieren wollte ich nicht, also schrieb ich es ab, um zu lernen. Mir sind Fehler unterlaufen, die ich nicht finden kann(zum Verständnis habe ich die anderen Skripte mit angehängt plus Fehlermeldungen). Zudem wollte ich wissen, was das erste Skript bewirkt(die sensiblen Sachen habe ich entfernt :-) ):

  1. Skript auswahl.php: <html> <head> </head> <body>

<?php      $db=mysql_connect();      mysql_select_db();      $anfrage="SELECT * FROM TabelleTest";      $ergebnis=mysql_query($anfrage); ?> <form action="test1.php" method="post">  <select name="auswahl" size="5">     <?php    while($row=mysql_fetch_assoc($ergebnis)){;    echo "<option>".$row[artikel]."</option>";     }     ?>     </select> <input type="submit" name="submitter" value="Absenden"> </form> </body> </html>

Was bewirkt dieses mysql_fetch_assoc?

2.Skript Forumlareingabe.php

<html> <head></head> <body>

<?php mysql_connect(); mysql_select_db();

$vorhSkript=$HTTP_POST_VARS['auswahl'];

$anfrage="SELECT * FROM Tabelletest WHERE artikel LIKE '$vorhSkript'"; $ergebnis1=mysql_query($anfrage4); $ergebnis2=mysql_fetch_row($ergebnis1); ?>

<form action="berechnung.php" method="post">

<input type="text" name="listeneinkaufspreis" value="<?php print("$ergebnis2[2]") ?>"/> € Listeneinkaufspreis<br> <input type="text" name="liefererrabatt" /> % Liefererrabatt<br> <input type="text" name="liefererskonto" /> % Liefererskonto<br> <input type="text" name="bezugskosten" /> € Bezugskosten<br> <input type="text" name="handlungskostenzuschlag" /> % Handlungskostenzuschlag<br> <input type="text" name="gewinnzuschlag" /> % Gewinnzuschlag<br> <input type="text" name="kundenskonto" /> % Kundenskonto<br> <input type="text" name="kundenrabatt" /> % Kundenrabatt<br> <input type="text" name="umsatzsteuer" value="19"/> % Umsatzsteuer<br> <input type="submit" name="submitter" value="Kalkulation berechnen"/>

</form>

</body> </html>

  1. Skript: <form action="vorhanden.php" method="post"> <?php $listeneinkaufspreis= $HTTP_POST_VARS['listeneinkaufspreis']; $liefererrabatt= $HTTP_POST_VARS['liefererrabatt']; $liefererskonto= $HTTP_POST_VARS['liefererskonto']; $bezugskosten= $HTTP_POST_VARS['bezugskosten']; $handlungskostenzuschlag= $HTTP_POST_VARS['handlungskostenzuschlag']; $gewinnzuschlag= $HTTP_POST_VARS['gewinnzuschlag']; $kundenskonto= $HTTP_POST_VARS['kundenskonto']; $kundenrabatt= $HTTP_POST_VARS['kundenrabatt']; $umsatzsteuer=$HTTP_POST_VARS ['umsatzsteuer'];

$lrabatt= ("%01.2f", ($listeneinkaufspreis*$liefererrabatt)/100);         $zieleinkaufspreis= ("%01.2f", ($listeneinkaufspreis-$lrabatt)); $lskonto= ("%01.2f", ($zieleinkaufspreis*$liefererskonto)/100);         $bareinkaufspreis= ("%01.2f", ($zieleinkaufspreis-$vlskonto)); $bezugsk= ("%01.2f", ($bezugskosten));         $bezugspreis= ("%01.2f", ($bareinkaufspreis+$bezugsk)); $hkosten= ("%01.2f", ($bezugspreis*$handlungskostenzuschlag)/100);         $selbstkostenpreis= ("%01.2f", ($bezugspreis+$hkosten)); $gzuschlag= ("%01.2f", ($selbstkostenpreis*$gewinnzuschlag)/100);         $barverkaufspreis= ("%01.2f", ($selbstkostenpreis+$gzuschlag)); $kskonto= ("%01.2f", (($barverkaufspreis/(100-$kundenskonto))$kundenskonto));         $rechnungspreis= ("%01.2f", ($barverkaufspreis+$kskonto)); $krabatt= ("%01.2f", ($rechnungspreis/(100-$kundenrabatt))$kundenrabatt);         $angebotspreis= ("%01.2f", ($rechnungspreis+$krabatt)); $ust= ("%01.2f", ($angebotspreis*19)/100); $umsatzsteuer= ("%01.2f", ($angebotspreis+$ust));

print("Listeneinkaufspreis: $listeneinkaufspreis €<br><br>"); print("Zieleinkaufspreis: $zieleinkaufspreis €<br><br>"); print("Bareinkaufspreis: $bareinkaufspreis €<br><br>"); print("Bezugspreis: $bezugspreis €<br><br>"); print("Selbstkostenpreis: $selbstkostenpreis €<br><br>"); print("Barverkaufspreis: $barverkaufspreis €<br><br>"); print("Rechnungspreis: $rechnungspreis €<br><br>"); print("Angebotspreis: $angebotspreis €<br><br>"); print("Umsatzsteuer: $umsatzsteuer €<br><br>"); ?>

<input type="hidden" name="listeneinkaufspreis" value="<?php print("$listeneinkaufspreis") ?>"> <input type="hidden" name="lrabatt" value="<?php print("$lrabatt") ?>"> <input type="hidden" name="zieleinkaufspreis" value="<?php print("$zieleinkaufspreis") ?>"> <input type="hidden" name="lskonto" value="<?php print("$lskonto") ?>"> <input type="hidden" name="bareinkaufspreis" value="<?php print("$bareinkaufspreis") ?>"> <input type="hidden" name="bezugsk" value="<?php print("bezugsk") ?>"> <input type="hidden" name="bezugspreis" value="<?php print("$bezugspreis") ?>"> <input type="hidden" name="hkosten" value="<?php print("$hkosten") ?>"> <input type="hidden" name="selbstkostenpreis" value="<?php print("$selbstkostenpreis") ?>"> <input type="hidden" name="gzuschlag" value="<?php print("$gzuschlag") ?>"> <input type="hidden" name="barverkaufspreis" value="<?php print("$barverkaufspreis") ?>"> <input type="hidden" name="kskonto" value="<?php print("$kskonto") ?>"> <input type="hidden" name="rechnungspreis" value="<?php print("$rechnungspreis") ?>"> <input type="hidden" name="krabatt" value="<?php print("$krabatt") ?>"> <input type="hidden" name="angebotspreis" value="<?php print("$angebotspreis") ?>"> <input type="hidden" name="ust" value="<?php print("$ust") ?>"> <input type="hidden" name="umsatzsteuer" value="<?php print("$umsatzsteuer") ?>"> <input type="submit" name="submitter" value="PDF drucken"> </form>

  1. Skript: <?php $listeneinkaufspreis= $HTTP_POST_VARS['listeneinkaufspreis']; $lrabatt=$HTTP_POST_VARS['lrabatt']; $zieleinkaufspreis=$HTTP_POST_VARS['zieleinkaufspreis']; $lskonto=$HTTP_POST_VARS['lskonto']; $bareinkaufspreis=$HTTP_POST_VARS['bareinkaufspreis']; $bezugsk=$HTTP_POST_VARS['bezugsk']; $bezugspreis=$HTTP_POST_VARS['bezugspreis']; $hkosten=$HTTP_POST_VARS['hkosten']; $selbstkostenpreis=$HTTP_POST_VARS['selbstkostenpreis']; $gzuschlag=$HTTP_POST_VARS['gzuschlag']; $barverkaufspreis=$HTTP_POST_VARS['barverkaufspreis']; $kskonto=$HTTP_POST_VARS['kskonto']; $rechnungspreis=$HTTP_POST_VARS['rechnungspreis']; $krabatt=$HTTP_POST_VARS['krabatt']; $angebotspreis=$HTTP_POST_VARS['angebotspreis']; $ust=$HTTP_POST_VARS['ust']; $umsatzsteuer=$HTTP_POST_VARS['umsatzsteuer']; define('FPDF_FONTPATH' , 'font/'); require(); $pdf=new FPDF (); $pdf->Open (); $pdf->SetLeftMargin(20); $pdf->AddPage ();

$pdf->SetX(1000); $pdf->SetFont('Arial','BIU',20); $pdf->Write(10, "Ihre Kalkulation"); $pdf->Ln(20); $pdf->SetFont('Arial','',12); $pdf->Write(10, "Listeneinkaufspreis: $listeneinkaufspreis"); $pdf->Ln(10);

$pdf->SetFont('Arial','',12); $pdf->Write(10, "- Liefererrabatt: $lrabatt"); $pdf->Ln(10);

$pdf->SetFont('Arial','',12); $pdf->Write(10, "Zieleinkaufspreis: $zieleinkaufspreis"); $pdf->Ln(10);

$pdf->SetFont('Arial','',12); $pdf->Write(10,  "- Liefererskonto: $lskonto"); $pdf->Ln(10);

$pdf->SetFont('Arial','',12); $pdf->Write(4,  "Bareinkaufspreis: $bareinkaufspreis"); $pdf->Ln(10);

$pdf->SetFont('Arial','',12); $pdf->Write(10, "+Bezugskosten $bezugsk"); $pdf->Ln(10);

$pdf->SetFont('Arial','',12); $pdf->Write(10, "Bezugspreis: $bezugspreis"); $pdf->Ln(10);

$pdf->SetFont('Arial','',12); $pdf->Write(10, "+ Handlungskosten: $hkosten"); $pdf->Ln(10);

$pdf->SetFont('Arial','',12); $pdf->Write(10, "Selbstkostenpreis: $selbstkostenpreis"); $pdf->Ln(10);

$pdf->SetFont('Arial','',12); $pdf->Write(10, "+ Gewinn: $gzuschlag"); $pdf->Ln(10);

$pdf->SetFont('Arial','',12); $pdf->Write(10, "Barverkaufspreis: $barverkaufspreis"); $pdf->Ln(10);

$pdf->SetFont('Arial','',12); $pdf->Write(10, "+Kundenskonto: $kskonto"); $pdf->Ln(10);

$pdf->SetFont('Arial','',12); $pdf->Write(10, "Rechnungspreis: $rechnungspreis"); $pdf->Ln(10);

$pdf->SetFont('Arial','',12); $pdf->Write(10, "+Kundenrabatt: $krabatt"); $pdf->Ln(10);

$pdf->SetFont('Arial','',12); $pdf->Write(10, "Angebotspreis: $angebotspreis"); $pdf->Ln(10);

$pdf->SetFont('Arial','', 12); $pdf->Write(10, "+Umsatzsteuer: $ust"); $pdf->Ln(10); $pdf->SetFont('Arial','', 12); $pdf->Write(10, "Preis inkl. Umsatzsteuer: $umsatzsteuer")

Beim Vierten Skript kommt dann ein Fehler der besagt, dass in der über 1000sten Zeile ein Fehler ist. kann mir jmd. sagen, wo der Fehler ist. Ich übersehe den immer und finde ihn nicht. Ich hab alles vom Server geschmissen, weil ich den nur geliehen hatte. Wenn mein eigener steht, werde ich die exakte Fehlermeldung nachreichen. Der Server sollte jetzt kommen, aber es war Pfingsten von daher…

Ich schaue ab und an rein und warte auf die ersten Antworten. Vielen Dank im Voraus

Viele Grüße

$eel$orger

Ps.: Tut mir leid für doofe Variablennamen oder unsicheren Code, aber ich bin ja noch Anfänger. Vielleicht habe ich einfach zu hoch angefangen.

  1. Hi,

    Was bewirkt dieses mysql_fetch_assoc?

    Nachlesen: http://www.php.net/manual/de/function.mysql-fetch-assoc.php

    $vorhSkript=$HTTP_POST_VARS['auswahl'];

    $HTTP_OST_VARS ist veraltet, $_POST ist der aktuelle Weg, um auf POST-Parameter zuzugreifen.

    $anfrage="SELECT * FROM Tabelletest WHERE artikel LIKE '$vorhSkript'";

    Informiere dich über das Stichwort SQL Injection, und was dagegen zu tun ist.

    <input type="text" name="listeneinkaufspreis" value="<?php print("$ergebnis2[2]") ?>

    $ergebnis2[2] hier in Anführungszeichen zu setzen, ist unnötiger Unfug.

    $lrabatt= ("%01.2f", ($listeneinkaufspreis*$liefererrabatt)/100);

    Das entbehrt jeglicher Logik, und dürfte nur zu einem Syntaxfehler führen.

    Falls das ein Aufruf der Funktion sprintf werden sollte - dann solltest du den Namen der Funktion auch vor den Klammern notieren.

    Beim Vierten Skript kommt dann ein Fehler der besagt, dass in der über 1000sten Zeile ein Fehler ist. kann mir jmd. sagen, wo der Fehler ist.

    Wenn du zu einem solchen Problem hier Hilfe haben willst, dann ist es erst mal deine Aufgabe, nicht von irgendeinem ominösen Fehler zu schwafeln, sondern die *exakte* Fehlermeldung zu nennen.
    Und auch die betreffende Stelle im Code zu zeigen - denn 1000 Zeilen sind das, was du gepostet hast, sicher nicht.

    Wenn mein eigener steht, werde ich die exakte Fehlermeldung nachreichen.

    Na toll - warum postest du dann jetzt schon, wenn du noch nicht mal alle relevanten Informationen zum Problem vorlegen kannst?

    Richte dir zum Testen einen lokalen Webserver mit PHP und MySQL ein - Stichwort XAMPP.

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
  2. Hallo,

    Ich habe mir ein PHP-Lernbuch gekauft und fand ein Kalkulationsskript.

    bitte entsorge dieses PHP-"Lehrbuch" umweltgerecht im Papiercontainer. Dort wird es mehr nutzen als anderswo.

    Skripte, die sowas enthalten:

    $vorhSkript=$HTTP_POST_VARS['auswahl'];

    [...]

    $anfrage="SELECT * FROM Tabelletest WHERE artikel LIKE '$vorhSkript'";

    sind auf dem Stand von PHP3 oder vielleicht nocht PHP 4.1. Seit der Zeit hat sich viel getan, auch in Sicherheitsfragen, siehe die Anmerkungen von Chris.

    und statt vielen versteckten Formularfeldern wie

    <input type="hidden" name="listeneinkaufspreis" value="<?php print("$listeneinkaufspreis") ?>">
    <input type="hidden" name="lrabatt" value="<?php print("$lrabatt") ?>">

    möchtest Du vermutlich Sessions nutzen.

    Freundliche Grüße

    Vinzenz