Programmieren mit php und mySQL (Parameter übergeben) - Guru 2.0
Programmieren mit php und mySQL (Parameter übergeben)

Programmieren mit php und mySQL (Parameter übergeben)

Sonnenuntergang beim Louvre in Paris, gesehen von der Pont Neuf, Bild: microble.eu

Sonnenuntergang beim Louvre in Paris, gesehen von der Pont Neuf, Bild: microble.eu

Diesmal geht es in die Richtung der Übergabe von Parameter. Denn bis jetzt hast Du ja nur eine statische Abfrage an die Datenbank gesendet. Damit ist es halt noch sehr schwierig zu programmieren. Für jeden Gedanken musst du eine eigene Funktion erstellen. Aber wenn du einen oder mehrere Parameter übergeben kannst, dann wird alles viel dynamischer. Und erst damit kannst Du zum Beispiel eine Anmeldung eines Benutzers durchführen, also auf Benutzereingaben reagieren.
Du hast doch die Hausübung brav gemacht, oder etwa nicht?

Lösung zur Hausübung 8.1

Die Lösung ist Dir sicher nicht schwer gefallen. Hier die gesamte Datei user.php.

Nachtrag

Ich habe entdeckt, dass ich Dir gestern noch einen Befehl unterschlagen habe. Schau mal in die Zeile 80 bei der dBase.php, dort findest Du ihn.

mysql_close()

Schliesst eine offene Verbindung zu einem mySQL-Server

Syntax

mysql_close($linkIdentifier)

Parameter

  • $linkIdentifier
    Eine gültige Verbindung zum Datenbankserver. Wird sie nicht angegeben, wird die letzte Verbindung, welche mit mysql_connect() geöffnet wurde, verwendet.

Rückgabewert

Bei Erfolg wird true, bei einem Fehler false retour gegeben.

Beispiel

Normalerweise musst Du die Datenverbindung nicht schließen. Denn php erkennt am Ende des Skripts, ob eine Verbindung weiter benötigt wird oder nicht und beendet sie automatisch. Wir wollen jedoch sauber programmieren und machen unsere Hausaufgaben. Denn stell Dir einfach vor 1.000 Benutzer arbeiten gleichzeitig mit dem Skript und es hat eine etwas längere Laufzeit und Du schließt nicht benötigte Verbindung nicht sofort. Dann passiert es Dir, dass der Speicher des webServers unnötig belastet wird und auch der Datenbankserver unter Last steht. Das wollen wir ja nicht, denn dann hat der Server ja keine Zeit mehr, sich um wichtige Aufgaben zu kümmern.

Ein kleiner Ausflug

Da es sich hier um einen php/mySQL-Kurs handelt, will ich nicht näher auf HTML/CSS eingehen. Aber trotzdem wird es an der Zeit, dass wir uns kurz damit beschäftigen. Wir brauchen ab jetzt nämlich ein paar Funktionen um eine HTML-Datei für die Aus-/Eingaben zu erzeugen. Dazu legen wir uns im Verzeichnis /inc eine Datei functions.php an. Diese wird in Zukunft alle Funktionen aufnehmen, welche von fast jeder php-Datei benutzt werden und von zentraler Bedeutung sind.

Prinzipiell brauchen wir die Datei um den Zeichensatz richtig zu setzen, dazu verwenden wir das Attribut charset. Vielleicht hast Du ja den Post Zeichncodierung für’s Web gelesen. Natürlich gibt es auch andere Möglichkeiten, aber mir erscheint diese die einfachste für die momentane Aufgabe zu sein.

Damit Du wieder ein wenig ins Programmieren kommst, hier eine kurze Übung.

Übung 9.1

Baue die functions.php in die user.php ein. Danach änderst Du die Ausgabe des Arrays so, dass Feldname: Wert in je einer Zeile für ein Feld ausgegeben wird. Damit wir wieder alle den gleichen Code haben, stelle ich hier wieder die gesamte user.php zur Verfügung.

Übergabe des Parameter

Uns interessiert ja eigentlich einen bestimmten Datensatz abzufragen. Im Moment ist die ID ja fix im SourceCode hinterlegt und der Anwender hat keine Möglichkeit dies zu beeinflussen. Daher werden wir dem Anwender eine Eingabemöglichkeit geben: ein Formular welches wir ab Zeile 34 in die user.php einbauen.

Wir geben schreiben hier einfach ein Formular mit dem echo-Befehl in die HTML-Ausgabe. Wichtig ist hier, dass die method auf post und die action auf user.php steht. Damit sagen wir dem Browser wie die Daten übertragen werden sollen und wer die Daten verarbeiten wird.

Für uns ist hier die method interessant. Denn dadurch erhälst Du in php eine globales, assoziatives Array $_POST. In diesem stehen alle Werte des Formulars mit dem Attribut name als Schlüssel. Jetzt müssten wir nur noch feststellen können, ob dieses Array belegt ist oder nicht. Also ob user.php über den Browser oder dem Senden-Knopf aufgerufen wurde. Klar gibt es so eine Möglichkeit.

isset()

Feststellen ob eine Variable vorhanden und nicht NULL ist

Syntax

isset($variable)

Parameter

  • $variable
    Die Variable, welche überprüft werden soll.

Rückgabewert

Ist die Variable vorhanden und mit einem Wert belegt wird true, sonst false retour gegeben.

Beispiel

 

Mache zu diesem Befehl gleich mal eine Übung.

Übung 9.2

Mit diesem Befehl kannst Du jetzt die Ausgabe der Benutzerdaten steuern. Ändere die user.php so ab, dass die Daten des Benutzers nur ausgegeben werden, wenn der Senden-Knopf gedrückt wurde.

Jetzt brauchen wir eigentlich nur noch einen Befehl um die Hausübung zu schaffen.

array_key_exists()

Überprüft ob ein Schlüssel oder Index in einem Array existiert

Syntax

array_key_exists($schluessel, $array)

Parameter

  • $schluessel
    Ein int oder string Wert, welche in $array gesucht werden soll.
  • $array
    Das Array, dessen Index oder Schlüsselwert durchsucht werden soll.

Rückgabewert

Ist der Schlüssel/Index vorhanden wird true, sonst false retour gegeben.

Beispiel

Den Rest darfst Du als Hausübung machen! Denn Du willst ja nicht aus der Übung kommen?

Übung 9.3

Du musst die Dateien user.php und dBase.php anpassen. Das Ziel ist eine saubere Ausgabe der Daten zu erhalten. Damit ist gemeint, wenn der Anwender eine gültige ID eingibt sollen die Benutzerdaten ausgegeben werden. Wurde die ID nicht gefunden, so soll der Benutzer eine sinnvolle Fehlermeldung erhalten. Du brauchst dazu nichts an den SQL-Kommandos (auch nicht jene von php) verändern, sondern nur ein wenig logisch denken und das gelernte Wissen über Arrays einsetzen.

In eigener Sache

Diesesmal habe ich einige Dinge nicht erklärt, zum Beispiel das Attribut method und action beim form-Tag. Falls Du dafür weitere Erklärungen wünschst oder brauchst, schreib es in einem Kommentar. Ich werde dann einen kleinen SideStep machen und das nachholen.

Ich hoffe, dass meine Erklärungen verständlich waren. Ich bin gespannt wie viele mitmachen und auf die Lösung kommen. Ich werde es aber nur erfahren, wenn Du einen Kommentar eingibst. Also schreib ruhig, dass Du die Übungen machst und auch wie es Dir dabei geht. Der Kurs kann für Dich ein riesiger Erfolg werden, wenn Du mir eine Rückmeldung gibst. Denn dann kann ich die weiteren Artikel Deinen Wünschen anpassen.

Information

Diese Artikelserie ist mit dem Tag phpMySQL@Kurs versehen. Damit kannst Du schnell alle Teile des Kurses finden: https://www.guru-20.info/tag/phpMySQL@Kurs

Startseite bzw. Inhaltsverzeichnis des Kurses

Es wurden 3 Kommentare zu diesem Beitrag geschrieben.

  • Felix

    Naja, was mysql_close betrifft: normalerweise sollte man die Verbindung nicht schließen, und mysql_pconnect zum verbinden benutzen. Dann versucht PHP, die Verbindung dauernd offen zu halten (über die Skript-Laufzeit hinaus) um sie bei der nächsten Anfrage wieder benutzen zu können. Anstatt bei jeder Anfrage eine neue Verbindung zu öffnen und sofort wieder zu schließen, wird also eine Verbndung für alle Anfragen benutzt.

  • Guru 2.0 Autor

    Lieber Felix!
    Leider muss ich Dir widersprechen. Es sind – bei der Programmierung von webServices – persistente Verbindungen abzulehnen. Da es zu mehreren Problemen kann. Wobei das Tuning von Apache und mySQL für mich negierbar ist. Aber der Table-Lock ist ein Problem, genauso das Wiederverwenden von Verbindungen, temporären Tabellen und auch Sessionvariablen. Dadurch kann sich bei einem Angriff eine riesige Sicherheitslücke ergeben. Auch kann durch unvermutete Locks die gesamte Applikation fehlerhaft werden.
    Da ja im web üblicherweise mySQL und php auf demselben Server läuft ist auch das Zeitproblem für das andauerende öffnen und schließen negierbar. Daher ist die vorgestellte Variante aus mehreren Gründen vorzuziehen.

  • Bernd Pronegg

    In dieser Form gefällt mir das ausgezeichnet

Blogheim.at Logo
Diese Website verwendet Cookies - nähere Informationen dazu finden Sie in unserer „Datenschutzerklärung“. Klicken Sie auf „Ich stimme zu“, um Cookies zu akzeptieren und unsere Webseite zu besuchen, oder klicken Sie auf „Cookie-Einstellungen“, um Ihre Cookies selbst zu verwalten.