Dear,
This is my code, I get all the usernames/gebruikersnamen out of my database but now i need to check in the database or the user already exists. If this is true, the user need to get a message and need to fill in an other name if their is no match the registration will be succesfull.
Can someone find the fault in my code why the user is able to put an existing name in the database?
Something went wrong in the JobDone sub but i don't know what exactly
Thanks
This is my code, I get all the usernames/gebruikersnamen out of my database but now i need to check in the database or the user already exists. If this is true, the user need to get a message and need to fill in an other name if their is no match the registration will be succesfull.
Can someone find the fault in my code why the user is able to put an existing name in the database?
Something went wrong in the JobDone sub but i don't know what exactly
Thanks
B4X:
'Registreren van een gebruiker
Sub btnRegistreren_click ()
'Valideert de ingegeven velden van de registratie.
validateFields
'Verberegt het toetsenbord
Phone1.HideKeyboard(Activity)
'Geeft een progressschermpje weer met even geduld a.u.b. weer.
'ProgressDialogShow("Even geduld a.u.b.")
End Sub
'Terugkeren
Sub btnGoBack1_click
'Laat de gebruiker terugkeren naar het main scherm.
StartActivity(Main)
End Sub
'Algemene voorwaarden
Sub btnAlgemeneVoorwaarden_click
'laat de gebruiker naar de gebruikersvoorwaarden gaan om deze te lezen.
StartActivity(Gebruikersvoorwaarden)
End Sub
'Valideren velden
Sub validateFields ()
'String koppelen aan edit tekstboxen
strGebruikersnaam = edtGebruikersnaam.Text
strWachtwoord = edtWachtwoord.Text
strEmailAdres = edtEmailAdres.Text
'Fout meldingen
Dim temppndstring As String
temppndstring = edtGebruikersnaam.Text
Dim temppwdstring As String
temppwdstring = edtWachtwoord.Text
If temppndstring = "" OR temppwdstring = "" OR edtEmailAdres.Text = "" Then
Msgbox("Voer alle velden in","Waarschuwing")
Return
Else If strGebruikersnaam.Length < 3 OR strWachtwoord.Length < 3 Then
Msgbox("De gebruikersnaam en/of wachtwoord is niet lang genoeg, voer minstens 3 karakters in.","Waarschuwing")
edtGebruikersnaam.text = ""
edtWachtwoord.Text = ""
Return
Else If edtEmailAdres.Text <> "" Then
Dim matcher1 As Matcher
matcher1 = Regex.Matcher("\w+@\w+\.\w+", edtEmailAdres.Text)
If matcher1.Find = False Then
Msgbox("Voer een geldig email adres in","Waarschuwing")
Return
Else If cboxAlgemeneVoorwaarden.Checked = False Then
Msgbox("Lees en accepteer de algemene voorwaarden","Waarschuwing")
Return
Else
'Dim job3 As HttpJob
'job3.Initialize("Job3", Me)
'job3.Download("http://www.6itn.be/ticketcenter/api.php?query=INSERT%20INTO%20Gebruiker%20(Gebruikersnaam,wachtwoord,[e-mailadres])%20VALUES('" & edtGebruikersnaam.text &"','"&edtWachtwoord.Text&"','"&edtEmailAdres.Text&"')")
CheckIfUsersExists
'ToastMessageShow("Even geduld, gegevens worden gecontroleerd", False)
Phone1.HideKeyboard(Activity)
ToastMessageShow("U kunt direct aanmelden", False)
ProgressDialogShow("Even geduld.")
End If
End If
End Sub
Sub CheckIfUsersExists
job1.Initialize("Job1", Me)
job1.PostString("http://www.6itn.be/ticketcenter/api.php?query=Select%20Gebruikersnaam%20FROM%20Gebruiker", edtGebruikersnaam.Text)
'job1.PostString("http://www.6itn.be/ticketcenter/api.php?query=SELECT%20Gebruikersnaam%20FROM%20Gebruiker
Log(job1.ErrorMessage)
Log("HttpUtils.GetString(SELECT Gebruikersnaam FROM Gebruiker) --> CheckIfUserExists")
Log("Gebruikersnaam ="& edtGebruikersnaam.Text)
End Sub
Sub RegistratieSucces
ToastMessageShow("U registratie is geslaagd, u kunt nu aanmelden.",True)
Dim job3 As HttpJob
job3.Initialize("Job3", Me)
job3.Download("http://www.6itn.be/ticketcenter/api.php?query=INSERT%20INTO%20Gebruiker%20(Gebruikersnaam,wachtwoord,[e-mailadres])%20VALUES('" & edtGebruikersnaam.text &"','"&edtWachtwoord.Text&"','"&edtEmailAdres.Text&"')")
End Sub
Sub JobDone (job As HttpJob)
Log(job.ErrorMessage)
Log("JobDone Sub gestart")
If job.Success = True Then
Log("HttpUtils.IsSucces = true")
Select job.JobName
Case "Job1"
Dim parser As JSONParser
Dim response As String
response = job1.GetString
parser.Initialize(response)
Dim rows As List
rows = parser.NextArray
Log("Rows=" & rows)
'werken met resultaat
'rows is een lijst (zie hierboven)
'Elk item is een Map met de kolomnamen als keys en de db-waarden als waarden.
For i = 0 To rows.Size - 1
Log("Rows #" & i)
Dim m As Map
m = rows.Get(i)
'values van kolom 1, 2 en 3 loggen
Log("Gebruikersnaam=" & m.Get("Gebruikersnaam"))
Log("i=" & i)
Log("m="& m)
Next
If i = 1 Then
'Als i in dit geval 1 is, wilt dit zeggen dat we een resultaat krijgen, en slagen we dit op in een variable om later nogmaals te controleren
UserNameChecker = m.Get("Gebruikersnaam")
Log("Usernamecheck"&UserNameChecker)
If edtGebruikersnaam.Text = UserNameChecker Then
ProgressDialogHide
Msgbox("Deze gebruikersnaam is al in gebruik.","Waarschuwing")
edtGebruikersnaam.Text=""
Else
RegistratieSucces
Log("FIRST REGISTRATIONSUCCESS")
End If
Else If i <> 1 Then
'In het andere geval zijn er dus geen overeenkomsten en voeren we de functie uit die zorgt dat de account wordt aangemaakt
ProgressDialogHide
RegistratieSucces
Log("SECOND REGISTRATIONSUCCESS")
End If
'Als de ontvangen gegevens van de DB overeenkomen met de ingegeven tekst, geven we een melding weer.
Case "Job3"
Log("POSTED DATASTRING")
'Na dat de account gemaakt is, wachten we 1 second voor we automatisch teruggaan naar het Loginscherm
'ProgressDialogHide
Delay(1000)
Activity.Finish
End Select
'Als JobDone iet doet geven we een foutmelding weer die laat blijken dat men een verbindingprobleem heeft.
Else If job.Success = False Then
Msgbox("Er zijn problemen opgetreden, probeer later opnieuw", "Verbindingsproblemen")
ProgressDialogHide
End If
job1.Release
End Sub