• Hallo alle zusammen.

    Ich hab aus langeweile mal ein kleines Telefonbuch erstellt. Im Moment kann man sich nur die Einträge anzeigen lassen.

    Hinter dem Programm steht eine kleine MySQL-Datenbank, welche die ID, den Name und die Durchwahl beinhaltet. Die Datenbank hab ich mal mit Angehängt. Man muss diese nur noch Importieren und vielleicht die Zugangsdaten im Code ändern.

    Für Verbesserungsvorschläge bin ich immer offen.

    Bitte seid nicht so gemein, ist eins meiner ersten Skripts/ Programme in AutoIT.

    Hier der Code:

    Spoiler anzeigen
    [autoit]


    #NoTrayIcon
    Opt("GUICloseOnESC", 0)
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <MySQL.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $DBVerbindung, $res

    [/autoit] [autoit][/autoit] [autoit]

    #region ### START Koda GUI section ### Form=g:\autoit\telefonbuch\form_telefonbuch.kxf
    $FormTelefonbuch = GUICreate("Telefonbuch", 557, 342, -1, -1)
    $MenuDatei = GUICtrlCreateMenu("&Datei")
    $MenuItemBeenden = GUICtrlCreateMenuItem("Beenden" & @TAB & "", $MenuDatei)
    $MenuHilfe = GUICtrlCreateMenu("&Hilfe")
    $MenuItemAendern = GUICtrlCreateMenuItem("Fehlenden oder Falschen Eintrag melden", $MenuHilfe)
    GUISetFont(9, 400, 0, "Arial")
    $Group1 = GUICtrlCreateGroup("Eintrag auswählen", 8, 8, 225, 305)
    $Label1 = GUICtrlCreateLabel("Eintrag durch anklicken auswählen", 24, 32, 195, 19)
    $ListeName = GUICtrlCreateList("", 24, 56, 193, 256)
    $Group2 = GUICtrlCreateGroup("Informationen zum aktuellen Eintrag", 248, 8, 297, 89)
    $Label2 = GUICtrlCreateLabel("Name:", 264, 32, 41, 19)
    $InputName = GUICtrlCreateInput("", 344, 32, 185, 23, BitOR($GUI_SS_DEFAULT_INPUT, $ES_READONLY))
    $Label3 = GUICtrlCreateLabel("Durchwahl:", 264, 64, 66, 19)
    $InputDurchwahl = GUICtrlCreateInput("", 344, 64, 185, 23, BitOR($GUI_SS_DEFAULT_INPUT, $ES_READONLY))
    $Pic1 = GUICtrlCreatePic("", 248, 112, 228, 140)
    GUICtrlSetImage($Pic1, @ScriptDir & "\logoneu.jpg")
    GUISetState()
    #endregion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    _NameAuslesen($ListeName)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE, $MenuItemBeenden
    $FrageBeenden = MsgBox(4 + 64 + 262144, "Information", "Möchten Sie das Programm wirklich beenden?")
    If $FrageBeenden = 6 Then
    _Ende()
    Else
    ContinueLoop
    EndIf
    Case $ListeName
    $Name = GUICtrlRead($ListeName)
    _AllesAuslesen($Name)
    Case $MenuItemAendern
    $Datum = @MDAY & "-" & @MON & "-" & @YEAR
    $Uhrzeit = @HOUR & ":" & @MIN
    $NameAendern = InputBox("Eingabe erforderlich", "Bitte geben Sie den Name des fehlenden oder falschen Eintrags ein.")
    If ($NameAendern = "") Then
    MsgBox(16, "Fehler!", "Sie müssen einen Name eingeben!")
    ContinueLoop
    Else
    $DurchwahlAendern = InputBox("Eingabe erforderlich", "Bitte geben Sie die Durchwahl des fehlenden oder falschen Eintrags ein.")
    If ($DurchwahlAendern = "") Then
    MsgBox(16, "Fehler!", "Sie müssen eine Durchwahl eingeben!")
    ContinueLoop
    Else
    ; Adresse für den SMTP-Server - Wichtig -
    $SmtpServer = "s01.srv-net.de"
    ; Der Name der als Absender angezeigt wird
    $FromName = @UserName
    ; Die Email Adresse, wo die Email herkommt
    $FromAddress = "anfrage@fi-eurobbw.de"
    ; Die Empfänger Adresse - Wichtig -
    $ToAddress = "support@fi-eurobbw.de"
    ; Der Betreff
    $Subject = "Supportmeldung: Euro-BBW Telefonbuch - Fehlender oder Falscher Eintrag!"
    ; Die eigentliche Email
    $Body = "Datum: " & $Datum & @CRLF & "Uhrzeit: " & $Uhrzeit & @CRLF & @CRLF & "Name: " & $NameAendern & @CRLF & "Durchwahl: " & $DurchwahlAendern & ""
    ; Der Anhang - frei lassen wenn es nicht benötigt wird
    $AttachFiles = ""
    ; Die Adresse für CC - frei lassen wenn es nicht benötigt wird
    $CcAddress = ""
    ; Die Adresse für BCC - frei lassen wenn es nicht benötigt wird
    $BccAddress = ""
    ; Die Priorität der Email
    $Importance = "Normal"
    ; Der Benutzername für den Absender - Wichtig -
    $Username = "xxxxxx"
    ; Das Passwort für den Absender - Wichtig -
    $Password = "xxxxxx"
    ; Der Port für die gesendete Mail - Standart 25 -
    $IPPort = 25
    ; Aktiviert/Deaktiviert SSL - 1 für https -
    $ssl = 0
    $rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
    If @error Then
    MsgBox(16, "Nicht erfolgreich!", "Die Nachricht konnte nicht erfolgreich übermittelt werden." & @CRLF & "Bitte versuchen Sie es zu einem späteren Zeitpunkt erneut.")
    Else
    MsgBox(64, "Erfolgreich!", "Die Nachricht wurde erfolgreich übermittelt." & @CRLF & "Wir werden und in kürze um das Problem kümmern.")
    EndIf
    EndIf
    EndIf
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Ende()
    _MySQL_Free_Result($res)
    _MySQL_Close($DBVerbindung)
    _MySQL_EndLibrary()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _NameAuslesen($Control)
    _MySQL_InitLibrary()
    If @error Then
    MsgBox(0, "Fehler!", "Kann die Datei ""libmysql.dll"" nicht finden!")
    Exit
    EndIf
    $DBVerbindung = _MySQL_Init()
    $connected = _MySQL_Real_Connect($DBVerbindung, "xxxxxx", "root", "", "helpdesk")
    If $connected = 0 Then Exit MsgBox(16, "Verbindungs Fehler!", _MySQL_Error($DBVerbindung) & "!" & @LF & "Das Programm wird jetzt beendet !" & @LF & "Bitte kontaktieren Sie die Fachinformatik !")
    $Abfrage = "SELECT name FROM telefon"
    _MySQL_Real_Query($DBVerbindung, $Abfrage)
    $res = _MySQL_Store_Result($DBVerbindung)
    $array = _MySQL_Fetch_Result_StringArray($res)
    For $i = 1 To UBound($array) - 1
    GUICtrlSetData($Control, $array[$i][0])
    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _AllesAuslesen($Name)
    $AbfrageAllesAuslesen = "SELECT durchwahl FROM telefon WHERE name = '" & $Name & "'"
    _MySQL_Real_Query($DBVerbindung, $AbfrageAllesAuslesen)
    $res = _MySQL_Store_Result($DBVerbindung)
    $array = _MySQL_Fetch_Result_StringArray($res)
    GUICtrlSetData($InputName, $Name)
    GUICtrlSetData($InputDurchwahl, $array[1][0])
    EndFunc

    [/autoit]

    Hier noch ein Screenshot:
    [Blockierte Grafik: http://img408.imageshack.us/img408/645/screentelefonbuch.jpg]

    Hier ist die Benutzeroberfläche für die Verwaltung der Datenbank

    Code:

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #NoTrayIcon
    Opt("GUICloseOnESC", 0)

    [/autoit] [autoit][/autoit] [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <MySQL.au3>

    [/autoit] [autoit][/autoit] [autoit]

    #region ### Anfang Globale Variablen ###
    Global $DBVerbindung
    #endregion ### Ende Globale Variablen ###

    [/autoit] [autoit][/autoit] [autoit]

    #region ### Anfang MySQL Dateien laden ###
    _MySQL_InitLibrary()
    If @error Then
    MsgBox(0, "Fehler!", "Kann die Datei ""libmysql.dll"" nicht finden!")
    Exit
    EndIf
    $DBVerbindung = _MySQL_Init()
    $connected = _MySQL_Real_Connect($DBVerbindung, "xxxxx", "root", "", "helpdesk")
    If $connected = 0 Then Exit MsgBox(16, "Verbindungs Fehler!", _MySQL_Error($DBVerbindung) & "!" & @LF & "Das Programm wird jetzt beendet !" & @LF & "Bitte kontaktieren Sie die Fachinformatik !")
    #endregion ### Ende MySQL Dateien laden ###

    [/autoit] [autoit][/autoit] [autoit]

    #region ### Amfang Array Deklaration ###
    Global $arGroupControls[3]
    Global $arLabelControls[10]
    Global $arInputControls[8]
    Global $arButtonControls[3]
    Global $arListControls[2]
    #endregion ### Ende Array Deklaration ###

    [/autoit] [autoit][/autoit] [autoit]

    $FormHaupt = GUICreate("Telefonbuch Verwaltung", 702, 619, -1, -1, -1, -1)
    GUISetFont(9, 400, 0, "Arial")
    #region ### Anfang Array Group ##
    $arGroupControls[0] = GUICtrlCreateGroup("Neuen Eintrag hinzufügen", 10, 10, 330, 175, -1, -1)
    $arGroupControls[1] = GUICtrlCreateGroup("Vorhandenen Eintrag bearbeiten", 10, 200, 330, 409, -1, -1)
    $arGroupControls[2] = GUICtrlCreateGroup("Einen Eintrag löschen", 360, 10, 330, 395, -1, -1)
    #endregion ### Ende Array Group ###

    [/autoit] [autoit][/autoit] [autoit]

    #region ### Anfang Array Label ###
    $arLabelControls[0] = GUICtrlCreateLabel("Name:", 30, 40, 50, 15, -1, -1)
    $arLabelControls[1] = GUICtrlCreateLabel("Durchwahl:", 30, 90, 88, 15, -1, -1)
    $arLabelControls[2] = GUICtrlCreateLabel("Eintrag auswählen:", 30, 240, 151, 15, -1, -1)
    $arLabelControls[3] = GUICtrlCreateLabel("ID:", 30, 410, 112, 15, -1, -1)
    $arLabelControls[4] = GUICtrlCreateLabel("Name:", 30, 460, 85, 15, -1, -1)
    $arLabelControls[5] = GUICtrlCreateLabel("Durchwahl:", 30, 510, 113, 15, -1, -1)
    $arLabelControls[6] = GUICtrlCreateLabel("Eintrag auswählen:", 380, 40, 115, 15, -1, -1)
    $arLabelControls[7] = GUICtrlCreateLabel("ID:", 380, 210, 50, 15, -1, -1)
    $arLabelControls[8] = GUICtrlCreateLabel("Name:", 380, 260, 50, 15, -1, -1)
    $arLabelControls[9] = GUICtrlCreateLabel("Durchwahl:", 380, 310, 122, 15, -1, -1)
    #endregion ### Ende Array Label ###

    [/autoit] [autoit][/autoit] [autoit]

    #region ### Anfang Array Input ###
    $arInputControls[0] = GUICtrlCreateInput("", 30, 60, 290, 20, -1, 512)
    $arInputControls[1] = GUICtrlCreateInput("", 30, 110, 290, 20, 8192, 512)
    $arInputControls[2] = GUICtrlCreateInput("", 30, 430, 290, 20, 2048, 512)
    $arInputControls[3] = GUICtrlCreateInput("", 30, 480, 290, 20, -1, 512)
    $arInputControls[4] = GUICtrlCreateInput("", 30, 530, 290, 20, 8192, 512)
    $arInputControls[5] = GUICtrlCreateInput("", 380, 230, 290, 20, 2048, 512)
    $arInputControls[6] = GUICtrlCreateInput("", 380, 280, 290, 20, 2048, 512)
    $arInputControls[7] = GUICtrlCreateInput("", 380, 330, 290, 20, 2048, 512)
    #endregion ### Ende Array Input ###

    [/autoit] [autoit][/autoit] [autoit]

    #region ### Anfang Array Buttons ###
    $arButtonControls[0] = GUICtrlCreateButton("Hinzufügen", 30, 140, 290, 30, -1, -1)
    $arButtonControls[1] = GUICtrlCreateButton("Bearbeiten", 30, 560, 290, 30, -1, -1)
    $arButtonControls[2] = GUICtrlCreateButton("Löschen", 380, 360, 290, 30, -1, -1)
    #endregion ### Ende Array Buttons ###

    [/autoit] [autoit][/autoit] [autoit]

    #region ### Anfang Array List ###
    $arListControls[0] = GUICtrlCreateList("", 30, 260, 290, 136, -1, 512)
    $arListControls[1] = GUICtrlCreateList("", 380, 60, 290, 136, -1, 512)
    #endregion ### Ende Array List ###

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    _ListboxFuellen()
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE ; Fertig
    $FrageBeenden = MsgBox(4 + 64 + 262144, "Information", "Möchten Sie das Programm ""Telefonbuch Verwaltung "" wirklich beenden?")
    If $FrageBeenden = 6 Then
    _Ende()
    Else
    ContinueLoop
    EndIf
    Case $arButtonControls[0] ; Fertig
    $Name = GUICtrlRead($arInputControls[0])
    $Durchwahl = GUICtrlRead($arInputControls[1])
    If ($Name = "") Then
    MsgBox(16, "Fehler!", "Sie müssen einen Namen angeben!")
    ElseIf($Durchwahl = "") Then
    MsgBox(16, "Fehler!", "Sie müssen eine Durchwahl angeben!")
    Else
    $Hinzufuegen = MsgBox(4 + 64 + 262144, "Information", "Möchten Sie den Eintrag """ & $Name & """ wirklich hinzufügen?")
    If $Hinzufuegen = 6 Then
    _Datensatzhinzufuegen($Name, $Durchwahl)
    Else
    ContinueLoop
    EndIf
    EndIf
    Case $arButtonControls[1] ; Fertig
    $ID = GUICtrlRead($arInputControls[2])
    $Name = GUICtrlRead($arInputControls[3])
    $Durchwahl = GUICtrlRead($arInputControls[4])
    If ($Name = "") Then
    MsgBox(16, "Fehler!", "Sie müssen einen Namen angeben!")
    ElseIf($Durchwahl = "") Then
    MsgBox(16, "Fehler!", "Sie müssen eine Durchwahl angeben!")
    Else
    $Bearbeiten = MsgBox(4 + 64 + 262144, "Information", "Möchten Sie den Eintrag """ & $Name & """ wirklich bearbeiten?")
    If $Bearbeiten = 6 Then
    _Datensatzbearbeiten($ID, $Name, $Durchwahl)
    Else
    ContinueLoop
    EndIf
    EndIf
    Case $arButtonControls[2] ; Fertig
    $ID = GUICtrlRead($arInputControls[5])
    $Name = GUICtrlRead($arInputControls[6])
    If ($ID = "") Then
    MsgBox(16, "Fehler!", "Sie müssen einen Eintrag auswählen!")
    Else
    $Loeschen = MsgBox(4 + 64 + 262144, "Information", "Möchten Sie den Eintrag """ & $Name & """ wirklich löschen?")
    If $Loeschen = 6 Then
    _DatensatzLoeschen($ID, $Name)
    Else
    ContinueLoop
    EndIf
    EndIf
    Case $arListControls[0] ; Fertig
    $Name = GUICtrlRead($arListControls[0])
    _DatensatzAuslesen($Name)
    Case $arListControls[1] ; Fertig
    $Name = GUICtrlRead($arListControls[1])
    _DatensatzAuslesen1($Name)

    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Ende()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _ListboxFuellen()
    $Abfrage = "SELECT name FROM telefon"
    _MySQL_Real_Query($DBVerbindung, $Abfrage)
    $res = _MySQL_Store_Result($DBVerbindung)
    $array = _MySQL_Fetch_Result_StringArray($res)
    For $i = 1 To UBound($array) - 1
    GUICtrlSetData($arListControls[0], $array[$i][0])
    GUICtrlSetData($arListControls[1], $array[$i][0])
    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Datensatzhinzufuegen($Name, $Durchwahl)
    $AbfrageSpeichern = "INSERT INTO telefon (name, durchwahl) VALUES ('" & $Name & "', '" & $Durchwahl & "')"
    $Ok = _MySQL_Real_Query($DBVerbindung, $AbfrageSpeichern)
    If $Ok = $MYSQL_SUCCESS Then
    MsgBox(64, "Erfolgreich", "Der Eintrag """ & $Name & """ wurde erfolgreich hinzugefügt!")
    Else
    $errno = _MySQL_errno($DBVerbindung)
    MsgBox(16, "Error:", $errno & @LF & _MySQL_Error($DBVerbindung) & @LF & "Der Eintrag wurde nicht hinzugefügt!")
    EndIf
    _InputLeeren()
    _ListBoxLeeren()
    _ListboxFuellen()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _DatensatzAuslesen($Name)
    $AbfrageAllesAuslesen = "SELECT id, durchwahl FROM telefon WHERE name = '" & $Name & "'"
    _MySQL_Real_Query($DBVerbindung, $AbfrageAllesAuslesen)
    $res = _MySQL_Store_Result($DBVerbindung)
    $array = _MySQL_Fetch_Result_StringArray($res)
    GUICtrlSetData($arInputControls[2], $array[1][0])
    GUICtrlSetData($arInputControls[3], $Name)
    GUICtrlSetData($arInputControls[4], $array[1][1])
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _DatensatzAuslesen1($Name)
    $AbfrageAllesAuslesen = "SELECT id, durchwahl FROM telefon WHERE name = '" & $Name & "'"
    _MySQL_Real_Query($DBVerbindung, $AbfrageAllesAuslesen)
    $res = _MySQL_Store_Result($DBVerbindung)
    $array = _MySQL_Fetch_Result_StringArray($res)
    GUICtrlSetData($arInputControls[5], $array[1][0])
    GUICtrlSetData($arInputControls[6], $Name)
    GUICtrlSetData($arInputControls[7], $array[1][1])
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Datensatzbearbeiten($ID, $Name, $Durchwahl)
    $AbfrageBearbeiten = "UPDATE telefon SET name = '" & $Name & "', durchwahl = '" & $Durchwahl & "' WHERE id = '" & $ID & "'"
    $Ok = _MySQL_Real_Query($DBVerbindung, $AbfrageBearbeiten)
    If $Ok = $MYSQL_SUCCESS Then
    MsgBox(64, "Erfolgreich", "Der Eintrag wurde erfolgreich bearbeitet!")
    Else
    $errno = _MySQL_errno($DBVerbindung)
    MsgBox(16, "Error:", $errno & @LF & _MySQL_Error($DBVerbindung) & @LF & "Der Eintrag wurde nicht bearbeitet!")
    EndIf
    _InputLeeren()
    _ListBoxLeeren()
    _ListboxFuellen()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _DatensatzLoeschen($ID, $Name)
    $AbfrageEntfernen = "DELETE FROM telefon WHERE id = '" & $ID & "'"
    $Erfolg = _MySQL_Real_Query($DBVerbindung, $AbfrageEntfernen)
    If $Erfolg = $MYSQL_SUCCESS Then
    MsgBox(64, "Erfolgreich", "Der Eintrag wurde erfolgreich gelöscht!")
    Else
    $errno = _MySQL_errno($DBVerbindung)
    MsgBox(16, "Error:", $errno & @LF & _MySQL_Error($DBVerbindung) & @LF & "Der Eintrag wurde nicht gelöscht!")
    EndIf
    _InputLeeren()
    _ListBoxLeeren()
    _ListboxFuellen()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _InputLeeren()
    For $i = 0 To UBound($arInputControls) - 1
    GUICtrlSetData($arInputControls[$i], "")
    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _ListBoxLeeren()
    _GUICtrlListBox_ResetContent($arListControls[0])
    _GUICtrlListBox_ResetContent($arListControls[1])
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    Screenshot:
    [Blockierte Grafik: http://img41.imageshack.us/img41/1959/verwaltung.png]
    MfG

    Hier der Link: Telefonbuch
    Musst es leider wo anders hochladen, habe ich immer die Meldung bekommen, das es zu groß ist.

    LG

    Philip

    24 Mal editiert, zuletzt von n00b-it (2. September 2012 um 18:44)

  • Hallo,

    Ich finde es richtig gut ;)
    Aber leider brauche ich es nicht :S

    Allerdings bitte beim nächsten mal den Source-Code nicht so verwüsten :D

    Edit: Wie ich sehe hast du es gemacht :D
    Die 1. Zeile komplett weg:

    [autoit]

    #include #include #include #include #include #include #include Global $DBVerbindung, $res

    [/autoit]


    Und dann ab der 1. Zeile:

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <MySQL.au3>
    Global $DBVerbindung, $res

    [/autoit]


    Gruß
    Fabi

    3 Mal editiert, zuletzt von Fabi (27. November 2011 um 09:49)