mit MySQL und PHP - lehrer.uni

Werbung
Informatik 13
10. Mai 2007
Klausur in 13.2
Thema: Homepage mit MySQL und PHP
(Bearbeitungszeit: 90 Minuten)
Name: Nachname, Vorname
Hinweis: Speichern Sie regelmäßig Ihre Arbeit in einer Word-Datei mit dem Namen
klausur2_Nachname.doc – aber nicht auf dem Desktop!
Datenverluste gehen zu Ihren Lasten!
8 VP
1 Sie finden in Ihrem Verzeichnis die folgenden Dateien:
description.php – footer.php – format-comenius.css – head.php –
index.php - language.php – language-package.php – material.php –
methods.php – partners.php - start.php – partners_klausur.csv und
qemuNr.sql sowie die Verzeichnisse graph und material mit 16 Grafiken bzw. 292
doc- oder pdf-Dateien.
a) Prüfen Sie die Vollständigkeit der Dateien. Wenden Sie sich bei Unvollständigkeit
an den Lehrer.
b) Kopieren Sie alle Dateien in der vorhandenen Ordnerstruktur in Ihr usr-Verzeichnis
des Webservers.
c) Importieren Sie die Datenbank qemuNr.sql und testen Sie die Homepage, indem
Sie in Ihrem Browser die index-Datei mit folgenden Optionen aufrufen:
index.php?language_chosen=0&topic=1
Erklären Sie, was die Parameter language_chosen und topic bewirken.
Welche Werte mit jeweils welchen Bedeutungen können Sie annehmen?
d) Betrachten Sie die Wirkungen der Menüpunkte material und partners.
Erklären Sie die Unterschiede im Aufbau der beiden Dateien.
6 VP
2 a) Legen Sie in der Datenbank qemu zusätzlich zur Tabelle material eine
Tabelle partners mit den der Abbildung entsprechenden Feldern, Typen
Längen und dem Primärschlüssel inst_nr an.
b) Importieren Sie die Inhalte der Datei partners_klausur.csv ab der 2. Zeile
über „CSV mit Load Data“.
weiter geht’s auf Seite 2…
1
Informatik 13
10. Mai 2007
16 VP
3 Für die Teilaufgaben a) bis c) gilt:
Erläutern Sie die von Ihnen durchgeführten Änderungen der Datei partners.php,
indem Sie an allen entsprechenden Stellen eine Kommentar-Nr. der Form //NEU1,
//NEU2, //NEU3, usw. einfügen und in der Datei klausur2_Nachname.doc
erklären.
a) Die Daten sollen ähnlich dem Aufbau der Datei material.php direkt aus
der Datenbanktabelle partners aus Aufgabe 2 ausgelesen werden.
Dabei sollen nach wie vor nur die vier Spaltenüberschriften country,
institution, contact persons und internet erscheinen.
b) Von der Farbgebung her sollen die ausgegebenen Tabellenzeilen nach jeder
Institution zwischen der roten Hintergrundfarbe und weiß wechseln. Sie können
dazu den passenden Quelltext aus der Datei
material.php nutzen.
c) Stellen Sie die Tabellenüberschriften als Button dar, so dass der Tabellenin-halt
beim Anklicken eines Buttons alphabetisch aufsteigend nach dem entsprechenden
Spalteninhalt sortiert wird. Sie können dazu in der Datei start.php schauen, wie
man solche Buttons realisiert.
Führen Sie dazu eine Variable $sortieren_nach ein, die je nach Auswahl die
Werte der Datenbank-Spaltenüberschriften annehmen kann.
d) Stellen Sie die Spaltenüberschriften in der gewählten Landessprache dar. Diese
Auswahl muss nur für Englisch und Deutsch funktionieren, in allen anderen
Sprachen soll die Überschrift auch in Englisch erscheinen.
Führen
Sei
dazu
die
Array-Variablen
$tab_partners_country,
$tab_partners_institution, $tab_partners_contact_persons und
$tab_partners_internet in der Datei language-pack.php ein.
Viel Erfolg!
Aufgabe
1
2
3
Gesamt
8
6
16
30
erreichte Punkte
von möglichen
Notenschlüssel siehe
Erwartungshorizont siehe
http://www.hoeger.org/punktesc.html
http://www.hoeger.org/I13/06i13_2.pdf
Rückgabe am 24. Mai 2007
Notenpunkte:
mündlich:
2
Arithmetisches Mittel:
Informatik 13
10. Mai 2007
Erwartungshorizont
1
a)
b)
c)
d)
2
a)
b)
Die Dateien sind vollständig.
Alle Dateien kopiert.
language_chosen kann die folgenden Werte mit den angegebenen
Bedeutungen annehmen:
[0] ⇔ 'english';
englisch
[1] ⇔ 'österreichisch';
österreichisch
[2] ⇔ 'ceský';
tschechisch
[3] ⇔ 'dansk';
dänisch
[4] ⇔ 'deutsch';
deutsch
[5] ⇔ 'magyar';
ungarisch
[6] ⇔ 'italiano';
italienisch
holländisch
[7] ⇔ 'nederlands';
[8] ⇔ 'polski';
polnisch
[9] ⇔ 'România';
rumänisch
[10] ⇔ 'slovensky';
slowenisch
[11] ⇔ 'svenska';
schwedisch
topic kann die Werte 0 bis 3 annehmen, sie bedeuten:
[0] ⇔ 'Beschreibung';
in der jeweiligen Landessprache
[1] ⇔ 'Material';
in der jeweiligen Landessprache
in der jeweiligen Landessprache
[2] ⇔ 'Methoden';
[3] ⇔ 'Partner';
in der jeweiligen Landessprache
material zeigt alle Unterrichtsmaterialien in der ausgewählten Sprache
sortiert nach Alter der Schülerzielgruppe. Dazu werden die Voreinstellungen
über eine Abfrage an eine Datenbank gesendet, die wiederum die
entsprechenden Ausgaben macht. Die Seite wird also dynamisch erzeugt.
partners ist eine Seite, die alle Projektpartner auflistet. Diese sind jedoch nicht
in einer Datenbank abgelegt sonder die Seite ist eine fertige HTML-Seite – sie ist
statisch.
SQL-Befehl:
CREATE TABLE `partners` (
`inst_nr` VARCHAR( 2 ) NOT NULL ,
`country` VARCHAR( 20 ) NOT NULL ,
`inst_name` VARCHAR( 30 ) NOT NULL ,
`inst_subname` VARCHAR( 30 ) NOT NULL ,
`inst_street` VARCHAR( 30 ) NOT NULL ,
`inst_city` VARCHAR( 30 ) NOT NULL ,
`contpers1` VARCHAR( 20 ) NOT NULL ,
`contpers2` VARCHAR( 20 ) NOT NULL ,
`contpers3` VARCHAR( 20 ) NOT NULL ,
`internet` VARCHAR( 30 ) NOT NULL ,
PRIMARY KEY ( `inst_nr` ) ) ENGINE = MYISAM ;
SQL-Befehl:
LOAD DATA LOCAL INFILE 'H:\\partners.csv' INTO TABLE
`partners` FIELDS TERMINATED BY ';' ENCLOSED BY '"'
ESCAPED BY '\\' LINES TERMINATED BY '\r\n' IGNORE 1
LINES # Betroffene Datensätze: 12
3
Informatik 13
10. Mai 2007
3 a) und b)
//NEU1 Stilvorlagen fuer die Tabelle angeben (20 Zeilen)
<style type="text/css">
<!-.tableLine
{
font-family:
Verdana,Arial,sans-serif;
font-style:
normal;
font-size:
9px;
BORDER-TOP:
#A6A6A6 1px solid;
BORDER-LEFT:
#A6A6A6 1px solid;
BORDER-BOTTOM:
#A6A6A6 1px solid;
BORDER-RIGHT:
#A6A6A6 1px solid;
}
.row_0 {
background-color:
#FFFFFF;
}
.row_1 {
background-color:
#FFCCAA;
}
-->
</style>
//NEU2
Verbindung zum Server herstellen (2 Zeilen)
$conn = mysql_connect("servername", "username","passwort") or
die(mysql_error());
$db = mysql_select_db("username", $conn) or die(mysql_error());
//NEU3
Abfrage starten (2 Zeilen)
$query = "SELECT country, inst_name, inst_subname, inst_street, inst_city,
contpers1, contpers2, contpers3, internet FROM partners ORDER BY country
ASC, inst_name DESC";
$result = mysql_query($query, $conn) or die(mysql_error());
//NEU4 Tabelle erzeugen (35 Zeilen) ?>
<table cellspacing="0" border="0" cellpadding="0">
<tr bgcolor=<?php echo('"'.$topic_color[$_SESSION['topic']].'"'); ?>
valign = "top">
<td width=10% align="top" valign="middle" height="30"><b> country</b></td>
<td width=35% align="top" valign="middle"><b> institution</b></td>
<td width=25% align="top" valign="middle"><b> contact persons</b></td>
<td width=30% align="top" valign="middle"><b> internet</b></td>
</tr>
<?php
$i = 0;
while($line = mysql_fetch_array($result)) {
print("<tr>");?>
<?php //Land ausgeben?>
<td valign=top class="row_<?PHP echo $i % 2; ?>">
<?php print("$line[0]</td>");?>
<?php //Institut ausgeben?>
<td valign=top class="row_<?PHP echo $i % 2; ?>">
<?php print("$line[1]");?><br>
<?php /*Abteilung falls vorhanden ausgeben*/
if (($line[2])!=''){print("$line[2]<br>");}?>
<?php /*Strasse ausgeben*/ print("$line[3]");?><br>
<?php /*Stadt ausgeben*/
print("$line[4]</td>");?>
<?php //1. Kontaktperson ausgeben?>
<td valign=top class="row_<?PHP echo $i % 2; ?>">
<?php print("$line[5]");?><br />
4
Informatik 13
10. Mai 2007
?>
<?php /*2. Kontaktperson ausgeben*/ print("$line[6]");?><br>
<?php /*3. Kontaktperson ausgeben*/ print("$line[7]</td>");?>
<?php //Internetadresse ausgeben?>
<td valign=top class="row_<?PHP echo $i % 2; ?>">
<a href=http://"<?php print("$line[8]");?>" target="_blank">
<?php print("$line[8]</a></td>");
print("</tr>");
$i++;
}
Screenshot:
3 c) und d)
In die Datei partners.php wird in der Tabellenkopf ersetzt durch:
<td width=10% align="top" valign="middle" height="30"><b> <input type="submit"
value="<?php echo($tab_partners_country
[$_SESSION['language_chosen']])?>"></b></td>
<td width=45% align="top" valign="middle" height="30"><b><input type="submit"
value="<?php echo($tab_partners_institution
[$_SESSION['language_chosen']])?>"></b></td>
<td width=20% align="top" valign="middle" height="30"><b><input type="submit"
value="<?php echo($tab_partners_contact_persons
[$_SESSION['language_chosen']])?>"></b></td>
<td width=25% align="top" valign="middle" height="30"><b><input type="submit"
value="<?php echo($tab_partners_internet[$_SESSION
['language_chosen']])?>"></b></td>
In die Datei language-package.php wird am Ende z.B. eingefügt:
for($x = 0; $x < 11; $x++){
$tab_partners_country[$x]='country';
$tab_partners_institution[$x]='institution';
$tab_partners_contact_persons[$x]='contact person(s)';
$tab_partners_internet[$x]='homepage';
}
$tab_partners_country[4]='Land';
$tab_partners_institution[4]='Institution';
$tab_partners_contact_persons[4]='Kontakt Person(en)';
$tab_partners_internet[4]='Homepage';
5
Herunterladen