-------------------------------------------------------------------------------- OPGAVE 10: Online klassificeringssystem (med 5 filer i alt) -------------------------------------------------------------------------------- KILDEKODE til rating.php: Caféer i København
\n"; echo "\t\tHer kan du se hvad andre helt almindeligt dødelige mennesker mener om byens caféer - hvad mener du?

\n"; //Der udvælges cafe_id og name fra tabellen cafe //samt rating fra tabellen rating. $strSQL = "SELECT cafe.cafe_id, name, avg(rating) AS average, count(*) AS NumberofRatings FROM cafe, rating WHERE cafe.cafe_id = rating.cafe_id GROUP BY cafe.cafe_id ORDER BY average DESC"; //SQL-kommandoen eksekveres. $result = executeSQL($strSQL); //Denne funktion sørger for, at der udskrives stjerner på sitet. function genstars($n) { if($n==0) { echo ""; } else { echo "".genstars($n - 1); } } //Der udskrives poster fra databasen i en tabel. //Der gives særlig meddelelse til bruger, //hvis der ikke er anmeldte caféer på siden. echo "\t\t\n"; echo "\t\t\n"; echo "\t\t"; echo ""; echo ""; echo "\n"; $cafeer = false; while($arrQuerydata = mysql_fetch_row($result)) { $cafeer = true; echo "\t\t\n"; //Kolonne med links til cafe_show.php udskrives fra arrayet. echo "\t\t\n"; //Kolonne med den gennemsnitlige rating udskrives vha. funktionen genstars($n). //For at funktionen kan fungere skal det gennemsnitlige tal, //der trækkes ud af databasen, rundes op til nærmeste hele tal. //Dette sker i funktionen $average. $average = round($arrQuerydata[2],0); echo "\t\t\n"; //Kolonne med antal af ratings udskrives fra arrayet. echo "\t\t\n"; //Kolonne med links til cafe_form.php udskrives. //(Alle links hedder "Anmeld café"). echo "\t\t\n"; echo "\t\t\n"; } echo "\t\t
CaféGennemsnitAntal anmeldelser
$arrQuerydata[1]"; echo genstars($average); echo "$arrQuerydata[3]Anmeld café
\n"; //Indtastningsformular, der sender bruger videre til siden //rating_add_to_db.php, hvor bruger kan indtaste sin anmeldelse. echo "\t\t
\n"; echo "\t\t

Ny café?

\n"; echo "\t\tFindes den café du ønsker at anmelde ikke på listen kan du tilføje den her.
\n"; echo "\t\tSkriv navnet på den nye café og tryk på knappen.

\n"; echo "\t\t"; echo "\t\t\n"; echo "\t\t
\n"; if (!$cafeer) { echo "\t\tDer er i øjeblikket ingen anmeldte caféer! Vær den første til at anmelde en café i byen.\n"; } //Kald til den funktion, der udskriver en HTML-footer, //som indholder body- og HTML-sluttags. writeHTMLFooter(); ?>


Tilbage til indeksside

KILDEKODE til cafe_show.php: $arrQuerydata[0]
\n"; } //Der udvælges cafe-id, rating, text (kommentar), fullname //(navn på skribent) og email (på skribent) fra tabellen rating. $strSQL = "SELECT cafe.cafe_id, name, rating, text, fullname, email FROM cafe, rating WHERE cafe.cafe_id = rating.cafe_id AND cafe.cafe_id = '$cafe_id'"; //SQL-kommandoen eksekveres. $result = executeSQL($strSQL); //Denne funktion sørger for, at der udskrives stjerner på sitet. function genstars($n) { if($n==0) { echo ""; } else { echo "".genstars($n - 1); } } //Data fra databasen hentes ud i en tabel. echo "\t\t\n"; echo "\t\t\n"; echo "\t\t"; echo ""; echo "\n"; echo "\t\t\n"; //Oplysninger fra databasen hentes ud i et array. while($arrQuerydata = mysql_fetch_row($result)) { echo "\t\t\n"; //Her hentes stjerner (rating). echo "\t\t\n"; //Her hentes kommentar. echo "\t\t\n"; //Her hentes navn på rater, hvor navn udgår link til mail. echo "\t\t
\n"; echo "\t\t\n"; } echo "\t\t
AnmeldelseKommentarAnmelder
"; echo genstars($arrQuerydata[2]); echo "\t\t$arrQuerydata[3]$arrQuerydata[4]
\n"; echo "\t\t

Tilbage til oversigten

\n"; //Kald til den funktion, der udskriver en HTML-footer, //som indholder body- og HTML-sluttags. writeHTMLFooter(); ?>


Tilbage til indeksside

KILDEKODE til cafe_form.php: $arrQuerydata[1]
\n"; } //Indtastningsformular til bruger. echo "\t\t
\n"; echo "\t\t\n"; echo "\t\tHvor mange stjerner giver du caféen på en skala fra 0 til 10, hvor 0 er elendig og 10 er super-fantastisk?
\n"; echo "\t\t


\n"; echo "\t\tVælg antal stjerner her:

\n"; echo "\t\tBegrund dit valg, hvis du har lyst:
\n"; echo "\t\t

\n"; echo "\t\tDit navn:   "; echo "
\n"; echo "\t\tDin email: "; echo "

\n"; echo "\t\t\n"; echo "\t\t\n"; echo "\t\t
\n"; echo "\t\t

Tilbage til oversigten

\n"; //Kald til den funktion, der udskriver en HTML-footer, //som indholder body- og HTML-sluttags. writeHTMLFooter(); ?>


Tilbage til indeksside

KILDEKODE til rating_add_to_db.php: Du har glemt at indtaste dit navn!\n"; echo "

Klik tilbage i browseren og prøv igen.

\n"; echo "

Tilbage til oversigt


\n"; echo "Tilbage til indeksside\n"; writeHTMLFooter(); exit; } //Funktionskald til validering af email. emailcheck($email); //Bruger redirigeres. header("Location:http://www.it-c.dk/~lsp/w2/oevelse10/rating.php?cafe_id=$cafe_id"); //Der indsættes data i tabellen rating. $strSQL = "INSERT INTO rating ( cafe_id, text, fullname, email, rating) VALUES ( '$cafe_id', '$text', '$fullname', '$email', '$rating')"; //SQL-kommandoen eksekveres. $result = executeSQL($strSQL); //Funktion til validering af email. function emailcheck($email) { $theresults= ereg("^[^@]+@[^@]+\.[^@ \.]+$", $email); if ($theresults) { } else { echo "

Din email-adresse er ikke indtastet korrekt!

\n"; echo "

Klik tilbage i browseren og prøv igen.

\n"; echo "

Tilbage til oversigt


\n"; echo "Tilbage til indeksside\n"; writeHTMLFooter(); exit; } } //Der udskrives en footer. writeHTMLFooter(); exit; //Her tømmes bufferen, der aktiverer header-funktionen. ob_end_clean() ?> KILDEKODE til cafe_add_to_db.php: Du har ikke indtastet en café!
\n"; echo "Tilbage til oversigt
\n"; writeHTMLFooter(); exit; } //Café-navn hentes ud af databasen. $strSQL = "SELECT name FROM cafe WHERE name = '$name'"; //SQL-kommandoen eksekveres. $result = executeSQL($strSQL); //Resultatet af kommandoen gemmes i et array. $arrQuerydata = mysql_fetch_row($result); //Har bruger indtastet en allerede eksisterende café //gives der meddelelse herom. while ($name == $arrQuerydata[0]) { echo "

Caféen findes allerede på listen!


\n"; echo "Tilbage til oversigt
\n"; writeHTMLFooter(); exit; } //Hvis bruger indtaster en ny café oprettes den på listen //(cafe-navnet lægges i cafe-tabellen). if($name != $arrQuerydata[0]) { $strSQL = "INSERT INTO cafe (name) VALUES ('$name')"; //SQL-kommandoen eksekveres. $result = executeSQL($strSQL); } //Cafe-id hentes fra databasen for at blive ført med videre til den side, //der viser filen cafe_form.php, hvor bruger kan indtaste sin anmeldelse. $strSQL = "SELECT cafe_id FROM cafe WHERE name = '$name'"; //SQL-kommandoen eksekveres. $result = executeSQL($strSQL); //Resultatet af kommandoen gemmes i et array og udskrives. while($arrQuerydata = mysql_fetch_row($result)) { //Bruger får besked på at vente et øjeblik mens han/hun videresdirigeres //til den side hvor han/hun kan indtaste sin anmeldelse. echo "Vent et øjeblik...\n"; //Her foregår selve videredirigeringen, hvor cafe-id'et bliver ført med //over til filen cafe_form.php. echo "";} //Alternativt kunne man vælge at skrive følgende ud på skærmen... //echo "Du har valgt at tilføje

$name

på listen over caféer i København.\n"; //echo "Klik her for at anmelde caféen.

\n";} //MEN, hvis bruger indtaster en café og vælger at gå tilbage //til cafeoversigten i stedet for at klikke på linket, der //fører ham til indtastningsformularen for anmeldelser, så //opstår der en fejl. På cafe-oversigten er caféen ikke anført. //Det er den derimod i databasen! Skriver bruger den samme //café igen vil han/hun derfor få besked om, at caféen allerede //findes på listen! Det giver kun anledning til forvirring. echo "


Tilbage til indeksside

"; //Der udskrives en footer. writeHTMLFooter(); ?>