MySQL Daten via PHP ausgeben und in ListView ausgeben

  • VB.NET
  • .NET 4.5

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    MySQL Daten via PHP ausgeben und in ListView ausgeben

    Hallo,

    ich möchte mir gerne bestimmte Werte von einem PHP Formular übergeben lassen. Hierfür habe ich eine Abfrage an die Datenbank erstellt die mir den Wert gibt. Nun stellt sich mir die Frage, wie es am klügsten ist das ganze in ein Listview übertragen zu können. Der String der gesplittet und aufgeteilt werden soll sieht wie folgt aus

    VB.NET-Quellcode

    1. Coca Cola 0.3l^0.5^3.5^2020-06-14 15:24:13#Coca Cola 0.3l^0.5^3.5^2020-06-14 15:25:35#


    Nachdem das Sonderzeichen # folgt soll eine neue Zeile angefangen werden um erneut Daten nach dem # anzeigen zu lassen.

    Hat da eventuell jemand einen Tipp für mich wie ich das ganze umsetzen könnte ?
    Du nimmst also diesen String her und teilst ihn mittels .Split("#"c) in die einzelnen Datenzeilen und dann wahrscheinlich danach jede Datenzeile nochmal mit .Split("^"c"). Und dann schiebst Du die einzelnen Daten(pakete) in ein ListView DGV (ja, das war ein Verbesserungsvorschlag). Ok, soweit klar. Aber: Was war jetzt die Frage?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Hallo und vielen Dank für deine Antwort @VaporiZed,

    ich kann mir aktuell nicht Vorstellen wie das ganze gelingen soll da mir die Erfahrung dabei fehlt.
    Gibt es Codebeispiele die ich eventuell nicht finde in denen ich mir das ganze ein wenig abschauen kann um dies umzusetzen ?

    Mir ist aktuell nur bekannt wie ich einen String Splite und wiedergebe, allerdings nicht wie ich einen String 2 x Splite.

    Mit besten Grüßen
    Du hast nen String.
    Wenn Du ihn splittest, erhältst Du ein String-Array. Also ein Array, was aus z.B. 20 Strings besteht. Jeden dieser Strings splittest Du wieder. Dann erhältst Du wieder mehrere Strings. So what?
    vb-paradise-Suche nach Split oder einfach mal auf der MSDN-Seite schauen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Ich glaube ich kappiere das ganze nicht so wirklich. Aktuell sieht mein Code wie folgt aus

    VB.NET-Quellcode

    1. Dim parts() = webbrowser1.DocumentText.Split({"#"}, StringSplitOptions.None)
    2. For i = 1 To parts.Length - 1
    3. Dim Array1() = parts(i).Split({"^"}, StringSplitOptions.None)
    4. ListView1.Items.Add(New ListViewItem(New String() {Array1(i), Array1(i + 1), Array1(i + 2)}))
    5. Next
    Das splitten kannst Du vereinfachen:
    webbrowser1.DocumentText.Split({"#"}, StringSplitOptions.None)
    ->
    webbrowser1.DocumentText.Split("#"c)
    Aber Gegenfrage: Klappt's? Sieht es so aus, wie Du willst?
    Wenn ja: Was ist jetzt noch unklar?
    Wenn nein: Was passt nicht?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Ich habe das ganze nun wie folgt bearbeitet

    VB.NET-Quellcode

    1. Dim parts() = webbrowser1.DocumentText.Split("#"c)
    2. For i = 0 To parts.Length - 1
    3. Dim Array1() = parts(i).Split("^"c)
    4. ListView1.Items.Add(New ListViewItem(New String() {Array1(i), Array1(i + 1), Array1(i + 2), Array1(i + 3)}))
    5. Next


    Wenn ich das ganze ausführe, bekomme ich folgende Fehlermeldung

    VB.NET-Quellcode

    1. Der Index war außerhalb des Arraybereichs.
    An welcher Stelle genau? Stichwort: richtiges Debuggen
    Ich tippe mal darauf, dass es in Zeile#4 zum Problem kommt, wenn eine Datenzeile nicht genügend Einzeldaten hat. Der Code in Z#4 setzt voraus, dass es mindestens 4 Einzeldaten pro Datenzeile gibt. Aber da du das nirgends überprüfst, dass es so ist, kommt es bei mangelnden/fehlerhaften Daten zum Absturz.
    Noch mehr Spekulatius: Wenn am Ende des ganzen PHP-Strings ein # steht, ist rechts neben dem # für das Programm auch ein Datensatz: nämlich ein leerer. Das ließe sich durch eine Überprüfung abfangen oder durch das hier verhindern:

    VB.NET-Quellcode

    1. Dim parts() = webbrowser1.DocumentText.Split({"#"}, StringSplitOptions.RemoveEmptyEntries)

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Hallo und lieben dank für die Mühe. Ich habe das Sonderzeichen nun mal zu einem , ersetzt und einen eigenen Integer hinzugefügt.

    Sieht aktuell wie folgt aus


    VB.NET-Quellcode

    1. Dim parts() = webbrowser1.DocumentText.Split({"^"}, StringSplitOptions.RemoveEmptyEntries)
    2. Dim Auslesewert As Decimal = 0
    3. For i = 1 To parts.Length / 4
    4. Dim myLabel As Button = CType(Me.Controls("GButton" & i), Button)
    5. ListView1.Items.Add(New ListViewItem(New String() {parts(Auslesewert), parts(Auslesewert + 1), parts(Auslesewert + 2), parts(Auslesewert + 3)}))
    6. Auslesewert += 4
    7. Next


    Tut aktuell seinen Zweck oder würde man mir davon eher abraten ?
    Ich würde abraten.
    • Änderung von ListView -> DGV
    • Was soll das mit dem MyLabel? Laut gezeigtem Code brauchst Du es nicht, zum anderen ist es kein Label, sondern ein Button
    • Dieser Auslesewert ist doch eine Verschlimmbesserung ggü. der vorher vorhandenen inneren For-Schleife.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

    VaporiZed schrieb:

    Ich würde abraten.
    • Was soll das mit dem MyLabel? Laut gezeigtem Code brauchst Du es nicht, zum anderen ist es kein Label, sondern ein Button


    Stimmt.

    Auch mit der weiteren Funktion

    VB.NET-Quellcode

    1. Dim parts() = webbrowser1.DocumentText.Split({"#"}, StringSplitOptions.RemoveEmptyEntries)


    schmeißt er mich immer aus dem Arrayberich

    Wie gesagt: Dann schreib Prüfcode, der testet, ob in der For-Schleife dann parts(i).Length >= 4 ist. Wenn nicht, soll z.B. ne MessageBox kommen, dass der Datensatz an Stelle i fehlerhaft ist und dann ein Continue For ausgeführt werden soll. Versuch das mal in Code umzusetzen und poste Dein Ergebnis.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.