HTML Input Value als String in Datenbank schreiben

  • VB.NET

Es gibt 27 Antworten in diesem Thema. Der letzte Beitrag () ist von SteveAc.

    HTML Input Value als String in Datenbank schreiben

    Hallo liebe Forumgemeinde,



    ich habe folgendes Problem bei dem ich nicht weiterkomm. Ich habe mir für private Zwecke eine Datenbank erstellt in der CDs mit einer Nummer gespeichert sind. Da mein Vater und mein Bruder diese Datenbank mitnutzen sollen, Sie sich aber nicht mit Datenbanksoftware auskennen, wollte ich ein Formular im intranet erstellen mit zwei HTML Inputs in dem erstens der Name der Software und in dem anderen die CD-Nummer eingetragen werden. Wenn dies geschehen ist und der Button "Abschicken" betätigt wurde sollen die Angaben erst in zwei Strings gespeichert werden und dann in die vorhandene Datenbank geschrieben werde.



    Meine Fragen lauten nun:

    1. Wie bekomme ich die Eingaben der HTML-Inputs in einen bzw. zwei Strings?

    2. Wie schreibe ich die Strings in die vorhandene Datenbank?



    Ich weiß sind totale anfänger Fragen. Aber mit VB arbeite ich erst seit ein paar Wochen.



    Ich bedanke mich schon einmal im Vorraus für eure Hilfe. ;)



    LG Steve
    Wenn es eine SQL Datenbank ist die du nutzt, kannst du dein PC als Server einrichten und via PHP die Werte in die DB eintragen.


    db.php:

    PHP-Quellcode

    1. <?PHP
    2. if($_POST) {
    3. // Datenbankverbindung aufbauen
    4. mysql_connect("localhost", "db_username", "db_password") or die (mysql_error());
    5. // Datenbank wählen
    6. mysql_select_db("db_name") or die (mysql_error());
    7. // Übergebene Variablen ermitteln
    8. $software = mysql_escape_string($_POST['software']);
    9. $cdnum = mysql_escape_string($_POST['cdnum']);
    10. // Wurden alle Felder ausgefüllt?
    11. if(!empty($software) AND !empty($cdnum)) {
    12. // In Datenbank eintragen
    13. mysql_query("INSERT INTO `tabelle` (`software`, `cdnum`) VALUES ('$software', '$cdnum')");
    14. }
    15. }
    16. ?>
    17. <html>
    18. <head>
    19. <title>Datenbank</title>
    20. </head>
    21. <body>
    22. <form method="post" action="db.php">
    23. <label for="software"> <input type="text" name="software" id="software" /><br />
    24. <label for="cdnum"> <input type="text" name="cdnum" id="cdnum" /><br />
    25. <input type="submit" value="Eintragen" />
    26. </form>
    27. </body>
    28. </html>


    Edit: Aber du bräuchtest ja auch noch eine Ausgabe der Software oder eine Suche, oder sehe ich das falsch?
    Nunja wenn mit VB machen willst bleibt nur eine Webanwendung zu schreiben mit ASP.NET aber damit kenne ich mich nun nicht aus. Aber das HTML Formular bleibt gleich, nur statt dem PHP Code musste dann dein VB Code einsetzten.

    Aber in Google findest du genug zum Thema ASP hier mal ein gutes Tutorial, zwar in englisch aber das sollte nicht das Problem sein

    w3schools.com/ASPNET/default.asp

    Was du brauchst ist

    Dim software As String = Request.Form("software")
    Dim cdnum As Integer = Request.Form("cdnum")

    ansonsten ganz normal connection zu deiner DB aufbauen!
    Ja ich komme aus dem Webbereich, deswegen denke ich immer erst an PHP *g* weil ichs zum teil auch einfacher finde und mir ebenso ein Datenbank gemacht habe die ich einmal übers Web ansprechen kann und auch unter VB verwende!
    Ja benutzte auch lieber PHP, da ich es shcon lange verwende.

    Komme aber nun wieder nciht weiter:

    1. Wollte ich überprüfen ob die Eingaben nun als String vorliegen und sie mir ausgeben lassen. Da ist aber nichts, was ausgegeben wird. ?(

    2. Wie binde ich eine Datenbank an die auf einem externen Server im LAN gespeichert ist?

    Hier mal der Code: Die Datenbankanbindung ist noch auskommentiert, da Problem 1 noch nicht läuft und ich weiß auch das da nicht das Select Command hingehört für meine Aufgabe^^

    VB.NET-Quellcode

    1. <%@ Page Language="VB" Debug="true" %><%@ Import Namespace="System.Data.OleDb" %>
    2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    3. <script runat="server">
    4. Sub listeAktualisierung(ByVal sender As Object, ByVal e As System.EventArgs)
    5. Dim software As String = Request.Form("CdName")
    6. Dim cdnum As String = Request.Form("CdNr")
    7. Dim AusgabeCdDaten As String
    8. AusgabeCdDaten = software + cdnum
    9. ptag.InnerHtml = AusgabeCdDaten
    10. 'Dim dbconn
    11. 'dbconn=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
    12. 'data source=" & server.mappath("northwind.mdb"))
    13. 'dbconn.Open()
    14. 'sql = "SELECT * FROM customers"
    15. 'dbcomm = New OleDbCommand(sql, dbconn)
    16. End Sub
    17. End Sub
    18. </script><html xmlns="http://www.w3.org/1999/xhtml">
    19. <head runat="server"><title></title>
    20. </head>
    21. <body>
    22. <form id="form1" runat="server">
    23. <div align="center">
    24. <input type="text" id="CdName" /> CD Name<br />
    25. <input type="text" id="CdNr" /> CD Nummer<br />
    26. <br /><input type="submit" id="submit" value="Liste aktualisieren" runat="server" onserverclick="listeAktualisierung" />
    27. <input type="reset" id="reset" value="Felder lschen" runat="server" />
    28. </div>
    29. <p runat="server" id="ptag"></p></form>
    30. </body></html>




    EDIT: Ich weiß normalerweise sollte man nicht den ganzen Code posten aber vllt hab ich iwo anders noch einen Fehler!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SteveAc“ ()

    Ok Problem 1 konnte ich gerade selber lösen. Jetzt bräuchte ich nur noch Hilfe mit der Datenbank!

    EDIT Hier der CodeSchnipsel. Muss dazu sagen hab noch nie ne DB-Conneciton über vb gemacht. also nicht lachen xD

    VB.NET-Quellcode

    1. Dim dbconn
    2. dbconn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;")
    3. data source =" & server.mappath("northwind.mdb"))
    4. dbconn.Open()
    5. sql = "SELECT * FROM customers"
    6. dbcomm = New OleDbCommand(sql, dbconn)dbconn.Close()


    Gebe ich nach dem "&" im data source die IP und den Pfad an?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SteveAc“ ()

    Ok, ok.... hab mal weiter dran getüfelt und denke ich bin ganz kurz vor dem Durchbruch. Leider Taucht bei dbconn.Open() die Fehlermeldung " Kein zulässiger Dateiname.
    Beschreibung: Unbehandelte Ausnahme beim Ausführen der aktuellen Webanforderung. Überprüfen Sie die Stapelüberwachung, um weitere Informationen über diesen Fehler anzuzeigen und festzustellen, wo der Fehler im Code verursacht wurde.

    Ausnahmedetails: System.Data.OleDb.OleDbException: Kein zulässiger Dateiname
    " auf.



    Jemand ne Idee? Bin überfragt und google half auch nicht viel. nachfolgend der Code zur db:

    VB.NET-Quellcode

    1. Dim connStr As String
    2. connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + " Data Source=" + "'\\10.152.104.21\mssql_db'" + "'CD_liste_Data.mdb'" + ";"
    3. Dim dbconndbconn = New OleDbConnection(connStr)
    4. dbconn.Open()
    5. Dim sql As String
    6. sql = "SELECT * FROM CdListe_tb"
    7. Dim dbcomm
    8. dbcomm = New OleDbCommand(sql, dbconn)
    9. dbconn.Close()
    Also zum einen, kannst du deinen ConnectionString auch in eins schreiben und musst nicht immer + machen, das nimmt man nur wenn man dynamisch eine Verbindung aufbauen möchte und dort dann statt String Variablen einsetzt.

    Zum anderen hast du dbconn auch nicht definiert. Sondenr bei dir handelt es sich sicher um einen Schreibfehler

    Dim dbconndbconn

    Also müsste dein Code so aussehn:

    VB.NET-Quellcode

    1. Dim connStr As String
    2. connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source='\\10.152.104.21\mssql_db\CD_liste_Data.mdb';"
    3. Dim dbconn = New OleDbConnection(connStr)
    4. dbconn.Open()
    5. Dim sql As String
    6. sql = "SELECT * FROM CdListe_tb"
    7. Dim dbcomm
    8. dbcomm = New OleDbCommand(sql, dbconn)
    9. dbconn.Close()
    Wow, Tausend dank. jetzt sagt er mir allerdings das die Datei schon verwendet wird und nicht verwendet werden kann. ?(

    Alle fenster die nur im geringsten was mit der DB zu tun haben könnte sind geschlossen. ich hab mal wieder kA ?(
    Moin z'ammen,

    sry für meine späte Antwort aber ich wollte gestern die Sonne noch in meinem Urlaub genießen :P :D

    Nein der befehl wird nur einmal ausgeführt und auch wieder geschlossen.

    Ich füge nochmal den VB Code bei vllt sieht jemand den Fehler:

    VB.NET-Quellcode

    1. Sub listeAktualisierung(ByVal sender As Object, ByVal e As System.EventArgs)
    2. Dim software As Stringsoftware = Request.Form("CdName")
    3. Dim cdnum As Stringcdnum = Request.Form("CdNr")
    4. Dim AusgabeCdDaten As String
    5. AusgabeCdDaten = software + " " + cdnum + " erfolgreich hinzugefgt."
    6. ptag.InnerHtml = AusgabeCdDaten
    7. Dim connStr As String
    8. connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source='\\10.152.104.21\mssql_db\CD_liste_Data.mdf';"
    9. Dim dbconn As Object = New OleDbConnection(connStr)
    10. dbconn.Open()
    11. Dim sql As String
    12. sql = "SELECT * FROM CdListe_tb"
    13. Dim dbcomm As Objectdbcomm = New OleDbCommand(sql, dbconn)
    14. dbconn.Close()
    15. End Sub

    Danke das ihr euch diesem Noobie Thema annimmt^^
    Sehe ich das richtig das die IP die IP deines Rechners ist?
    Ich glaube nämlich eher daran, das nicht von deinem Script drauf zugegriffen wird sondern dort wo die DB liegt. Also deinem PC oder im Netz.

    Wenn es so sein sollte, das die auf deinem PC liegt und du sie z.B. nun offen hast um dort weitere CDs einzutragen wird man über das HTML Frontend nicht mehr drauf zugreifen könne, da du sie bereits geöffnet hast, wird das Script es nicht mehr können.

    Es wäre besser wenn du es mit einem DB Server machst. Weil so hat nur der Server die DB geöffnet und Connections zum Server kann man beliebig viele machen. Jedoch wie das mit Access funktioniert weiß ich nicht, ich nutze wie gesagt MySQL weils einfacher zu Handlen ist, sowohl aus dem Web als auch unter VB, wobei hier der Code der gleiche ist, nur eben bei der Connection wird nicht das DB File angegeben sondern der Host!
    Nein deine Ansicht ist flasch. Die IP ist nicht die meines Rechners, sondern die des Win2003 Server auf dem die SQL-Datenbank liegt. Das Problem, das du beschrieben hast war mir von vornerein bewusst. Und da ich hier der Computer Guru im Haus bin hab ich vor einiger Zeit diesen Server eingerichtet um Beschreibungen für Software zu erstellen die alle hier im Haus nutzen.
    Also anscheint schon, wenn du nicht drauf zugreifen kannst. Also ich würde dir raten die DB auch in den SQL Service einzubinden, sofern sie noch nicht ist und dann auch via Host drauf zugreifen und nicht direkt!
    Also im Grunde nur die IP des Servers angeben.