Tehtävä 1 Toteuta PHP-lomakkeella kolmen vastuksen rinnankytkennän laskeminen. Muuta aiemmin oppaan muuttujat&vakiot kohdassa tehtävässä 2 tehty PHP-koodaus lomakkeenkäsittelijäksi jolle lähetetään www-sivulle toteutetuista lomakekentistä kerätyt tiedot.
LOMAKKEET
form
<) saatuja tietoja.Lomake-elementit sijoitetaan www-sivulle haluttuihin paikkohin ohjeteksteineen. Lomakekentiin kirjoitetut tiedot ja/tai valinnat lähetetään sivulta ns lomakkeenkäsittelijälle. Lomakkeenkäsittelijä voi olla (kuten alla) erillisenä tiedostona tai lomakkeenkäsittely koodi voi olla itse www-sivulla. Lomakkeiden tiedot voidaan kirjoittaa tiedostoon tai lähettä sähköpostiin.
Lomake-esimerkki(tervetuloa.php)
/* Lomake-esimerkki */ <!DOCTYPE HTML> <html lang="en"> <html> <head> <meta charset="UTF-8"> <title>TESTISIVU</title> </head> <body> <form action="tervetuloa.php" method="post"> Nimi: <input type="text" name="nimi"><br> Sähköposti: <input type="text" name="sahkoposti"><br> <input type="submit" value="Lähetä"> </form> </body> </html>
Lomakkeen-käsittelijän koodaus(tervetuloa.php)
/* Lomakkeen-käsittelijän esimerkki */ <!DOCTYPE HTML> <html lang="en"> <html> <head> <meta charset="UTF-8"> <title>TESTISIVU</title> </head> <body> Tervetuloa <?php echo $_POST[" nimi"]; ?> Sähköpostisi on: <?php echo $_POST["sahkoposti"];?> </body> </html>
Lomakkeen-esimerkki Get metodilla(tervetuloa_getilla.php)
/* Lomake-esimerkki Get metodilla */ <!DOCTYPE HTML> <html lang="en"> <html> <head> <meta charset="UTF-8"> <title>TESTISIVU</title> </head> <body> <form action="tervetuloa_getilla.php" method="get"> Nimi: <input type="text" name="nimi"><br> Tunnus: <input type="text" name="tunnus"><br> Salasana: <input type="text" name="salasana"><br> <input type="submit" value="Lähetä"> </form> </body> </html>
Lomakkeen-käsittelijän esimerkki Get metodilla(tervetuloa_getilla.php)
/* Lomakkeen-käsittelijän esimerkki */ <!DOCTYPE HTML> <html lang="en"> <html> <head> <meta charset="UTF-8"> <title>TESTISIVU</title> </head> <body> Nimi: <?php echo $_GET["nimi"]; ?><br> Tunnus: <?php echo $_GET["tunnus"]; ?><br> Salasana: <?php echo $_GET["salasana"]; ?> </body> </html>
Tehtävä 2 Toteuta PHP-lomakkeella kolmen vastuksen rinnankytkennän laskeminen Muuta aiemmin oppaan Toistolauseet kohdassa tehtävässä 3 tehty PHP-koodaus lomakkeenkäsittelijäksi. Lomakkeenkäsittelijälle lähetetään www-sivulle toteutetuista lomakekentistä kerätyt tiedot.
Lomake esimerkki pakollisilla kentillä.
<?php /*Muuttujat ja niiden nollaaminen */ $nimiVirhe = $nimiVirhe = $sukupuoliVirhe = $wwwVirhe = ""; $nimi = $email = $sukupuoli = $kommentti = $wwwsivu = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { if (empty($_POST["nimi"])) { $nimiVirhe = "Annettu nimi ei kelpaa"; } else { $nimi = test_input($_POST["nimi"]); /* tarkistetaan onko annetussa nimessä vai kirjaimia ja välilyöntejä */ if (!preg_match("/^[a-åA-Å ]*$/",$nimi)) { $nimiVirhe = "Kirjoita vain kirjaimia ja välilyöntejä !"; } } if (empty($_POST["email"])) { $nimiVirhe = "Annettu email ei kelpaa"; } else { $email = test_input($_POST["email"]); /* tarkistetaan onko email:n oikeassa muotoinen */ if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $nimiVirhe = "Väärä email, kokeile uudelleen."; } } if (empty($_POST["wwwsivu"])) { $wwwsivu = ""; } else { $wwwsivu = test_input($_POST["wwwsivu"]); /* www-sivun osoitteen tarkistaminen */ if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)POISTA RIVINVAIHTO TÄSTÄ [-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$wwwsivu)) { $wwwVirhe = "Väärä www-sivu, www.nimi.pääte"; } } if (empty($_POST["kommentti"])) { $kommentti = ""; } else { $kommentti = test_input($_POST["kommentti"]); } if (empty($_POST["sukupuoli"])) { $sukupuoliVirhe = "Sukupuoli jäi valitsematta."; } else { $sukupuoli = test_input($_POST["sukupuoli"]); } } function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } ?> <h2>PHP-lomake esimerkki</h2> <p><span class="error">* pakolliset kentät.</span></p> <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> Nimi: <input type="text" name="nimi" value="<?php echo $nimi;?>"> <span class="error">* <?php echo $nimiVirhe;?></span> <br><br> email: <input type="text" name="email" value="<?php echo $email;?>"> <span class="error">* <?php echo $nimiVirhe;?></span> <br><br> www-sivu: <input type="text" name="wwwsivu" value="<?php echo $wwwsivu;?>"> <span class="error"><?php echo $wwwVirhe;?></span> <br><br> Kommentti: <textarea name="kommentti" rows="5" cols="40"> <?php echo $kommentti;?></textarea> <br><br> Sukupuoli: <input type="radio" name="sukupuoli" <?php if (isset($sukupuoli) && $sukupuoli=="nainen") echo "checked";?> value="nainen">nainen <input type="radio" name="sukupuoli" <?php if (isset($sukupuoli) && $sukupuoli=="mies") echo "checked";?> value="mies">mies <span class="error">* <?php echo $sukupuoliVirhe;?></span> <br><br> <input type="submit" name="submit" value="Lähetä"> </form> <!-- Alla lomakkeelle syötettyjen tietojen näyttö --> <?php echo "<h2>Antamasi tiedot olivat:</h2>"; echo $nimi; echo "<br>"; echo $email; echo "<br>"; echo $wwwsivu; echo "<br>"; echo $kommentti; echo "<br>"; echo $sukupuoli; ?>
PHP-lomake esimerkki
* pakolliset kentät.
Antamasi tiedot olivat:
AIKA JA SEN KÄSITTELY
/* kuinka monta tuntia on kulunut 1.1.1970 lähtien alla olevan ohjelman käynnistys hetkeen */ <!DOCTYPE html> <html lang="en"> <html> <head> <meta charset="UTF-8"> <title>Nykypäivä laskuri</title> </head> <body> <h1>Nykypäivä</h1> <?php echo "Tänään on " . date("Y/m/d") . "<br>"; echo "Tänään on " . date("Y.m.d") . "<br>"; echo "Tänään on " . date("Y-m-d") . "<br>"; echo "Tänään on " . date("l"); ?> </body> </html>
Tehtävä 3 Kirjoita tähän tehtävä myöhemmin
Seuraava esimerkki näyttää kellonajan ja päivämäärän ohjelman käynnistyshetkellä, mukavaahan olisi toki jos kellonaika päivittyisi.
#include <stdio.h> #include <time.h> int main () { time_t curtime; time(&curtime); printf("Current time = %s", ctime(&curtime)); getch(); return(0); }
Tehtävä 4 Kirjoita tähän tehtävä myöhemmin
Seuraavassa esimerkissä käytetään "viivettä" ohjelman lopetuksessa. Viivettä voi käyttää esimerkiksi pitämään pieniä testiohjelmia hetken avoinna.
Dev C++ -kääntäjä ei tunnista delay()-funktiota eli viivettä, vastaavan tyyppinen on sleep()-funktio. Funktion sulkeisiin kirjoitetaan aika millisekuntteina.
#include <stdio.h> int main () { printf("Vaihtoehto getch-funktiolle on sleep-funktio.\n"); printf("Sulkeissa aika on millisekuntteina (n 3 s).\n"); sleep(3000); return(0); }
Tehtävä 5 Kirjoita tähän tehtävä myöhemmin
BITTIOPERAATTORIT
SATUNNAISLUVUT
Seuraava esimerkki löytyi Ohjelmointiputka.net-sivustolta .
#include <stdio.h> #include <time.h> #include <stdlib.h> /* satunnaislukua varten */ int main(void) { int i; time_t siemen; time(&siemen); /* alla, alustetaan satunnaislukugeneraattori */ srand(siemen); /* tulostetaan kymmenen satunnaislukua väliltä 0 - 9 */ for (i = 0; i < 10; i++) { printf("%i\n", rand() % 10); } getch(); }
Tehtävä 6 Kirjoita tähän tehtävä myöhemmin
NÄPPÄIMISTÖN ascii- ja scan-koodit
Seuraavassa esimerkki-ohjelmassa hyödynnetään yllä olevaa ohjelmaa.
#include
#include int main() { signed char ascii; signed char scan; float Rkok, R1, R2, R3; do{ printf("\n"); printf("Valitse jokin seuraavista:\n"); printf(" Ohjelman lopetus - Esc-painike\n "); printf("Kolme vastusta sarjassa - F1-painike\n "); printf("Kolme vastusta rinnan - F2-painike\n "); printf("Valintasi: "); ascii=getch(); scan = 0; if (ascii==0) { scan=getch(); } else{ scan=0; } fflush(stdin); if(scan==59) /* Jos valittu F1-painike */ { printf("\n\nVastuksia sarjassa\n"); printf(" Anna R1: "); scanf("%f",&R1); printf(" Anna R2: "); scanf("%f",&R2); printf(" Anna R3: "); scanf("%f",&R3); Rkok=R1+R2+R3; printf(" Rkok sarjassa: %f\n\n",Rkok); } if(scan==60) /* Jos valittu F1-painike */ { printf("\n\nVastuksia rinnan\n"); printf(" Anna R1: "); scanf("%f",&R1); printf(" Anna R2: "); scanf("%f",&R2); printf(" Anna R3: "); scanf("%f",&R3); Rkok=1/((1/R1)+(1/R2)+(1/R3)); printf(" Rkok rinnan: %f\n\n",Rkok); } fflush(stdin); } while(ascii!=27); /* Jos valittu Esc-painike */ return 0; }
Tehtävä 7 Kirjoita tähän tehtävä myöhemmin