| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
Keskustelut - PHP - Vaihtokauppa? Oletko PHP- ja MySQL-guru ja haluatko oppia ranskaa? [2 / 2]Sivu: 1, 2 « edellinen sivu editoitu: 10:35 3.6.10 eis 10:32 3.6.10 ihmettelen kirjoitti: Eisille vastaukseksi, että haluan oppia - kuten kirjoitin - "jotta osaisin tehdä tietokantapohjaisia nettisivuja ja niitä varten päivityslomakkeen" ja ensi alkuun blogin. Tarkoitus on toki oppia perusasiat kunnolla - joten haluan ymmärtää, miksi juuri noin - mutta varsinaisesti töihin alalle en havittele ja melko perustoiminnallisuudet riittävät ainakin alkuunsa. Blogi, erityisesti hyvin tehtynä, ei oikein tipahda enää perustoiminnallisuuden piiriin. Siinäkin on paljon asioita mitä on pakko miettiä, jos sen haluaa tehdä "oikein" - niinkuin TapaniS:n koodista on käynyt ilmi, jo hyvin lyhyeen koodinpätkään saa tietämättään aikaiseksi hyvin paljon kyseenalaisia ratkaisua. Sen lisäksi, et ole tosiaan vielä maininnut taustoistasi - onko (X)HTML jo hallussa? Jos ei, HTML:n opettelu tulisi hoitaa ennen PHP:n puolelle siirtymistä. TapaniS, ei nyt millään pahalla, mut jos omakin koodaus on vielä alkumetreillä, voi helposti saada aikaan enemmän haittaa kuin hyötyä uudelle oppijalle. editoitu: 12:24 3.6.10 TapaniS 12:24 3.6.10 eis kirjoitti: TapaniS, ei nyt millään pahalla, mut jos omakin koodaus on vielä alkumetreillä, voi helposti saada aikaan enemmän haittaa kuin hyötyä uudelle oppijalle. Juu, hyvä, että täällä ollaan tarkkana, jos jotakin arveluttavaa meinaa mennä jakeluun. Tietysti oppimisen kannalta voi olla tehokasta, jos koodista löytyy virheitä, joihin aloittelija voi helposti sortua ja nämä sitten tarkasti ruoditaan kohdilleen hyvien perusteluiden kera :-) Tuo syntymäpäiväesimerkki on aika yksinkertainen (yksi taulu). Mielellään kuitenkin itsekin tutkisin edistyneempien tekemiä sovelluksia, jos joku voisi jonkun vaativamman sovelluksen selostaa (mistä ehkä löytyisi blogiin tarvittavia "eväitä"). ihmettelen 12:43 3.6.10 Kaikki apu on hyväksi. Suurkiitos. Olen jo lueskellut esimerkkiä, mutta en ole ehtinyt kokeilla. Toivonmukaan viikonloppuna. Olisi kyllä motivoivaa kokeilla suoraan sellaisia blogiin liittyviä juttuja. Tausta on se, että osaan html:ää ja css:ää niin, että osaan tehdä hyvännäköiset sivut. (Niitä olen pystynyt opiskelemaan yksin.) Muusta koodauksesta en tiedä. Mulla on PHP ja MySQL-opas, jota olen lueskellut, mutta itseopiskelu on mudassa tarpomista ja turhauttavaa. Domain on siis ja siinä php- ja mysql-tuki. Olen jo onnistunut luomaan tietokannan ja lisäämään siihen rivin komennoilla phpmyadminissä :-) Nyt pitäisi voida tehdä se nettisivun kautta... Olen tyssännyt siihen, että olen tehnyt pelkän html-lomakepohjan. Ainoa php-toiminto, mihin olen toistaiseksi pystynyt, on lomakkeelle syötettyjen tietojen näyttäminen, mutta eihän siitä ole mitään iloa. Sitten seuraavaksi pitäisi osata tehdä nettisivu, jolle sisältö "kutsutaan" tietokannasta. Blogin muodossa nyt ensin. Lebe80 16:18 3.6.10 Lomakkeella syötettyjen tietojen näyttämisen sijaan sinun pitäisi nyt sitten sijoittaa tiedot mysql-lauseeseen, joka lisää rivin tietokantaan. Eli ihan simppeli homma. editoitu: 10:30 5.6.10 TapaniS 07:49 4.6.10 No laitanpa tähän vielä viimeisen osion syntymäpäiväsovellukseen. Tässä on jonkin verran php-koodia, joka voi tuntua sekavalta. Ajatus kuitenkin on, että ensin valitaan ikäryhmä sekä haun laajuus. Optio myös merkkipäivien tulostusta varten. Toteutus on tehty timestampin avulla (integer-arvo sekunneissa tietystä päivästä lähtien) . Ongelma on vuodenvaihde. Miten vuodet lasketaan, jos vuosi vaihtuu? Nyt on ratkaistu siten, että jos "nyt" on vuoden lopussa, vuosiin lisätään yksi (ensi vuoden arvo). Muutoin ei tehdä mitään. Sisennykset heittelevät, pahoittelen. Editoitaessa näyttää hyvältä, mutta lopputulos ei. Tabulointi sotkee? Edit: Hienosäätöä lähtöarvojen antamisen suhteen ... (4.6.10 12:24) Edit2: Muutettu tulostusjärjestys: (4.6.10 22:39) Edit3: Uusi listaus tulosta.php: (5.6.10 10:30) Tulostukseen lisätty rivi "Tänään" ja oletuksen ei tulosteta juhlapäiviä Pääsivu: PHP <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Syntymäpäivälistaus</title> </head> <body topmargin="50" leftmargin="50"> <b>Ystävien syntymäpäivälistaus: </b> <?php date_default_timezone_set('Europe/Helsinki'); $yearNow = date("Y"); $monthNow = date("m"); $dayNow = date("d"); echo " "; // tyhjä välilyönti echo $yearNow."-".$monthNow."-".$dayNow; echo " "; // tyhjä välilyönti 2 kpl $page = $_SERVER['PHP_SELF']; $newpage = "".$page."?UUSI"; echo "[<a href=$newpage>Uusi ystävä</a>]"; echo "<br/>"; // echo "<br/><br/>"; require("db1.con"); require("code.php"); if (!isset($yhteys)) connectToDB(); if ((isset ($_GET["UUSI"])) || (isset ($_GET["TALTEEN"]))) { require("uusi.php"); } elseif ((isset ($_GET["HAKUNRO"])) || (isset ($_GET["MUUTOS"]))) { require("muutos.php"); } else { // Tulostetaan tiedot require("tulosta.php"); } ?> </body> </html> tulosta.php: PHP <?php if (!isset ($page)) { // jos tälle sivulle tullaan suoraan die("Virhe: sivun lataaminen epäonnistui! </body></html>"); } if (!isset($yhteys)) connectToDB(); // Tulostetaan tiedot // Esitäytetään valitut arvot lomakkeelle: $SelectMonth = array(); $SelectWeek = array(); $SelectIka = array(); $AgeCode = 0; // oletusarvot $MonthCode = 0; $WeekCode = 1; for($i = 0; $i <= 5; $i++) { $SelectMonth[$i] = ""; $SelectWeek[$i] = ""; $SelectIka[$i] = ""; if((isset($_POST["IKA"])) && ($_POST["IKA"] == $i)) { $SelectIka[$i] = "selected"; $AgeCode = $i; } if((isset($_POST["KK"])) && ($_POST["KK"] == $i)) { $SelectMonth[$i] = "selected"; $MonthCode = $i; } if((isset($_POST["VKO"])) && ($_POST["VKO"] == $i)) { $SelectWeek[$i] = "selected"; $WeekCode = $i; } } if(!isset($_POST["KK"])) $SelectMonth[0] = "selected"; // oletusarvot, ensimmäinen lataus if(!isset($_POST["VKO"])) $SelectWeek[1] = "selected"; if(!isset($_POST["IKA"])) $SelectIka[0] = "selected"; $SelectJUHLA = false; // oletusarvo if ((isset ($_POST["JUHLA"])) && ($_POST["JUHLA"] == "JUHLA")) $SelectJUHLA = true; ?> <br/> <form method="POST" action="<?php echo $page?>?TULOSTA"> Ikäryhmä: <select name="IKA"> <option value="0" <?php echo $SelectIka[0]; ?> >Kaikki</option> <option value="1" <?php echo $SelectIka[1]; ?> >alle 18 v</option> <option value="2" <?php echo $SelectIka[2]; ?> >18-30 v</option> <option value="3" <?php echo $SelectIka[3]; ?> >31-45 v</option> <option value="4" <?php echo $SelectIka[4]; ?> >46-64 v</option> <option value="5" <?php echo $SelectIka[5]; ?> >yli 65 v</option> </select> <input type="checkbox" name="JUHLA" value="JUHLA" <?php if ($SelectJUHLA) print 'checked'; ?> >Tulosta merkkipäivät: (50v, 60v, ...) <br/><br/> Syntymäpäivien etäisyys tästä päivästä: <table border="1"> <tr><td>KK</td> <td><select name="KK"> <option value="0" <?php echo $SelectMonth[0]; ?> >±0</option> <option value="1" <?php echo $SelectMonth[1]; ?> >±1</option> <option value="2" <?php echo $SelectMonth[2]; ?> >±2</option> <option value="3" <?php echo $SelectMonth[3]; ?> >±3</option> <option value="4" <?php echo $SelectMonth[4]; ?> >±4</option> <option value="5" <?php echo $SelectMonth[5]; ?> >±5</option> </select></td> <td> </td> <td>VKO</td> <td><select name="VKO"> <option value="0" <?php echo $SelectWeek[0]; ?> >±0</option> <option value="1" <?php echo $SelectWeek[1]; ?> >±1</option> <option value="2" <?php echo $SelectWeek[2]; ?> >±2</option> <option value="3" <?php echo $SelectWeek[3]; ?> >±3</option> <option value="4" <?php echo $SelectWeek[4]; ?> >±4</option> <option value="5" <?php echo $SelectWeek[5]; ?> >±5</option> </select></td> <td><input type="submit" value=" GO "></td> </tr> </table> <br/> <?php $NowSec = mktime(12, 0, 0, $monthNow, $dayNow, $yearNow); // aikaleima tänään klo 12:00:00 $WeekSec = 60*60*24*7; $MonthSec = 60*60*24*30; $YearSec = 60*60*24*365; $DeltaSec = ($MonthCode * $MonthSec) + ($WeekCode * $WeekSec); $AgeToBe = 0; // alustetaan muuttuja $LAUSE = "select NRO, NIMI, SPAIVA, DATE_FORMAT(SPAIVA, '%m %d') AS KEY1 from FRIEND order by KEY1"; $TULOS = mysql_query($LAUSE) or die("Virhe: syntymäpäivien haku epäonnistui! </body></html>"); $KPL = mysql_num_rows($TULOS); echo "<table border=\"1\"> <tr> <td>Nimi</td> <td>Syntymäpäivä</td> <td>Täyttää</td> </tr>"; $PrintedTodayRow = false; $StopForTodayRow = false; $PrintTodayRow = "<tr> <td ALIGN=center>- - - - - Tänään - - - - -</td> <td> </td> <td ALIGN=center> </td> </tr>"; for ($K=0; $K < $KPL; $K=$K+1) { $PrintMe = false; $T=mysql_fetch_row($TULOS); $NRO=$T[0]; $NIMI=$T[1]; $SPAIVA=$T[2]; list($year, $month, $day) = explode('-', $SPAIVA); if (($month == $monthNow) && ($day >= $dayNow) && (!$PrintedTodayRow)) { $StopForTodayRow = true; } elseif (($month > $monthNow) && (!$PrintedTodayRow)) { $StopForTodayRow = true; } $DateSec = mktime(12, 0, 0, $month, $day, $yearNow); $AgeToBe = $yearNow - $year; if (abs($NowSec-$DateSec+$YearSec) <= $DeltaSec) { // nyt vuoden alussa, syntymäpäivä lopussa $AgeToBe = $yearNow - $year; $PrintMe = true; } if (abs($NowSec-$DateSec-$YearSec) <= $DeltaSec) { // nyt vuoden lopussa, syntymäpäivä vuoden alussa $AgeToBe = $AgeToBe + 1; $PrintMe = true; } if (abs($NowSec-$DateSec) <= $DeltaSec) { // päivät lähekkäin $AgeToBe = $yearNow - $year; $PrintMe = true; } if ($AgeToBe == 50 || $AgeToBe == 60 || $AgeToBe == 65 || $AgeToBe == 70 || $AgeToBe == 75 || $AgeToBe == 80 || $AgeToBe == 85 || $AgeToBe == 90 || $AgeToBe == 95 || $AgeToBe == 100 || $AgeToBe == 105 || $AgeToBe == 110) { $AgeCellData = "<font style=\"BACKGROUND-COLOR: #F7F8E0\"> <b>$AgeToBe v.!</b> </font>"; if ($SelectJUHLA) $PrintMe = true; } else $AgeCellData = "$AgeToBe v."; switch ($AgeCode){ case 0: $LowLimit=-10; $UpLimit=1500; break; case 1: $LowLimit=-10; $UpLimit=17; break; case 2: $LowLimit=18; $UpLimit=30; break; case 3: $LowLimit=31; $UpLimit=45; break; case 4: $LowLimit=46; $UpLimit=64; break; case 5: $LowLimit=65; $UpLimit=1500; break; default: break; } if (($AgeToBe < $LowLimit) || ($AgeToBe > $UpLimit)) $PrintMe = false; if ($StopForTodayRow) { print $PrintTodayRow; $PrintedTodayRow = true; $StopForTodayRow = false; } if ($PrintMe) { print "<tr> <td><a href=\"index.php?HAKUNRO=$NRO\">$NIMI</a></td> <td>$year-$month-$day</td> <td ALIGN=center>$AgeCellData</td> </tr>"; } } print '</table>'; ?> |
![]() Haku
|