tag:forum.selfhtml.org,2005:/self Felder dynamisch füllen wenn Ergebnis vorhanden ist – SELFHTML-Forum 2018-07-12T06:17:29Z https://forum.selfhtml.org/self/2018/jul/10/felder-dynamisch-fuellen-wenn-ergebnis-vorhanden-ist/1726370#m1726370 Meowsalot 2018-07-10T19:45:30Z 2018-07-10T19:45:30Z Felder dynamisch füllen wenn Ergebnis vorhanden ist <p>Hallo,</p> <p>ich habe ein kleines Problem wo ich nicht weiter kommen. Folgendes Formular habe ich:</p> <pre><code class="block language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>form</span> <span class="token attr-name">method</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>post<span class="token punctuation">"</span></span> <span class="token attr-name">action</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token punctuation">"</span></span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>frm<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>cnt_form_projekt<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>label</span> <span class="token attr-name">for</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>projektID<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Projekt-ID<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>label</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>projektID<span class="token punctuation">"</span></span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>projektID<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>label</span> <span class="token attr-name">for</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>name<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Name<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>label</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>name<span class="token punctuation">"</span></span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>name<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>label</span> <span class="token attr-name">for</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>vorname<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Vorname<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>label</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>vorname<span class="token punctuation">"</span></span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>vorname<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>label</span> <span class="token attr-name">for</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>email<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>E-Mail Adresse<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>label</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>email<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>email<span class="token punctuation">"</span></span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>email<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>button</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>eintragen<span class="token punctuation">"</span></span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>btn<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Speichern<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>button</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>form</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span> </code></pre> <p>In der Datenbank habe ich eine Tabelle die wie folgendermaßen ausschaut</p> <pre><code class="block language-sql"><span class="token keyword">CREATE</span> <span class="token keyword">TABLE</span> <span class="token identifier"><span class="token punctuation">`</span>inhaber<span class="token punctuation">`</span></span> <span class="token punctuation">(</span> <span class="token identifier"><span class="token punctuation">`</span>pl_id<span class="token punctuation">`</span></span> <span class="token keyword">int</span><span class="token punctuation">(</span><span class="token number">11</span><span class="token punctuation">)</span> <span class="token operator">NOT</span> <span class="token boolean">NULL</span><span class="token punctuation">,</span> <span class="token identifier"><span class="token punctuation">`</span>pl_nummer<span class="token punctuation">`</span></span> <span class="token keyword">varchar</span><span class="token punctuation">(</span><span class="token number">25</span><span class="token punctuation">)</span> <span class="token operator">NOT</span> <span class="token boolean">NULL</span><span class="token punctuation">,</span> <span class="token identifier"><span class="token punctuation">`</span>pl_name<span class="token punctuation">`</span></span> <span class="token keyword">varchar</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">)</span> <span class="token operator">NOT</span> <span class="token boolean">NULL</span><span class="token punctuation">,</span> <span class="token identifier"><span class="token punctuation">`</span>pl_vorname<span class="token punctuation">`</span></span> <span class="token keyword">varchar</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">)</span> <span class="token operator">NOT</span> <span class="token boolean">NULL</span><span class="token punctuation">,</span> <span class="token identifier"><span class="token punctuation">`</span>pl_email<span class="token punctuation">`</span></span> <span class="token keyword">varchar</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">)</span> <span class="token operator">NOT</span> <span class="token boolean">NULL</span> <span class="token punctuation">)</span> <span class="token keyword">ENGINE</span><span class="token operator">=</span>MyISAM <span class="token keyword">DEFAULT</span> <span class="token keyword">CHARSET</span><span class="token operator">=</span>latin1<span class="token punctuation">;</span> </code></pre> <p>Jetzt zu meiner Frage, wie kann ich es am einfachsten umsetzten wenn ich im ersten Feld eine Projekt-ID eintrage und es in der Datenbank ein Eintrag gibt dass die weiteren Felder automatisch ausgefüllt werden ohne dass die Seite neu geladen werden? Wir reden von ca. 10 - 25 Einträge, also nicht sonderlich viel.</p> <p>Bin für jede Hilfe dankbar.</p> <p>Bis bald!<br> Meowsalot (Bernd)</p> https://forum.selfhtml.org/self/2018/jul/10/felder-dynamisch-fuellen-wenn-ergebnis-vorhanden-ist/1726372#m1726372 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2018-07-10T20:05:18Z 2018-07-10T20:05:18Z Felder dynamisch füllen wenn Ergebnis vorhanden ist <p>@@Meowsalot</p> <p>Datanbank ist nicht mein Thema, aber <code class="language-sql"><span class="token keyword">DEFAULT</span> <span class="token keyword">CHARSET</span><span class="token operator">=</span>latin1</code>? 2018? Ernsthaft?</p> <p>LLAP </p> <div class="signature">-- <br> <em>„Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“</em> —Kurt Weidemann </div> https://forum.selfhtml.org/self/2018/jul/10/felder-dynamisch-fuellen-wenn-ergebnis-vorhanden-ist/1726373#m1726373 dedlfix 2018-07-10T20:27:31Z 2018-07-10T20:27:31Z Felder dynamisch füllen wenn Ergebnis vorhanden ist <p>Tach!</p> <blockquote> <p>Jetzt zu meiner Frage, wie kann ich es am einfachsten umsetzten wenn ich im ersten Feld eine Projekt-ID eintrage und es in der Datenbank ein Eintrag gibt dass die weiteren Felder automatisch ausgefüllt werden ohne dass die Seite neu geladen werden?</p> </blockquote> <p>Zum Beispiel so wie es in der HTTP-Welt gängig ist. Ajax-Request an den Server senden, Ergebnis in die Seite einbauen. Und serverseitig ist das auch kein Hexenwerk: Request entgegennehmen, Datenbankabfrage ausführen, Abfrageergebnis ausgeban, beispielsweise im JSON-Format. Alles keine Raketenwissenschaft.</p> <p>dedlfix.</p> https://forum.selfhtml.org/self/2018/jul/10/felder-dynamisch-fuellen-wenn-ergebnis-vorhanden-ist/1726374#m1726374 Rolf B 2018-07-10T20:30:26Z 2018-07-10T20:32:14Z Felder dynamisch füllen wenn Ergebnis vorhanden ist <p>Hallo Meowsalot,</p> <blockquote> <p>JavaScript ist einfach nicht mein Ding.</p> <ul> <li>Meowsalot, April 2018</li> </ul> </blockquote> <p>Angesichts dessen solltest Du neben das Projekt-ID Feld einen Button "ID nachschlagen" setzen, der das Formular abschickt, die fehlenden Daten ergänzt und das Formular neu aufbaut. Affenformular-plus, sozusagen. Der User gibt die ID ein, drückt TAB (kommt idealerweise auf den Suchbutton), drückt ENTER und bekommt die Projektdaten. Serverseitig KÖNNTEST Du in diesem Fall - UND NUR IN DIESEM - über das <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-autofocus" rel="nofollow noopener noreferrer">autofocus</a> Attribut erreichen, dass der Cursor bei der Rückkehr gleich auf dem nächsten sinnvollen Feld steht.</p> <p>Die JavaScript-Idee wäre, sich auf das change-Event des projektId input zu registrieren, aus dem Change-Handler einen Ajax-Call abzusetzen der ein PHP Script von Dir ruft; dieses Script gibt bspw. einen JSON-String zurück, den nimmst Du beim Success-Handler des Ajax-Calls entgegen, holst die Daten 'raus und schreibst sie in die Formularfelder. Das ist keine Raketentechnik, aber für jemanden, der sich mit JavaScript schwer tut, ist es trotzdem eine Herausforderung.</p> <p>Update: LOL - ich habe das ohne Kenntnis von Dedlfix' Beitrag geschrieben. Ist ja echt die Rakete.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - clusi </div> https://forum.selfhtml.org/self/2018/jul/10/felder-dynamisch-fuellen-wenn-ergebnis-vorhanden-ist/1726386#m1726386 pl 2018-07-11T06:34:39Z 2018-07-11T06:34:39Z Felder dynamisch füllen wenn Ergebnis vorhanden ist <p>Hallo,</p> <blockquote> <p>Jetzt zu meiner Frage, wie kann ich es am einfachsten umsetzten wenn ich im ersten Feld eine Projekt-ID eintrage und es in der Datenbank ein Eintrag gibt ..</p> </blockquote> <p>Überlege Dir ein Event was gefeuert werden soll. Das löst einen Request aus mit dem Parameternamen <code>id=</code> und dem Wert der sich als <code>encodeURIComponent</code> aus dem value des entsprechenden Eingebfeldes ergibt.</p> <blockquote> <p>dass die weiteren Felder automatisch ausgefüllt werden ohne dass die Seite neu geladen werden?</p> </blockquote> <p>Dann darf die eingetragene ID aber nur einen Record liefern. Falls das jedoch mehrere sind, musst Du dafür sorgen daß aus diesen ausgewählt werden kann.</p> <p>Ansonsten: Mit dem Request, siehe oben, geht die eingetippte ID ab zum Server und der sorgt dafür daß exakt(!) ein Record zurückkommt. Also ein Record mit allen Datenfeldern.</p> <p>Falls es zur requesteten ID keinen Solchen gibt, sollte das dann aber auch im Formular zu sehen sein. Z.b. darurch daß überall <code>undefined</code> drinsteht. Für den Anwender also sichtbar, ob ein legacy Record im formular steht oder ob er einen neuen anlegen soll.</p> <p>MfG</p> https://forum.selfhtml.org/self/2018/jul/10/felder-dynamisch-fuellen-wenn-ergebnis-vorhanden-ist/1726417#m1726417 Felix Riesterer http://felix-riesterer.de 2018-07-12T05:17:19Z 2018-07-12T05:17:19Z Felder dynamisch füllen wenn Ergebnis vorhanden ist <p>Lieber Meowsalot,</p> <blockquote> <pre><code class="block language-sql"> <span class="token identifier"><span class="token punctuation">`</span>pl_name<span class="token punctuation">`</span></span> <span class="token keyword">varchar</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">)</span> <span class="token operator">NOT</span> <span class="token boolean">NULL</span><span class="token punctuation">,</span> <span class="token identifier"><span class="token punctuation">`</span>pl_vorname<span class="token punctuation">`</span></span> <span class="token keyword">varchar</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">)</span> <span class="token operator">NOT</span> <span class="token boolean">NULL</span><span class="token punctuation">,</span> </code></pre> </blockquote> <p>das genügt nicht! Nicht nur die 100 Zeichen sind meines Erachtens etwas knapp, auch mehrteilige Vornamen mit abgegrenztem Rufnamen und Namenszusätze können so nicht korrekt erfasst werden. Vielleicht ist das für Deinen Anwendungsfall egal, aber irgendwie empfinde ich das als "am falschen Ende gespart".</p> <p>Liebe Grüße,</p> <p>Felix Riesterer.</p> https://forum.selfhtml.org/self/2018/jul/10/felder-dynamisch-fuellen-wenn-ergebnis-vorhanden-ist/1726418#m1726418 Christian Kruse https://wwwtech.de/about 2018-07-12T05:19:15Z 2018-07-12T05:19:15Z Felder dynamisch füllen wenn Ergebnis vorhanden ist <p>Hallo Felix,</p> <blockquote> <blockquote> <pre><code class="block language-sql"> <span class="token identifier"><span class="token punctuation">`</span>pl_name<span class="token punctuation">`</span></span> <span class="token keyword">varchar</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">)</span> <span class="token operator">NOT</span> <span class="token boolean">NULL</span><span class="token punctuation">,</span> <span class="token identifier"><span class="token punctuation">`</span>pl_vorname<span class="token punctuation">`</span></span> <span class="token keyword">varchar</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">)</span> <span class="token operator">NOT</span> <span class="token boolean">NULL</span><span class="token punctuation">,</span> </code></pre> </blockquote> <p>das genügt nicht! Nicht nur die 100 Zeichen sind meines Erachtens etwas knapp, auch mehrteilige Vornamen mit abgegrenztem Rufnamen und Namenszusätze können so nicht korrekt erfasst werden. Vielleicht ist das für Deinen Anwendungsfall egal, aber irgendwie empfinde ich das als "am falschen Ende gespart".</p> </blockquote> <p>Wenn man es genau nimmt, ist die Unterteilung in Vor- und Nachname schon ein Problem. Nicht jeder Mensch hat einen europäischen Namen.</p> <p>LG,<br> CK</p> <div class="signature">-- <br> <a href="https://wwwtech.de/about" rel="noopener noreferrer">https://wwwtech.de/about</a> </div> https://forum.selfhtml.org/self/2018/jul/10/felder-dynamisch-fuellen-wenn-ergebnis-vorhanden-ist/1726422#m1726422 Meowsalot 2018-07-12T05:59:25Z 2018-07-12T05:59:25Z Felder dynamisch füllen wenn Ergebnis vorhanden ist <p>Hallo Felix,</p> <p>wie viele Zeichen würdest du denn für den Vornamen und Nachnamen einplanen?</p> <p>Bis bald!<br> Meowsalot (Bernd)</p> https://forum.selfhtml.org/self/2018/jul/10/felder-dynamisch-fuellen-wenn-ergebnis-vorhanden-ist/1726419#m1726419 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2018-07-12T05:34:17Z 2018-07-12T05:34:17Z Felder dynamisch füllen wenn Ergebnis vorhanden ist <p>@@Christian Kruse</p> <blockquote> <p>Wenn man es genau nimmt, ist die Unterteilung in Vor- und Nachname schon ein Problem. Nicht jeder Mensch hat einen europäischen Namen.</p> </blockquote> <p>☞ <a href="https://www.w3.org/International/questions/qa-personal-names" rel="nofollow noopener noreferrer">Personennamen aus aller Welt</a></p> <p>LLAP </p> <div class="signature">-- <br> <em>„Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“</em> —Kurt Weidemann </div> https://forum.selfhtml.org/self/2018/jul/10/felder-dynamisch-fuellen-wenn-ergebnis-vorhanden-ist/1726423#m1726423 Meowsalot 2018-07-12T06:00:24Z 2018-07-12T06:00:24Z Felder dynamisch füllen wenn Ergebnis vorhanden ist <p>Hallo Christian,</p> <blockquote> <p>Wenn man es genau nimmt, ist die Unterteilung in Vor- und Nachname schon ein Problem. Nicht jeder Mensch hat einen europäischen Namen.</p> </blockquote> <p>würdest du alles in ein Feld speichern?</p> <p>Bis bald!<br> Meowsalot (Bernd)</p> https://forum.selfhtml.org/self/2018/jul/10/felder-dynamisch-fuellen-wenn-ergebnis-vorhanden-ist/1726425#m1726425 Felix Riesterer http://felix-riesterer.de 2018-07-12T06:06:40Z 2018-07-12T06:07:03Z Felder dynamisch füllen wenn Ergebnis vorhanden ist <p>Lieber Meowsalot,</p> <blockquote> <p>wie viele Zeichen würdest du denn für den Vornamen und Nachnamen einplanen?</p> </blockquote> <p><code class="language-sql"><span class="token keyword">varchar</span><span class="token punctuation">(</span><span class="token number">200</span><span class="token punctuation">)</span></code></p> <p>Liebe Grüße,</p> <p>Felix Riesterer.</p> https://forum.selfhtml.org/self/2018/jul/10/felder-dynamisch-fuellen-wenn-ergebnis-vorhanden-ist/1726426#m1726426 dedlfix 2018-07-12T06:09:46Z 2018-07-12T06:09:46Z Felder dynamisch füllen wenn Ergebnis vorhanden ist <p>Tach!</p> <blockquote> <p>wie viele Zeichen würdest du denn für den Vornamen und Nachnamen einplanen?</p> </blockquote> <p>Die Felder sind VARCHAR, mit VAR wie in variabel. Die nehmen nur soviel Speicherplatz ein, wie die Inhalte wirklich lang sind. Du kannst da also ruhig mit größeren Zahlen operieren. Zudem sollte bei der Beantwortung der Frage immer der Anwendungsfall berücksichtigt werden. Müssen internationale Namen gespeichert werden, in denen komplette Lebensgeschichten der Vorfahren enthalten sind? Oder geht es um einen abgeschlossene Datenbestand, bei dem man also die Länge bereits kennt und sie deshalb nicht übermäßig groß werden kann? Müssen die Namen für beispielsweise behördliche Zwecke vollständig vorliegen oder reicht eine für den täglichen Gebrauch verwendete Kurzform? Diese Art Fragen musst du dem Auftragsgeber stellen.</p> <p>dedlfix.</p> https://forum.selfhtml.org/self/2018/jul/10/felder-dynamisch-fuellen-wenn-ergebnis-vorhanden-ist/1726427#m1726427 Christian Kruse https://wwwtech.de/about 2018-07-12T06:17:29Z 2018-07-12T06:17:29Z Felder dynamisch füllen wenn Ergebnis vorhanden ist <p>Hallo Meowsalot,</p> <blockquote> <blockquote> <p>Wenn man es genau nimmt, ist die Unterteilung in Vor- und Nachname schon ein Problem. Nicht jeder Mensch hat einen europäischen Namen.</p> </blockquote> <p>würdest du alles in ein Feld speichern?</p> </blockquote> <p>Hängt davon ab[tm]. Schau dir am besten die Seite an, die Gunnar verlinkt hat, die stellt auch ein paar valide Strategien vor. Alles in einem Feld zu speichern ist aber in der Tat eine Strategie, die eigentlich alles abdeckt. Musst du nur noch dafür sorgen, dass <a href="https://www.wired.com/2015/11/null/" rel="nofollow noopener noreferrer">Menschen wie dieser arme Kerl</a> angesprochen werden können </p> <p>LG,<br> CK</p> <div class="signature">-- <br> <a href="https://wwwtech.de/about" rel="noopener noreferrer">https://wwwtech.de/about</a> </div>