Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Formular dynamisch erweitern

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Formular dynamisch erweitern

    Hallo,
    ich hoffe und glaube Ihr könnt mir weiterhelfen, bzw. habt einen Tipp für mich.

    Ich möchte ein Formular basteln, mit dem recht einfach Artikel und deren Preis in die Artikeltabelle geschrieben werden können.

    Es soll so aussehen:

    Feld "Barcode" --> einfach Code mit einem Barcodescanner eingelesen
    Feld "Verkäufer" --> soll automatisch die Zeichen 2-4 von Barcode erhalten
    Feld "Artikel" --> soll automatisch die Zeichen 6-8 von Barcode erhalten
    Feld "Preis" --> hier wird der Preis eingetippt

    So nun soll mit der Entertaste der Artikel gespeichert werden und automatisch das Formular um eine weitere Eingabe erweitert werden, um einen neuen ARtikel zu erfassen.

    Ich habe zwar gegoogelt aber eigentlich immer nur was von AJAX gelesen. Aber leider kenne ich mich überhaupt nicht damit aus.

    Kann ich sowas mit PHP lösen und wenn ja wie??

    DANKE!

    Nur so zur Info: Das soll für unseren KiGa sein, der einen Kindertrödel veranstaltet und dazu wäre diese Erfassung der Artikel. In einem nachfolgenden Formular soll dann über den Barcode automatisch der Preis und der Gesamtpreis der gescannten Artikel berechnet werden. Bisher wurde dies mühevoll über Artikellisten und Kopfrechnen gelöst.

    DANKE!

  • #2
    Was genau ist nun die Frage? Kann ich da nicht herauslesen! Funktioniert denn das mit dem Scanner? Oder wird die Nummer per Hand eingetragen?
    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    Kommentar


    • #3
      @nikosch: Momentan wird noch per Hand eingegeben, der Scanner ist aber bestellt. In einem normalen Textfeld, das mit der Tastatur beschrieben wird, sollte auch ein Scanner funktionieren, da sehe ich kein Problem. Meine Frage war, ob es mittels php möglich ist, das Formular zu erweitern, nachdem der Preis für einen Artikel eingegeben wurde und z.b. die Entertaste gedrückt wurde. Ich kann halt nicht sagen, wieviele Artikel gescannt werden müssen, aber es soll für die Anwender schnell gehen, soll heißen, Artikel scannen - Preis eingeben und nächster Artikel usw.

      Beim "Kassen"-Formular sollen dann halt die zu erwerbenden Artikel gescannt werden, Preis aus der DB geholt und zusammengerechnet werden.

      Kommentar


      • #4
        Ja, das geht. Mit dem Scanner bin ich nicht sicher. Keine AHnung, was die so für Browserplugins mitbringen.
        [COLOR="#F5F5FF"]--[/COLOR]
        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
        [COLOR="#F5F5FF"]
        --[/COLOR]

        Kommentar


        • #5
          Könntest Du mir auch einen Hinweis zur Umsetzung geben? DANKE

          Beim Kassen-Formular müsste es doch über einen einfachen Warenkorb funktionieren, oder geht es vielleicht noch einfacher?

          Kommentar


          • #6
            Ich hoffe, ich habe das Problem richtig erfasst.
            Dann könntest Du einfach gucken, wenn das Formular abgeschickt wurde, ob das Formular leer ist. Ist es das nicht, wird ein weiteres Formular angezeigt; sonst wird die Auswertung gemacht.
            Um dann zur Auswertung zu gelangen, muss das Feld dann einfach leer gelassen werden. Die eingetippten Artikel müsstest Du dann zwischenspeichern (Session, o.ä.)
            Natürlich lässt sich das über Javascript noch eleganter machen. Dazu müsstest Du Dir mal die Funktion SELFHTML: JavaScript / Objektreferenz / node ansehen. Damit kannst Du dann auf Knopfdruck ein weiteres Formular hinzufügen. Beachten musst Du dabei aber dann, dass du die Formulardaten übergibst, damit alle Daten erhalten bleiben, d.h. statt "name='xy'" müsstest Du dann "name='xy[]'" schreiben.

            Hoffe, ich konnte erstmal weiterhelfen.
            Gruß

            Kommentar


            • #7
              Leinberger - du solltest deine Frage ein wenig konkretisieren. Es ist nicht klar, wo genau das Problem liegt, das du nicht gelöst bekommst.

              Aber falls es dir hilft: Ja, man kann das durchaus mit Ajax machen, aber man muss nicht. Auch ohne Ajax würde das ganze, sofern es nicht vollkommen idiotisch programmiert ist, schnell genug laufen um nicht negativ aufzufallen.
              Die Variante ohne Ajax ist sicherlich weitaus einfach, da das erstellen von HTML-Elementen über Javascript meiner Meinung nach immer eine unschöne Sache ist, aber das ist wohl Geschmackssache.

              Du solltest aber wie gesagt mal ein wenig genauer beschreiben, was du davon selber schaffst und wo das eigentliche Problem sitzt.

              Kommentar


              • #8
                Hallo

                Ich weiß ja nicht genau, ob das ganze über eine Website läuft oder ob du das nur lokal benötigst, für das Abrechenen bei einem Flohmarkt. Sollte es nur lokal laufen, dann wäre Excel hierfür eine sehr gute Alternative, weil die Eingabe iVm. Scanner und Abrechnung (Kasse) einfach und vor allem auch schnell funktioniert. (Installation von XAMPP, Einrichtung der DB, Programmierung der Formulare, ... ) Das wäre mir zu viel Aufwand für einen KiGa-Flohmarkt. Zumal das Erstellen der Barcode-Labels auch über Excel möglich ist.
                Sollte eine Umsetzung trotzdem anders nicht möglich sein, dann hoffe ich einen entsprechend guten Barcode-Scanner ausgewählt zu haben. Ich habe selbst Erfahrung damit. Wie nikosch meinte mit Browserplugins... das wird nicht benötigt! ... Das ganze läuft wie normale Eingaben mit der Tastatur, manche werden sogar an der Tastaturschnittstelle angeschlossen. Andere wiederum laufen über USB oder andere Schnittstellen. Wichtig ist nur, dass sich der Scanner konfigurieren lässt, denn bei den meisten Barcodelesern wird nach dem eigentlichen Scanvorgang ein Signal gesendet, das der Entertaste entspricht und somit das Formular (vorzeitig) absendet. Könnte man aber auch durch andere Gestaltung der Formulare umgehen.

                Nichtsdestotrotz: Ich würde es gut durchdenken!

                Gruß, php2go

                Kommentar


                • #9
                  Hallo php2go,
                  danke für Deine Ausführungen. Leider kann ich in Excel keine Programmierung, zwar bekomme ich Formeln und Berechnungen hin, so dass eine Art Kasse schon möglich wäre, jedoch nicht im Zusammenhang mit bereits erfassten Artikeln. Das kann ich schneller mit php. Das mit dem Scanner ist mir schon klar, jedoch kann man die Scanner programmieren, so dass z.B. statt eines Entersignals ein Tab kommt, usw. Denke und hoffe, dass ich das schon hinbekomme.

                  Zum anderen hat die Lösung über eine Website den Vorteil, dass sich Verkäufer hier anmelden, Ihre Artikel selbst eingeben
                  und sogar ihre Barcodelabes selber drucken können, somit könnte dem KiGa-Personal und uns vom Elternbeirat wieder Arbeit abgenommen werden.

                  Aber danke, bin immer dankbar für hilfreiche Antworten.

                  Kommentar


                  • #10
                    Also auch ich verstehe nicht ganz wo dein Problem liegt.
                    Formular:
                    Preis: wird von hand eingegeben
                    Barcode: wird über Scanner eingegeben.
                    Das mit dem Tab und Enter bei der Barcodescannereinstellung ist richtig.
                    Barcodescanner haben "normal" als default ENTER drinen.
                    Der wird je nach Model über USB oder Tastaturport eingesteckt.
                    Du brauchst kein Ajax und kein Javascript oder sonst was. Das geht alles einfach mit php

                    Du brauchst auch nur (so weit du uns das mitgeteilt hast) Preis und Barcode Feld für das Formular.
                    Nach dem Absenden kannst du mit php den Barcode von Zeichen X bis y und von Y bis Z trennen. So erhälst du die Barcodeteile die du brauchst.

                    Hab neulich beim stöbern auch eine php-barcode-klasse entdeckt. Hab natürlich keine Ahnung ob die wirklich geht. Zudem musst du, und das ist wirklich wichtig, auf die ART des Barcodes Achten. Da gibt es ja einige unterschiede. Auch der Scanner muss auf den richtigen Type einegestellt sein. Sonst geht alles nach hinten los.

                    Das Auslesen ist genau so einfach. einfach ein Feld im Formular -> barcode über Scanner eingeben -> SELECT * FROM barcodetabelle WHERE Barcode = $eingabe_von barcode.

                    Um automatisch ein neues formuarl nach eingabe / suche zu erhalten verwende 1. meta-refresh / php header und 2. bei weiterleitung ID von Eintrag in URL übergeben. So kannst du dann auf der neuen Seite die ausgabe anzeigen so wie gleich ein neues Feld für weiter eingaben / abfragen machen.

                    TIPP:
                    header("Location: ".$_SERVER['HTTP_REFERER']."&id=".$id_von_abfrage." etc")

                    <meta http-equiv="refresh" content="8; url='.$_SERVER['HTTP_REFERER'].'">';

                    also ich hoffe ich konnte dir damit weiter helfen.
                    Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

                    Kommentar


                    • #11
                      Zitat von SteiniKeule
                      PHP-Code:
                      header("Location: ".$_SERVER['HTTP_REFERER']."&id=".$id_von_abfrage." etc"
                      Das ist immer eine schlechte Idee, denn der Referrer wird nicht immer mitgeschickt, lässt sich deaktivieren und auch manipulieren.

                      Kommentar


                      • #12
                        Zitat von php2go Beitrag anzeigen
                        Das ist immer eine schlechte Idee, denn der Referrer wird nicht immer mitgeschickt, lässt sich deaktivieren und auch manipulieren.
                        Hiermit wollte ich ihm lediglich das Ziel darstellen. Da ich ja nicht weis wie seine seiten aufgebaut sind, kann ich ihm ja keine richtigen links erstellen. Mit dem ref. wollte ich ihm nur sagen, dass er zurück auf die erste Seite sollte.
                        Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

                        Kommentar


                        • #13
                          @SteiniKeule: Ich verstehe deine Intention! Nur leider kann nicht jeder unterscheiden, welcher Code übernommen werden kann, und was abgeändert werden sollte Deshalb lieber darauf hinweisen!

                          Worin bestehen jetzt noch Fragen, Leinberger?

                          Kommentar


                          • #14
                            Hallo,
                            danke für Eure Erklärungen. Natürlich versuche ich, diese umzusetzen.
                            Hier habe ich ein Problem, das mir in die DB nichts eingetragen wird. Leider wird mir kein Fehler angezeigt.
                            Bestimmt nur eine Kleinigkeit, aber ich seh es nicht. DANKE.

                            PHP-Code:
                            <?php
                            session_start
                            ();
                            error_reporting(E_ALL);
                            $insert $_POST;
                            if (isset (
                            $insert['vknr'])) $barcode1 'V'.$insert['vknr'];
                            if (isset (
                            $insert['artnr'])) $barcode2 'A'.$insert['artnr'];
                            if (isset (
                            $insert['barcode'])) $barcode $insert['barcode']; else $barcode $barcode1.$barcode2;
                            if (isset (
                            $insert['vknr'])) $vknr $insert['vknr']; else $vknr substr($barcode,1,3);
                            if (isset (
                            $insert['artnr'])) $artnr $insert['artnr']; else $artnr substr($barcode,5,3);
                            $preis   $insert['preis'];
                            $eingangsstempel date("d.m.Y | H:i");
                             
                             include(
                            "config.inc.php");
                             
                            $db mysql_connect($host$user$pass);
                             
                            $sqlab "insert into Artikel";
                             
                            $sqlab .= "(barcode, verkäufernr, artikelnr, preis, eingangsstempel) values ";
                             
                            $sqlab .= "('$barcode', '$vknr', '$artnr', '$preis', '$eingangsstempel')";
                             
                            mysql_db_query($dbase$sqlab);
                                
                            $num mysql_affected_rows();
                             
                            ?>
                            In dem Formular wird der Barcode eingescannt und in VKNR und ARTNR aufgeteilt. Ist kein Barcode vorhanden, wird im Formular die ARTNR und VKNR eingegeben und der Barcode daraus generiert.

                            Ich muss mich korrigieren, es wird was in die DB geschrieben. Aber das Barcodefeld ist der Schlüssel der Tabelle. Es werden aber immer nur die übergebenen Werte geschrieben, nciht das zusammengesetzte.


                            Oh Gott, if isset soll doch nur abfragen, ob die Variable überhaupt existiert, jedoch nicht, ob diese gefüllt ist, oder!?!?!?!?!

                            Code geändert:
                            PHP-Code:
                            <?php
                            session_start
                            ();
                            error_reporting(E_ALL);
                            $insert $_POST;
                            if (
                            $insert['vknr'] != ''$barcode1 'V'.$insert['vknr'];
                            if (
                            $insert['artnr'] != ''$barcode2 'A'.$insert['artnr'];
                            if (
                            $insert['barcode'] != '') { $barcode $insert['barcode']; } else { $barcode $barcode1.$barcode2;}
                            if (
                            $insert['vknr'] != '') { $vknr $insert['vknr']; } else { $vknr substr($barcode,1,3); }
                            if (
                            $insert['artnr'] != '') { $artnr $insert['artnr']; } else { $artnr substr($barcode,5,3); }
                            $preis $insert['preis'];
                            $preis eregi_replace("[,]""."$preis);
                            $preis sprintf('%.2f'$preis);

                            $eingangsstempel date("Y.m.d H:i:s");

                             include(
                            "config.inc.php");
                             
                            $db mysql_connect($host$user$pass);
                             
                            $sqlab "insert into Artikel";
                             
                            $sqlab .= "(barcode, verkäufernr, artikelnr, preis, eingangsstempel) values ";
                             
                            $sqlab .= "('$barcode', '$vknr', '$artnr', '$preis', '$eingangsstempel')";
                             
                            mysql_db_query($dbase$sqlab);
                                
                            $num mysql_affected_rows();
                            if (
                            mysql_affected_rows() == 1)
                                {
                                    
                            header ("Location: ../artikel.php?erfassung=1"); 
                                }
                                else
                                {
                                    
                            header ("Location: ../artikel.php?erfassungsfehler=1"); 
                                }
                             
                            ?>
                            und schon funktioniert es!

                            Hatte wohl einen heftigen Denkfehler

                            Kommentar


                            • #15
                              Hallo,
                              ich hätte noch eine Frage, bzw. bitte Euch mir bei der Lösung zu helfen.

                              Ich zähle die Verkäufernummer automatisch hoch:
                              PHP-Code:
                              function getVerkäufernr()
                               {
                               include(
                              'config.inc.php');
                               
                              $db mysql_connect($host$user$pass);
                               
                              $res mysql_db_query($dbase"select * from Verkäufer order by verkäufernr DESC LIMIT 1");
                               
                              $num mysql_num_rows($res);
                               
                               for (
                              $i=0$i<$num$i++)
                                {
                                
                              $nummer  mysql_result($res$i"verkäufernr");
                                }
                               if (
                              $nummer == 0)
                                { 
                              $nummer 1; }
                               else
                                { 
                              $nummer $nummer 1; }
                               return 
                              $nummer;
                               } 
                              Jetzt kann es ja sein, dass inzwischen Verkäufer gelöscht wurden. Gerne würde ich aber die vergebene Nummer wieder verwenden. Wie kann ich dies am schnellsten umsetzen? DANKE.

                              Kommentar

                              Lädt...
                              X