04 Pixelgenerator
Last updated
Was this helpful?
Last updated
Was this helpful?
Erstelle ein PHP-Script, welches aufgrund der mitgegebenen GET-Variablen eine Tabelle zur Darstellung eines Pixelbildes generiert.
Nutze zur Strukturierung des Codes die erstellte MVC-Umgebung. Erstelle die Route /pixel
:
PixelController.php
=> Logik
pixel.view.php
=> Ausgabe
Entwickle das Script immer nur so weit, bis alle Komponenten des jeweiligen Schrittes komplett erfüllt werden. Erweitere es anschliessend, damit der nächste Schritt erfüllt wird.
Erstelle eine einfache View ohne PHP-Code. Auf der View fügst Du eine Tabelle mit 4 Spalten und 4 Zeilen ein.
Du solltest nun eine vertikal und horizontal zentrierte Tabelle erhalten.
Erstelle in deinem Controllernun je eine Variable für die Anzahl Spalten ($cols
) und die Anzahl Zeilen ($rows
). Nutze PHP um die Tabelle dynamisch anhand der Werte der beiden Variablen in deiner View zu generieren.
Wir möchten nun die Möglichkeit haben, via URL-Parameter bestimmen zu können, wie viele Spalten und wie viele Zeilen die Tabelle haben soll.
Beide Parameter sollen optional sein und einen Standard-Wert von 4 haben.
Testfälle
URL
Spalten
Zeilen
4
4
4
2
2
4
2
2
Du kannst über die Superglobale $_GET
auf Parameter aus der URL zugreifen.
Grundsätzlich sollten wir User-Input nie trauen. Die GET-Parameter sind vom User frei bestimmbar und können missbraucht werden. Was, wenn eine Spalten-Anzahl von 10000000
eingegeben wird? Was, wenn eine Anzahl von keineZahl
eingegeben wird?
Stelle sicher, dass die folgenden Regeln erfüllt werden.
Regeln
Die maximale Anzahl von Spalten oder Zeilen soll 60
sein.
Die minimale Anzahl von Spalten oder Zeilen soll 1
sein.
Wir möchten nun über einen weiteren GET-Parameter pixels
mehrere Koordinaten bestimmen können. Die Koordinaten dienen dazu, Tabellen-Zellen zu identifizieren, die schwarz einzufärben sind.
Die CSS-Klasse .mark
ist im CSS-File bereits vorbereitet. Diese Klasse kannst du also Zellen vergeben, die markiert werden sollen.
Die Pixel-Koordinaten werden als String im Format x|y
definiert. Möchten wir beispielsweise die 2. Zelle auf der 3. Zeile markieren, wären die Koordinaten 2|3
.
Da wir mehrere Koordinaten an das PHP-Script übergeben möchten, können wir den GET-Parameter pixels
als Array übergeben. Dies geschieht, indem []
an den Parametername angehängt wird.
Erweitere das PHP-Script so, dass über folgende Query-Strings die korrekten Pixel markiert werden:
Query-String
Output
?rows=2&cols=2&pixels[]=2|1&pixels[]=2|2
?rows=3&cols=3&pixels[]=3|1&pixels[]=1|3
?rows=3&cols=3&pixels[]=1|1&pixels[]=2|2&pixels[]=3|3
Schritt 6
Mit welchem Query-String erhältst du diesen Output?
Mögliche Lösungen zu den Aufgaben werden dir vom Kursleiter bereitgestellt. Natürlich ist die Ausgabe des Scripts entscheidend, nicht der Code dazu.
Es sind also mehrere Lösungen möglich, solange durch die richtige Logik die gewünschte Ausgabe erzeugt wird.
Kopiere den Inhalt in deine public/css/app.css
und binde diese in deiner View ein.
Wie könntest du hier den verwenden?
$cols
und $rows
sollen immer ein Integer sein (siehe )