Skip navigation

Olvasók felvétele és listázása

olvasok.php

tt is egy egyszerű űrlapról van szó, amely nagyon hasonlít az előzőekben látott könyvfelviteli oldalra. Az újdonság az, hogy a születési dátumot lenyílólisták segítségével választjuk ki. Ez ugyan csökkenti a hibák számát, de nem oldja meg teljesen a problémát, mert nem nézi külön a február hónapot és a 30-31 napos hónapok különbségét. Két oka van annak, hogy ezt a megoldást választjuk a születési dátum megadására. Az egyik, hogy így biztosan "jó" dátumformátumot tudunk továbbítani az adatbázis felé, másrészről pedig áttekintjük a lenyíló lista elem kezelését. A lenyíló listákat itt egy számlálásos ismétléses vezérléssel töltjük fel, ez PHP kódrészletet tartalmaz. A változó nevét (amelyen átvisszük a kiválasztott értéket), a <select > tag-ben kell megadni, az értékét pedig az <option > tag value attribútumából kapja meg. az <option> </option> címkék között szereplő tartalom a lenyíló lista egy elemeként fog megjelenni. Az űrlapon megadott adatokat az olvasofelvitel.php fájl fogja feldolgozni.

Az oldal alján itt is kilistázzuk a felhasználókat. Ehhez készítettünk egy olvasolistatLeker() függvényt a db_fuggvenyek.php fájlba. Ez a függvény az olvasókat tartalmazó eredménylistát ad vissza, amelynek sorait a mysqli_fetch_assoc() függvénnyel asszociatív tömbként elemzünk ki. A születési dátumoknál ahhoz, hogy "szépen" jelenjen meg a détum, át kell formázni. Erre használjuk a date_format() és a date_create() PHP függvényeket. A date_format() függvényben adjuk meg a formátum-sztringet, vagyis hogy hogyan jelenítsük meg a dátum egyes elemeit.

<?php
include_once('db_fuggvenyek.php');
include_once('menu.php');
?>
<!DOCTYPE HTML>
<HTML>
<HEAD>
    <meta http-equiv="content-type" content="text/html; charset=UTF8" >
    <style>
    label {
        margin: 5px;
        padding: 5px;
        text-align: left;
        display: inline-block;
        min-width: 120px;
    }
    input {
        margin: 5px;
        padding: 5px;
        text-align: left;
        display: inline-flex;
        vertical-align: bottom;
    }
    </style>
</HEAD>
<BODY>

<hr/>
     <?php echo menu();?>
<hr/>

<h1>Olvasók felvitele</h1>

<form method="POST" action="olvasofelvitel.php" accept-charset="utf-8">
    <label>Olvasójegy: </label>
    <input type="text" name="olvasojegy" />
    <br>
    <label>Név: </label>
    <input type="text" name="nev" />
    <br>
    <label>Születési dátum: </label>
    <select name="szulev" />
    <?php
        for ($i=1900; $i<2100; $i++) {
            echo '<option value="'.$i.'">'.$i.'</option>';
        }
    ?>
    </select> év
    <select name="szulhonap" />
    <?php
        for ($i=1; $i<12; $i++) {
            echo '<option value="'.$i.'">'.$i.'</option>';
        }
    ?>
    </select> hónap
    <select name="szulnap" />
    <?php
        for ($i=1; $i<31; $i++) {
            echo '<option value="'.$i.'">'.$i.'</option>';
        }
    ?>
    </select> nap
    <br>
    <label>Lakcím: </label>
    <input type="text" name="lakcim" />
    <br>
    <input type="submit" value="Elküld" />
</form>

<hr/>
<h1>Olvasók listája</h1>

<table border="1">
   <tr>
   <th>Olvasójegy</th>
   <th>Név</th>
   <th>Születési dátum</th>
   <th>Lakcím</th>
   </tr>

    <?php
        $olvasok = olvasolistatLeker(); // ez egy eredményhalmazt ad vissza
       
        // soronként dolgozzuk fel az eredményt
        // minden sort egy asszociatív tömbben kapunk meg
        while( $egySor = mysqli_fetch_assoc($olvasok) ) {
            echo '<tr>';
            echo '<td>'. $egySor["olvasojegy"] .'</td>';
            echo '<td>'. $egySor["nev"] .'</td>';
            echo '<td>'. date_format(date_create($egySor["szuldatum"]), 'Y. m. d.') .'</td>';
            echo '<td>'. $egySor["lakcim"] .'</td>';
            echo '</tr>';
        } 

    mysqli_free_result($olvasok); // töröljük a listát a memóriából
    ?>
</table>

</BODY>
</HTML>