Verbindung zu einer MySQL-Datenbank via PHP-Skript

    • VB.NET

    Es gibt 37 Antworten in diesem Thema. Der letzte Beitrag () ist von T1g0r.

      Verbindung zu einer MySQL-Datenbank via PHP-Skript

      Hallo,

      ich habe mich heute mal dran gesetzt ein Tutorial zuerstellen, mit dessen Hilfe man via PHP-Skript auf eine MySQL-Datenbank zugreifen kann.
      Hierzu sind Grundkenntnisse in der Programmierung von PHP und VB.Net von Vorteil.

      Dieses Tutorial erklärt Schritt für Schritt den Aufbau des Codes und worauf zu achten ist.

      Vorausgesetzt ist eine Datenbank (Spalten können unten entnommen werden)
      Zuerst benötigen wir eine weitere Datei:

      [Beta]HttpPostRequest (Danke an Dodo)

      Nun erstellen wir eine Form. Auf dieser müssen folgende Elemente vorhanden sein:
      txtName
      txtNachname
      txtAnrede
      txtStraße
      txtNr
      cmdSelect
      cmdInsert
      lsvHaupt

      Zuerst müssen wir eine Klasse erstellen, mit der wir den Zugriff auf die Datenbank regeln.
      Diese nennen wir cls_Datenbankzugriff.

      In dieser setzen wir zu Beginn die Imports:

      VB.NET-Quellcode

      1. Imports HttpPostRequestLib.Net

      Danach die eigentliche Funktion:

      VB.NET-Quellcode

      1. Public Class cls_Datenbankzugriff
      2. ''' <summary>
      3. ''' Verbindet zu einer MySQL-Datenbank und gibt die angeforderten Daten zurück.
      4. ''' </summary>
      5. ''' <param name="vPostCollection">Erforderlich. Die Parameter welche an das PHP-Script geschickt werden.</param>
      6. ''' <param name="File">Erforderlich. Die Datei auf welcher der Befehl ausgeführt werden soll.</param>
      7. ''' <param name="Fehlerausgabe">Optional. Gibt an, ob die Fehlerausgabe Aktiviert ist.</param>
      8. ''' <returns>Gibt den Rückgabewert des PHP-Scripts zurück.</returns>
      9. ''' <remarks></remarks>
      10. Public Function Zugriff(ByVal vPostCollection As PostCollection, ByVal File As String, Optional ByVal Fehlerausgabe As Boolean = True)
      11. Try
      12. Dim myrequest As New HTTPPostRequest
      13. Dim Ergebnis As String = myrequest.Create(IO.Path.Combine("http://www.DeineSeite.de/DeinProgramm", File), vPostCollection)
      14. Return Ergebnis
      15. Catch ex As Exception
      16. If Fehlerausgabe = True Then 'Wenn Fehlerausgabe aktiv, den Fehler Ausgeben
      17. MessageBox.Show("Folgender Fehler ist aufgetreten: " & vbNewLine & ex.Message, "Fehler!", MessageBoxButtons.OK, MessageBoxIcon.Error)
      18. End If
      19. Return "Verbindungsfehler"
      20. End Try
      21. End Function
      22. End Class

      Im Parameter vPostCollection wird die PostCollection angegeben, welche die Daten enthält, die wird zur Datenbank schicken möchten. Dazu später mehr.
      Der Parameter File gibt die Datei an, in welcher die SQL-Abfrage auf dem Server stattfindet.
      Der letze Parameter Fehlerausgabe wird genutzt um die Fehlerausgabe zu aktivieren.

      In dieser Klasse muss auch der Link zu dem Ordner angegeben werden, in welchem das PHP-Skript liegt (In diesem Fall "http://www.DeineSeite.de/DeinProgramm").

      Als nächstes müssen wir eine Liste erstellen, in der die Rückgabewert geschrieben werden:
      Die machen wir in einer Klasse:

      VB.NET-Quellcode

      1. 'Die Klasse cls_ExtentedList:
      2. Public Class cls_ExtentedList
      3. 'Die einzelnen Daten-Spalten
      4. Public ID As Integer
      5. Public Name As String
      6. Public Nachname As String
      7. Public Anrede As String
      8. Public Straße As String
      9. Public Nr As Integer
      10. ''' <summary>
      11. ''' Gibt die angegebenen Daten zurück, um diese in die Liste einzufügen
      12. ''' </summary>
      13. ''' <returns></returns>
      14. ''' <remarks></remarks>
      15. Public Overrides Function ToString() As String
      16. Return ID & " - " & Name & " - " & Nachname & " - " & Anrede & " - " & Straße & " - " & Nr
      17. End Function
      18. End Class


      Nun muss auf der Form eine Liste erzeugt werden, welche auf die obrige Klasse zugreift:

      VB.NET-Quellcode

      1. Public vListe As New List(Of cls_ExtentedList) 'Liste mit den Daten aus der Datenbank


      Der nächste Schritt besteht darin, den Aufruf zur Datenbank zu starten. Hierzu gehen wir in unsere Form und in das cmdSelect_Click-Event.
      Hier muss die Verbindung zur Klasse cls_Datenbankzugriff hergestellt werden:

      VB.NET-Quellcode

      1. 'Select ausführen
      2. 'Verbindung definieren
      3. Dim Verbindung As cls_Datenbankzugriff
      4. Verbindung = New cls_Datenbankzugriff

      Danach muss die PostCollection definiert werden.
      In dieser werden die Übergabeparameter zum PHP-Skript übergeben:

      VB.NET-Quellcode

      1. Dim myCollection As New PostCollection
      2. 'Parameter für das PHP-Script
      3. myCollection.Add("SQLQuery", "select_all")

      Den genauen Ablauf sieht man im Skript.
      Nun kann die Verbindung zur Datenbank aufgebaut werden:

      VB.NET-Quellcode

      1. 'Verbindung aufbauen und Daten holen/übergeben
      2. Dim Rückgabewert As String = Verbindung.Zugriff(myCollection, "Abfrage.php", False)


      Logischerweise benötigen wird hierzu auch das PHP-Skript:
      Dazu benötigen wir 3 Dateien.
      Abfrage.php - Hier werden die eigentlichen SQL-Befehle ausgeführt
      Connection_inc.php - Hier werden die Verbindungsdaten zur Datenbank gespeichert
      Function_inc.php

      Zur Connection_inc.php:

      PHP-Quellcode

      1. <?php
      2. header('content-type: text/html; charset=utf-8');
      3. //Datenbankdaten angeben
      4. mysql_connect("Host","Benutzer", "Passwort"); //Zugangsdaten angeben (Host, Benutzer, Passwort)
      5. mysql_select_db("Datenbank"); // Datenbank angeben
      6. ?>


      Zur Function_inc.php:

      PHP-Quellcode

      1. <?php
      2. //Funktion zum Abfragen ob ein Fehler aufgetreten ist
      3. function dbAbfrage($abfrage)
      4. {
      5. $ergebnis = mysql_query($abfrage);
      6. if(!$ergebnis) //Ist ein Fehler aufgetreten?
      7. {
      8. echo mysql_error(); //Den Fehler ausgeben
      9. }
      10. return $ergebnis;
      11. }
      12. ?>


      Zur Abfrage.php:
      Zuerst werden die beiden oben genannten Dateien importiert.
      Danach wird via Switch der Parameter "SQLQuery" abgefragt.
      Jenachdem welchen Wert dieser Parameter hat, wird ein anderer Befehl ausgeführt. (Hier Select und Insert)
      Hier hat der Parameter "SQLQuery" den Wert "select_all"

      PHP-Quellcode

      1. <?php
      2. //ini_set("display_errors", false);
      3. include("Connection_inc.php");
      4. include("Function_inc.php");
      5. //SQL-Abfrage wählen
      6. switch ($_POST['SQLQuery'])
      7. {
      8. case "select_all": //Alle Einträge holen
      9. $abfrage = "SELECT * FROM Tabelle";
      10. $ergebnis = dbAbfrage($abfrage);
      11. if($ergebnis == FALSE) //Ist ein Fehler aufgetreten?
      12. {
      13. echo mysql_error(); //Den Fehler ausgeben
      14. }
      15. elseif (is_resource($ergebnis)) //SQL-Befehl ist SELECT...
      16. {
      17. if (mysql_num_rows($ergebnis) == 0)
      18. {
      19. echo "Keine passenden Einträge vorhanden."; //Wenn keine Zeile vorhanden, 0 zurückgeben
      20. }
      21. else
      22. {
      23. while($row = mysql_fetch_assoc($ergebnis)) //Jede Reihe durchlaufen
      24. {
      25. echo (implode("ΛΜΝ", $row)) . "ΡΣΤ"; //hier wird das Array $row implodiert mit , als seperator - ΡΣΤ wird zur Zeilentrennung, ΛΜΝ wird zur Spaltentrennung genutzt
      26. }
      27. }
      28. }
      29. break;
      30. case "insert": //Einträge eintragen
      31. $abfrage = "INSERT INTO Tabelle (name, nachname, anrede, strasse, nr)
      32. VALUES
      33. ('" . mysql_real_escape_string($_POST['name']) . "',
      34. '" . mysql_real_escape_string($_POST['nachname']) . "',
      35. '" . mysql_real_escape_string($_POST['anrede']) . "',
      36. '" . mysql_real_escape_string($_POST['strasse']) . "',
      37. '" . mysql_real_escape_string($_POST['nr']) . "')";
      38. if (dbAbfrage($abfrage))
      39. {
      40. echo "Eintrag erfolgreich eingetragen.";
      41. }
      42. else
      43. {
      44. echo "Eintrag nicht eingetragen.";
      45. }
      46. break;
      47. }
      48. ?>


      Wenn wir nun alles speichern und hochladen haben können wir dies schonmal testen.
      Jedoch werden wir feststellen, das es noch nicht so funktioniert wie wir es möchten.
      Die Daten werden nicht in die ListView übergeben.
      Dies machen wir nun.

      VB.NET-Quellcode

      1. If Rückgabewert = "Verbindungsfehler" Then 'Ist ein Verbindungsfehler aufgetreten
      2. 'Nichts machen, da die Meldung schon vom Verbinden angezeigt wird
      3. ElseIf Rückgabewert = "Keine passenden Einträge vorhanden." Then 'Keine Einträge vorhanden
      4. MessageBox.Show("Keine passenden Einträge vorhanden.")
      5. Else
      6. 'Zeilen und Spalten auflösen und in vListe einfügen
      7. Call Splitten(Rückgabewert, vListe, 0, 2, 3, 1, 4, 5)
      8. 'Hier muss die Reihenfolge festgelegt werden,
      9. 'in welcher die Spalten vom PHP-Script zurückgegeben werden.
      10. 'In ListView einfügen
      11. For i As Integer = 0 To vListe.Count - 1
      12. lsvHaupt.Items.Add(New ListViewItem(New String() {vListe(i).ID, vListe(i).Name, vListe(i).Nachname, vListe(i).Anrede, vListe(i).Straße, vListe(i).Nr}))
      13. Next
      14. End If

      Es wird Abgefragt, ob Fehler bei der Verbindung aufgetreten sind.
      Sollten keine Fehler aufgetreten sein, werden die Daten in die ListView geschrieben.
      Jedoch müssen wir die zurückgegebenen Daten zuerst getrennt werden, da wir diese als kompletten String zurück bekommen.
      Das heist wird müssen Zeilen und Spalten trennen.
      Die geschieht in der Prozedur Splitten:

      VB.NET-Quellcode

      1. ''' <summary>
      2. ''' Teilt einzelne Spalten und Zeile auf und fügt diese einer Liste hinzu.
      3. ''' </summary>
      4. ''' <param name="Source">Der String der gesplittet werden soll.</param>
      5. ''' <param name="Liste">Die cls_ExtendetList in der die Spalten gespeichert werden sollen.</param>
      6. ''' <param name="Spalte_ID">Gibt den Index der Spalte ID an.</param>
      7. ''' <param name="Spalte_Name">Gibt den Index der Spalte Titel an.</param>
      8. ''' <param name="Spalte_Nachname">Gibt den Index der Spalte Beschreibung an.</param>
      9. ''' <param name="Spalte_Anrede">Gibt den Index der Spalte Code an.</param>
      10. ''' <param name="Spalte_Straße">Gibt den Index der Spalte Sprache an.</param>
      11. ''' <param name="Spalte_Nr">Gibt den Index der Spalte Anhang an.</param>
      12. ''' <remarks></remarks>
      13. <STAThread()> _
      14. Public Sub Splitten(ByVal Source As String, ByVal Liste As List(Of cls_ExtentedList), _
      15. Optional ByVal Spalte_ID As Integer = -1, _
      16. Optional ByVal Spalte_Name As Integer = -1, _
      17. Optional ByVal Spalte_Nachname As Integer = -1, _
      18. Optional ByVal Spalte_Anrede As Integer = -1, _
      19. Optional ByVal Spalte_Straße As Integer = -1, _
      20. Optional ByVal Spalte_Nr As Integer = -1)
      21. Liste.Clear()
      22. 'Die Zeilen teilen
      23. Dim vZeile As String()
      24. vZeile = Split(Source, "ΡΣΤ")
      25. 'Die Spalten teilen
      26. For i As Integer = 0 To vZeile.Count - 2
      27. Dim vSpalte As String()
      28. vSpalte = Split(vZeile(i), "ΛΜΝ")
      29. Dim Eintrag As cls_ExtentedList
      30. Eintrag = New cls_ExtentedList
      31. If Not Spalte_ID = -1 Then 'Wenn die Spalte ID zugewiesen wurde...
      32. Eintrag.ID = vSpalte(Spalte_ID)
      33. End If
      34. If Not Spalte_Name = -1 Then 'Wenn die Spalte Titel zugewiesen wurde...
      35. Eintrag.Name = (vSpalte(Spalte_Name))
      36. End If
      37. If Not Spalte_Nachname = -1 Then 'Wenn die Spalte Nachname zugewiesen wurde...
      38. Eintrag.Nachname = (vSpalte(Spalte_Nachname))
      39. End If
      40. If Not Spalte_Anrede = -1 Then 'Wenn die Spalte Anrede zugewiesen wurde...
      41. Eintrag.Anrede = (vSpalte(Spalte_Anrede))
      42. End If
      43. If Not Spalte_Straße = -1 Then 'Wenn die Spalte Straße zugewiesen wurde...
      44. Eintrag.Straße = vSpalte(Spalte_Straße)
      45. End If
      46. If Not Spalte_Nr = -1 Then 'Wenn die Spalte Nr zugewiesen wurde...
      47. Eintrag.Nr = vSpalte(Spalte_Nr)
      48. End If
      49. Liste.Add(Eintrag) 'Werte in Liste einfügen
      50. Next
      51. End Sub

      Wie im Code oben bereits beschrieben, muss hier Reihenfolge der Zurückgegebenen Spalten beachtet werden. Wie oben gezeigt, wird ID in die erste, Name in 2, Nachname in 3 Spalte usw der Liste geschrieben: "Call Splitten(Rückgabewert, vListe, 0, 2, 3, 1, 4, 5)"
      Wird bei einem Parameter nichts angegeben, wird diese Spalte nicht in die Liste übernommen.
      Danach wird in die ListView geschrieben.
      Somit kann es nochmal getestet werden.
      Wurde alles richtig gemacht, sollte es funktionieren und alle Daten der Datenbank anzeigen.

      Beim Ändern der Datenbank muss in der Klasse cls_ExtentedList die Liste mit den Namen der Spalten geändert werden. Genauso in der Prozedur "Splitten". Hier müssen die einzelnen Spalten als Optionaler Parameter verändert und danach ebenfalls die If-Abfrage angepasst werden.

      Das war nun der erste Teil.
      Wenn ich die nächsten Tage Zeit habe, kommt noch ein Beispiel mit dem Einfügen von Daten in die Datenbank.
      Dies wird nicht ganz so lang wie dieser Post, da der größte Teil hier beschrieben wurde und daran anknüpft.

      Viel Spaß damit
      wintoolz.de
      • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
      • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
      • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

      Benutze auch du Ecosia

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „T1g0r“ ()

      Entschudigt, dass das Thema schon so alt ist, aber eine Frage hätt ich:
      Ich bin der Anleitung, er holt sich auch die Daten. Soweit so gut.
      Aber er trägt in die lsvHaupt (das soll eine ListView sein, oder) nur die Spalte id ein, aber nix anderes.
      Beim Eintragen in die Lsv hab ich festgestellt, das immernur das 1. Parameter übernommen wird:

      VB.NET-Quellcode

      1. 'In ListView einfügen
      2. For i As Integer = 0 To vListe.Count - 1
      3. lsvHaupt.Items.Add(New ListViewItem(New String() {vListe(i).id, vListe(i).name, vListe(i).comment, vListe(i).preis, vListe(i).anzahl, vListe(i).catid, vListe(i).pic, vListe(i).tags}))
      4. Next

      also vListe(i).id.
      Wenn ich vListe(i).name an 1. Stelle setze tut er nur die Spalte name schreiben.
      Wie kann ich jetzt auf die anderen zugreifen, bzw. diese als Tabelle ala phpMyAdmin ausgeben lassen?
      Hallo Tig0r, danke für deinen Hinweis im anderen Tutorial. Ich habe mein Programm jetzt fertig, alles klappt 1a allerdings ohne sichere Übergabe mit PhP.
      Ich werde jetzt versuchen mein Programm mit deinem Tutorial sicherer zu gestalten. Als kleine Anmerkung vorab, der Link zur [Beta]HttpPostRequest funktioniert nicht (mehr).
      Ich habe die Datei hier gefunden, wurde wohl verschoben:
      [Beta] HttpPostRequest
      Da ich noch ein Anfänger bin stolpere ich über das Problem, dass ich nicht weiß was ich mit den DLL´s machen soll
      Sorry wenn es eine doofe Frage ist, aber ich gehe das Tutorial durch weil ich was lernen will.
      Ansonsten sieht es gut beschrieben aus.

      Edit: Ich hab das mit der dll rausgefunden (glaube es zumindest richtig gemacht zu haben). In den entsprechenden Windows Ordner gepackt und mit Projekt-Verweise eingelesen.

      Allerdings habe ich nun ein anderes Problem mit httppostequest und Netframework 4:
      [VB 2010] Verbindung MySQL-Datenbank via PHP-Skript - HttpPostRequest Fehler, Netframework 4.0?

      Und noch was anderes, warum sind diese Zeilen auskommentiert?
      //Datenbankdaten angeben
      //mysql_connect("Host","Benutzer", "Passwort"); //Zugangsdaten angeben (Host, Benutzer, Passwort)
      //mysql_select_db("Datenbank"); // Datenbank angeben

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Alex“ ()

      @Alex:
      Bei dem Connection.php hab ich wohl vergessen, die Kommentare zu löschen bzw. zu ändern.
      Das gehört natürlich nicht auskommentiert, da sonst keine Verbindungsdaten zu der Datenbank vorhanden sind...
      zu deinem geschilderten Problem kann ich leider keine Auskunft geben. Dazu musst musst du mal den ersteller der dll befragen.
      wintoolz.de
      • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
      • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
      • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

      Benutze auch du Ecosia
      Hab das jetzt alles hinbekommen.
      Und wie geht das jetzt mit INSERT oder UPDATE? Würde mich über eine Fortführung des Tuts freuen weil ich genau sowas für mein Admincontrol für meine Webseite brauche ^^

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MA-Maddin“ ()

      Hallo,
      heute möchte ich beschreiben, wie man Daten in einer Datenbank einträgt, bzw ändert. Also INSERT bzw UPDATE.
      Wie in der Abfrage.php zu sehen ist, ist der INSERT-Befehl dort bereits eingetragen. Das bedeutet, wir müssen nur noch die zu schreibenden Daten an das PHP-Skript übergeben.

      Im Click-Event des Button des Button muss nun zuerst eine Verbindung Klasse cls_Datenbankzugriff hergestellt werden:

      VB.NET-Quellcode

      1. 'Insert ausführen
      2. 'Verbindung definieren
      3. Dim Verbindung As cls_Datenbankzugriff
      4. Verbindung = New cls_Datenbankzugriff


      Danach muss die Net.PostCollection definiert werden.
      In dieser werden die Übergabeparameter zum PHP-Skript übergeben:

      VB.NET-Quellcode

      1. 'Aufruf der Klasse
      2. Dim myCollection As Net.PostCollection = New Net.PostCollection
      3. 'Welcher Query soll den im Skript ausgeführt werden?
      4. myCollection.Add("SQLQuery", "insert")
      5. 'Welche Daten sollen in der Dantebank eingefügt werden?
      6. myCollection.Add("name", txt_Name.Text)
      7. myCollection.Add("nachname", txt_Nachname.Text)
      8. myCollection.Add("anrede", txt_Anrede.Text)
      9. myCollection.Add("strasse", txt_Strasse.Text)
      10. myCollection.Add("nr", txt_Nr.Text)

      Zum Schluss kann die Verbindung zur Datenbank aufgebaut werden:

      VB.NET-Quellcode

      1. 'Verbindung aufbauen und Daten holen/übergeben
      2. Dim Rückgabewert As String = Verbindung.Zugriff(myCollection, "Abfrage.php", True)


      Vergleicht man diesen Code mit dem Code des ersten Posts, so stellt man fest, dass hier nichts anderes gemacht wird. Es werden lediglich mehrere Parameter übergeben. Das selbe Prinzip wird beim UPDATE genutzt.

      Der benötigte VB-Code für das Update:

      VB.NET-Quellcode

      1. 'Update ausführen
      2. 'Verbindung definieren
      3. Dim Verbindung As cls_Datenbankzugriff
      4. Verbindung = New cls_Datenbankzugriff
      5. 'Aufruf der Klasse
      6. Dim myCollection As Net.PostCollection = New Net.PostCollection
      7. 'Welcher Query soll den im Skript ausgeführt werden?
      8. myCollection.Add("SQLQuery", "update")
      9. 'Welche Daten sollen in der Datenbank bearbeitet werden?
      10. myCollection.Add("name", txt_Name.Text)
      11. myCollection.Add("nachname", txt_Nachname.Text)
      12. myCollection.Add("anrede", txt_Anrede.Text)
      13. myCollection.Add("strasse", txt_Strasse.Text)
      14. myCollection.Add("nr", txt_Nr.Text)
      15. 'Verbindung aufbauen und Daten holen/übergeben
      16. Dim Rückgabewert As String = Verbindung.Zugriff(myCollection, "Abfrage.php", True)

      Folgendes muss in die Abfrage.php einfügen werden:

      PHP-Quellcode

      1. case "update": //Einträge bearbeiten
      2. $abfrage = "UPDATE Tabelle SET name='" . mysql_real_escape_string($_POST['name']) . "',
      3. nachname='" . mysql_real_escape_string($_POST['nachname']) . "',
      4. anrede='" . mysql_real_escape_string($_POST['anrede']) . "',
      5. strasse='" . mysql_real_escape_string($_POST['strasse']) . "',
      6. nr='" . mysql_real_escape_string($_POST['nr']) . "',
      7. WHERE id='irgendeine ID'";
      8. if (!dbAbfrage($abfrage))
      9. {
      10. echo "Beim Update ist ein Fehler aufgetreten.";
      11. }
      12. else
      13. {
      14. echo "Update erfolgreich.";
      15. }
      16. break;

      Nun sollte auch das Update und das Insert funktionieren.
      Viel Spaß
      wintoolz.de
      • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
      • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
      • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

      Benutze auch du Ecosia

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

      undefinierbare Zeichen in Rückgabewert

      Hallo,

      Habe mich nun stundenlang mit diesem Tut und der HTTPRequest.dll beschäftigt und bin über eine Merkwürdigkeit gestossen.

      Es hat eine Weile gedauert dahinterzusteigen, es muss aber an VB.NET liegen. Folgendes:
      Sinn des Ganzen ist es Login-Daten abzugleichen, wenn diese stimmen, gibt die PHP-Datei ein "yes" zurück. Lasse ich den Request in einer MessageBox anzeigen steht da wie erwartet yes. Anders in einer If-Schleife

      VB.NET-Quellcode

      1. If Rückgabewert = "yes" then
      2. MsgBox("ok")
      3. else
      4. MsgBox("nicht ok")
      5. End if


      Ich konnte machen was ich will, ich bin immer in das Else gerannt, das Debugging ergab: If "yes" = "yes" then, und trotzdem wurde die Bedingung nicht erfüllt. Ergibt keine Logik. Ein Console.Write(Rückgabewert) ergab aber ??yes, womit natürlich klar ist: ??yes ist ungleich yes.

      Ist schon jemand auf dieses Phänomen gestossen und hat eventuell ne Lösung parat?
      Danke im Voraus...

      :EDIT Die beiden ?? kommen nur am Anfang auch wenn ich mehrere String auspucken lasse (z.B. eine Datenbank-Abfrage wie im Tut)
      Ich kenn das Phänomen was irgendwie mit UTF-8 zu tun hat. Dummerweise haben andere Webseiten die auf dem selben Server laufen dieses Problem nicht, ich forsche mal weiter

      :Edit Habs gelöst, wollte schlau sein und die PHP-Dateien gleich mit im VB.Net Projekt programmieren, aber VB.NET hat wohl eine dumme Variante die Dateien zu speichern. Ein Öffnen in UltraEdit und speichern als UTF-8 ohne BOM hat das Problem dann gelöst.
      Also den PHP-Part schön seperat schreiben...:-)

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „mirco_lu“ ()

      Ich komme leider nur bis zu der Meldung von meiner Firewall ob der Zugriff erlaubt werden soll. Die Verbindung wird dann zu imap.meinserver.de aufgebaut (?). Anschließend passiert gar nichts mehr. Es kommt auch keine Fehlermeldung.
      Weiß jemand was die Ursache sein könnte?
      mfg Homer

      //An der Firewall liegt es nicht!
      imap?
      IMAP ist normal für das Empfangen von Emails zuständig...
      Hast du die Verbindungsdaten korrekt angegeben?
      Hast du mal die Empfangenen Daten ausgewertet, was die der Server zurückschickt? Vielleicht wirst du daraus schlauer.
      wintoolz.de
      • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
      • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
      • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

      Benutze auch du Ecosia
      Alle Daten sind korrekt angegeben. Im VB Code (cls_Datenbankzugriff) den Pfad, wo ich die PHP Scripte hochgeladen habe und in Connection_inc.php die Zugangsdaten.
      Wie soll ich die empfangenen Daten auswerten, ich weiß ja nicht mal ob es überhaupt dazu kommt?
      mfg Homer
      Wenn etwas vom Server zurückkommt, ist dies in "Rückgabewert" zu sehen...
      wintoolz.de
      • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
      • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
      • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

      Benutze auch du Ecosia
      Die Meldung lässt darauf schliesen, dass du die Datei nicht richtig ansprichst.
      Hast du den Pfad korrekt angegeben?
      Du musst bedenken, in der Klasse cls_Datenbankzugriff wird der Ordner angegeben, in dem die Datei liegt.

      VB.NET-Quellcode

      1. Dim Ergebnis As String = myrequest.Create(IO.Path.Combine("http://www.DeineSeite.de/OrdnerInDemDieDateiLiegt", File), vPostCollection)

      Erst beim Verbindungsaufbau wird die Datei angegeben. Und nur die Datei.

      VB.NET-Quellcode

      1. Dim Rückgabewert As String = Verbindung.Zugriff(myCollection, "Abfrage.php", False)

      Du kannst es natürlich auch anders lösen, in dem du z.B. beim Verbindungsaufbau immer den kompletten Pfad angibst und in der Klasse den Teil weglässt, was aber unnötig ist.
      wintoolz.de
      • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
      • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
      • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

      Benutze auch du Ecosia
      Ich habe den Pfad angegeben, in den ich die 3 PHP Dateien hochgeladen habe. Meinst du mit "Die Datei" Abfrage.php?
      Es kommt leider nach wie vor die selbe Meldung: Der Remoteserver hat einen Fehler zurückgegeben: (404) Nicht gefunden.
      Außerdem wird laut Firewall immernoch auf imap. zugegriffen...?
      Ich habe übrigens hier einen Server mit Datenbank: webgo24
      Mit Datei meine ich die Datei, welche du ansprechen möchtest...
      Kannst du vielleicht mal den Teil deines Codes posten, welcher die Verbindung aufbaut. Inklusive der Datenbankzugiffsklasse?
      Da würde womöglich weiterhelfen.
      wintoolz.de
      • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
      • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
      • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

      Benutze auch du Ecosia