PHP / SQL : MySQL in Schleife

Meister_Lampe

Grünschnabel
Hallo zusammen,
bei meiner Googlesuche zur Lösung meines Problems bin ich bei einem ähnlichen Problem hier im Forum gelandet.
Leider war es bei mir nicht der gleiche Fehler. Finde ihn einfach nicht...

Beschreibung:

Ich möchte Rechnungen in einer MySQL Datenbank speichern (Nur zu Hause, nicht auf dem Server [Warum willst du das? : Weil PHP die einzige Programmierkenntnis ist wovon ich etwas habe ;) ])

Das mache ich indem ich die Grunddaten per INSERT in die Datenbank schreibe und da es 1,2,3 oder mehr verschiedene Positionen sein können dachte ich mir es wäre am einfachsten hinterher in diese Zeile mithilfe einer Schleife die Positionen einzufügen.

Code:
                  for($x=1, $x <= $_POST['anzahl_positionen'], $x++){
                    $nettopreis = $_POST['bruttopreis'.$x] / 1.19;
                    $bruttopreis = $_POST['bruttopreis'.$x];
                    $arbeit = $_POST['arbeit'.$x];
                    
                    echo $nettopreis.'<br />';
                    echo $bruttopreis.'<br />';
                    echo $arbeit.'<br />';
                    echo $x.'<br /><br />';
                    
                    
                    $sql_rechnung_add = $verbinder->prepare('UPDATE
                                                    rechnungen
                                                 SET
                                                    rechnung_position'.$x.' = :position,
                                                    rechnung_brutto'.$x.' = :brutto,
                                                    rechnung_netto'.$x.' = :netto
                                                 WHERE
                                                    rechnung_nr = :quittungsid
                                                  AND
                                                    rechnung_monat = :monat
                                                  AND
                                                    rechnung_jahr = :jahr');
                    
                    $sql_rechnung_add->bindParam(':position', $arbeit);
                    $sql_rechnung_add->bindParam(':brutto', $bruttopreis);
                    $sql_rechnung_add->bindParam(':netto', $nettopreis);
                    $sql_rechnung_add->bindParam(':quittungsid', $_POST['quittungsid']);
                    $sql_rechnung_add->bindParam(':monat', $_GET['monat']);
                    $sql_rechnung_add->bindParam(':jahr', $_GET['jahr']);                        
                    $sql_rechnung_add->execute() or DIE(mysql_error());                   
                  
                  }

Das Problem ist:
Er macht alles wie er soll... Aber nur ein mal...
(Der Primary Key der Tabelle ist "rechnung_id")


Vielen Dank im Voraus
 

Zvoni

Erfahrenes Mitglied
Und das "eine mal" wo es "korrekt" durchläuft steht danach auch alles in der Datenbank drin (mit Workbench/phpMyAdmin gecheckt?)?
 

Meister_Lampe

Grünschnabel
Ja, die Einträge sind korrekt.
Habe es immer mit zwei Positionen versucht und jetzt ein mal mit drei.

Er gibt mir komischerweise nur zwei mal die Daten aus =/
Ist mir nicht aufgefallen als ich es nur mit zwei Sätzen probiert habe.
 

Meister_Lampe

Grünschnabel
Verdammt...
Ich habe mir die Datenbank nochmal angesehen.

Er hat immer beim zweiten Satz aufgehört weil in der Tabellenstruktur die Spalte für den Bruttopreis

"recHHnung_brutto2"

hieß...

Tut mir leid deine Zeit verschwendet zu haben.

Vielen Dank für die Antwort
 

Sempervivum

Erfahrenes Mitglied
Mich wundert ja, dass gar kein Aufschrei kommt "Sollte normalisiert werden" :) In der Struktur der Tabelle ist eine feste Anzahl von Positionen definiert mit den bekannten Nachteilen: Entweder man verschenkt Positionen oder, wenn man die Anzahl knapp festlegt, man kommt in die Gefahr, dass sie nicht ausreichen.
 

Zvoni

Erfahrenes Mitglied
Semper,
hatte ich mir auch gedacht, alleine als ich die hart codiert Mehrwertsteuer gesehen habe.
Ausserdem habe ich ein Verständnis-Problem: Wieso fragt er zusätzlich zur RechnungsNr. den Monat und das Jahr ab?
Fangen seine RE-Nummern am 01.01.20XX wieder bei 1 an?
Weil eine RE-Nummer anonym hochlaufen lassen ist ein prädestinierter Primärschlüssel......
 

Meister_Lampe

Grünschnabel
Das dürfte eigentlich nicht mehr funktionieren, wenn du nicht gerade noch PHP 5.x laufen hast.
Als ich mir selbst vor ca 15 Jahren PHP beigebracht habe ging das noch ^^
Tatsächlich hat es keinen Ton gesagt.

Ich Frage das Datum ab weil es bei mir Bestandteil der Rechnungsnummer ist, die fangen bei mir jeden Monat bei 1 an.

Ich bin kein Profi, ich habe das nur mit dem Wissen gebastelt was ich mir vor langer Zeit selbst beigebracht habe.

Da es solche Software nur noch im Abzockabo gibt habe ich mir auf diesem Wege etwas gebaut um mir die Buchhaltung zu erleichtern und zu beschleunigen.

Da ich Handwerker bin brauche ich keinen anderen Mwst Satz als den Standardsatz. Deswegen steht er so da drinne.