Felhasználói eszközök

Eszközök a webhelyen


oktatas:web:angularjs:angularjs_gyakorlas

< AngularJS

AngularJS gyakorlás

  • Szerző: Sallai András
  • Copyright © Sallai András, 2021
  • Licenc: GNU Free Documentation License 1.3

Háromszög területe

Háromszög területnek számítása alapból és magasságból.

index.html
<!DOCTYPE html>
<html lang="hu"ng-app="alkalmazas">
<head>
    <meta charset="utf-8">
    <title>Háromszög</title>
    <script src="lib/angular.js"></script>
    <script src="script.js"></script>
</head>
<body ng-controller="alkalmazasCtrl">
    <h1>Háromszögterület</h1>    
 
    <label>Alap</label>
    <input type="text" ng-model="alap"><br>
    <label>Magasság</label>
    <input type="text" ng-model="magassag"><br>
    <button ng-click="szamit($event)">Számít</button><br>
    <label>Terület</label>
    <input type="text" ng-model="terulet">
 
</body>
</html>
script.js
var alkalmazas = angular.module("alkalmazas", []);
alkalmazas.controller("alkalmazasCtrl", function($scope){
   $scope.szamit = function(evt) {
       var alap = Number($scope.alap);
       var magassag = Number($scope.magassag);
       var terulet = alap*magassag/2;
       console.log(terulet);
       $scope.terulet = terulet;
   }
});

Todo

Tömb lekérése

index.html
<!DOCTYPE html>
<html lang="hu" ng-app="app">
<head>
    <meta charset="utf-8">
    <title>Todo</title>
 
</head>
<body ng-controller="appCtrl">
    <h1>Todo</h1>
 
    <ul>
        <li ng-repeat="todo in todos">
            {{todo}}
        </li>
    </ul>
 
    <script src="lib/angular.js"></script>
    <script src="script.js"></script>
 
</body>
</html>
script.js
var app = angular.module('app', []);
app.controller('appCtrl', function($scope, $http){
    getTodos($scope, $http);
});
 
var getTodos = function($scope, $http) {
    $http.post('php/kuld.php')
    .then(function(response){
        $scope.todos = response.data;
    });
}
kuld.php
<?php
 
echo '["első", "második", "harmadik"]';

Objektum tömbben

Dolgozó lekérése

index.html
<!DOCTYPE html>
<html lang="hu" ng-app="app">
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body ng-controller="appCtrl">
    <h1>Dolgozók</h1>
 
    <table>
        <tr ng-repeat="dolgozo in dolgozok">
            <td>{{dolgozo.nev}}</td>
            <td>{{dolgozo.telepules}}</td>
            <td>{{dolgozo.fizetes}}</td>
        </tr>
    </table>
 
    <script src="lib/angular.js"></script>
    <script src="script.js"></script>
 
</body>
</html>
script.js
var app = angular.module('app', []);
app.controller('appCtrl', function($scope, $http) {
   lekerDolgozok($scope, $http); 
});
 
var lekerDolgozok = function($scope, $http) {
    $http.post('php/kuld.php')
    .then(function(response){
        $scope.dolgozok = response.data;
    });
}
kuld.php
<?php
 
echo <<<EOT
[
    {
        "nev" : "Nagy János",
        "telepules" : "Szolnok",
        "fizetes" : "8540000"
    },
    {
        "nev" : "Pete Mária",
        "telepules" : "Szeged",
        "fizetes" : "7540000"
    },
    {
        "nev" : "Random Katalin",
        "telepules" : "Szolnok",
        "fizetes" : "8440000"
    }
]
 
EOT;

bDolgozok

A dolgozók adatbázisból töltődnek automatikusan. Egy dolgozó hozzáadható az adatbázishoz.

Tervek

bdolgozok/
 |-database/
 |-draft/
 |-src/
 |  |-lib/angular.js
 |  |-php/
 |  |  |-includes/
 |  |  |   |-config.php
 |  |  |   |-database.php
 |  |  |   `-mariadb.php
 |  |  |-hozzaad.php
 |  |  `-kuld.php
 |  |-index.html
 |  `-script.js
 `-test/
bdolgozok.sql
CREATE DATABASE bdolgozok;
 
CREATE TABLE dolgozok (
    az INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    nev VARCHAR(50),
    telepules VARCHAR(50),
    fizetes DOUBLE
);
 
INSERT INTO dolgozok
(az, nev, telepules, fizetes)
VALUES
(1, 'Nagy János', 'Szolnok', 8540000),
(2, 'Pete Mária', 'Szeged', 7540000),
(3, 'Random Katalin', 'Szolnok', 8440000),
(5, 'Pente László', 'Szeged', 7560000),
(6, 'Demó János', 'Hatvan', 8950000);

HTML és CSS

index.html
<!DOCTYPE html>
<html lang="hu" ng-app="app">
<head>
    <meta charset="utf-8">
    <title>bDolgozók</title>
    <link rel="stylesheet" href="style.css">
</head>
<body ng-controller="appCtrl">
    <div id="container">
        <h1>Dolgozók</h1>
        <table>
            <tr>
                <td>Név</td>
                <td>Település</td>
                <td>Fizetés</td>
            </tr>
            <tr>
                <td><input type="text" ng-model="nev"></td>
                <td><input type="text" ng-model="telepules"></td>
                <td><input type="text" ng-model="fizetes"></td>
            </tr>
        </table>
        <button ng-click="hozzaadDolgozo()">Hozzáad</button>
        <table id="dolgozok">
            <tr ng-repeat="dolgozo in dolgozok">
                <td>{{dolgozo.nev}}</td>
                <td>{{dolgozo.telepules}}</td>
                <td>{{dolgozo.fizetes}}</td>
            </tr>
        </table>
    </div>
 
    <script src="lib/angular.js"></script>
    <script src="script.js"></script>
 
</body>
</html>
style.css
#container {
    margin: 5%;
    padding: 15px;
    background-color: orange;
}
 
input {
    width: 70px;
}
 
table#dolgozok {
    border-collapse: collapse;
}
 
table#dolgozok, table#dolgozok td {
    margin-top: 5px;
    border-width: 1px;
    border-color: black;
    border-style: solid;
}

JavaScript

script.js
var app = angular.module('app', []);
app.controller('appCtrl', function($scope, $http) {
   lekerDolgozok($scope, $http);
   $scope.hozzaadDolgozo = function(evt) {
       var nev = $scope.nev;
       var telepules = $scope.telepules;
       var fizetes = $scope.fizetes;
       var dolgozo = {
        nev: nev, 
        telepules: telepules, 
        fizetes: fizetes
        };
       $scope.dolgozok.push(dolgozo);       
       hozzaadDolgozo($scope, $http, dolgozo);
   }
});
 
var lekerDolgozok = function($scope, $http) {
    $http.post('php/kuld.php')
    .then(function(response){
        $scope.dolgozok = response.data;
    });
}
 
var hozzaadDolgozo = function($scope, $http, dolgozo) {
    $http.post('php/hozzaad.php', {
        data: dolgozo
    })
    .then(function(response){
        console.log(response.data);
    });
}

PHP

php/kuld.php
<?php
 
include 'includes/database.php';
 
echo json_encode(lekerDolgozok());
php/hozzaad.php
<?php
 
include 'includes/database.php';
 
$json_data = file_get_contents('php://input');
$data = json_decode($json_data);
$dolgozo = $data->data;
 
echo hozzaadDolgozo($dolgozo);
php/includes/database.php
<?php
 
include 'mariadb.php';
 
function lekerDolgozok() {
    $conn = connectDb();
    $sql = <<<EOT
    select * from dolgozok
EOT;
 
    $res = mysqli_query($conn, $sql);
    $data_r = array();
    while($row = mysqli_fetch_assoc($res)) {
        array_push($data_r, $row);
    }
    closeDb($conn);
    return $data_r;
}
 
function hozzaadDolgozo($dolgozo) {
    $conn = connectDb();
    if(!$conn) {
        error_log('Nincs kapcsolat');
    }
    $sql = <<<EOT
    insert into dolgozok
    (nev, telepules, fizetes)
    values
    (?, ?, ?)
EOT;
 
    $beszurasOk = false;
    if($stmt = mysqli_prepare($conn, $sql)) {
        mysqli_stmt_bind_param($stmt, "ssd", 
            $dolgozo->nev, 
            $dolgozo->telepules,
            $dolgozo->fizetes
            );
        mysqli_stmt_execute($stmt);
        error_log(mysqli_stmt_error($stmt));
        mysqli_stmt_close($stmt);
        $beszurasOk = true;
    }else {
        error_log('Hiba a beszúrás során!');
    }
    closeDb($conn);
    return $beszurasOk;
}
php/includes/mariadb.php
<?php
include 'config.php';
 
function connectDb() {
    global $db;
    $conn = mysqli_connect(
        $db['host'], 
        $db['user'], 
        $db['pass'],
        $db['name']
        );
    if(!$conn) {
        die('Hiba! A kapcsolódás sikertelen!');
    }
    return $conn;
}
 
function closeDb($conn) {
    mysqli_close($conn);
}
php/includes/config.php
<?php
 
$db['host'] = 'localhost';
$db['user'] = 'bdolgozok';
$db['pass'] = 'titok';
$db['name'] = 'bdolgozok';
oktatas/web/angularjs/angularjs_gyakorlas.txt · Utolsó módosítás: 2021/03/06 21:05 szerkesztette: admin