• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Dodawanie spana do bazy danych

VPS Starter Arubacloud
+1 głos
257 wizyt
pytanie zadane 31 stycznia 2022 w PHP przez trixter310 Obywatel (1,440 p.)
zamknięte 31 stycznia 2022 przez trixter310

Witam mam pytanie odnośnie dodawania wyniku z funkcji w js do bazy dancych.

Funkcja oblicza zapotrzebowanie kaloryczne, i makroelementy, które trzeba spożyć w danym dniu.

I chciałbym teraz jakoś te wyniki dodać do bazy danych tylko niestety nie wiem jak.

wyświetla mi się błąd po obliczeniu Notice: Undefined index: bk in C:\xampp\htdocs\testjs\kalkulator.php on line 304

Notice: Undefined index: b-2g in C:\xampp\htdocs\testjs\kalkulator.php on line 305

Notice: Undefined index: b-1g in C:\xampp\htdocs\testjs\kalkulator.php on line 306

Notice: Undefined index: b-3g in C:\xampp\htdocs\testjs\kalkulator.php on line 307

 <div id="Final" class="container2" style="display: none;">

        <div id="less-text-1">
            <h5 style="padding: 1em 0; font-size: 2em;">Utrata wagi</h5>
            <p>Twój wskaźnik BMR to:</p>
            <p style="font-weight: 600; font-size: x-large;"><span id="bk-2">&nbsp</span><span> kalorii dziennie</span></p>

            <p style="padding-top: 1em;">Twoje zapotrzebowanie kaloryczne po uwzględnieniu aktywności to:</p>
            <p style="font-weight: 600; font-size: x-large;"><span id="bk">&nbsp</span><span> kalorii dziennie</span></p>
            <p style="padding-top: 2em;">Jeśli chcesz zredukować wagę powinieneś spożywać ok.:</p>
            <p style="font-weight: 600; font-size: x-large;">
            
            <?php 

                $kcal = $_GET['bk'];
                $wegiel = $_GET['b-2g'];
                $bialko = $_GET['b-1g'];
                $tluszcz = $_GET['b-3g'];
 
            if(!isset($kcal,$wegiel,$bialko,$tluszcz)){

           
            $sql = "INSERT INTO uzytkownicy VALUES (NULL, '$kcal', '$wegiel', '$bialko', '$tluszcz')";
            }
            else{
                die;
            }
        
        ?>
            <span id="b">

                &nbsp

            </span><span> kalorii dziennie</span></p>

            <p style="font-weight: 600; font-size: x-large; color: red;">-<span id="bs">&nbsp</span><span> kalorii dziennie</span></p>

   

            <h5 style="padding: 3em 0 1em 0; font-size: 1.2em;">Rozkład makroelementów dla diety na redukcje</h5>

            <div>
                <ul class="macro-list">
                    <li>
                    <p>
                        <strong>50% węglowodanów: </strong>
                        <span id="b-2k" class="SS">&nbsp</span><span> kcal = </span>
                        <span id="b-2g" class="SS">&nbsp</span><span>g</span>
                    </p>
                    </li>

                    <li>                
                    <p>
                        <strong>25% białka: </strong> 
                        <span id="b-1k" class="SS">&nbsp</span><span> kcal = </span>
                        <span id="b-1g" class="SS">&nbsp</span><span>g</span>
                    </p>
                    </li>

                    <li>
                    <p>
                        <strong>25% tłuszczy: </strong>
                        <span id="b-3k" class="SS">&nbsp</span><span> kcal = </span>
                        <span id="b-3g" class="SS">&nbsp</span><span>g</span>
                    </p>
                    </li>
                </ul>
            </div>
            <div class="button">
            <button>Zapisz zapotrzebowanie</button>
            </div>
        </div>
        
        <table id="less-text-2" style="margin-top: 15px;">
     
        </table>

  

         <div id="more-text-1">
            <h5 style="padding: 1em 0; font-size: 2em;">Zwiększenie wagi</h5>
            <p>Twój wskaźnik BMR to:</p>
            <p style="font-weight: 600; font-size: x-large;"><span id="ck-2">&nbsp</span><span> kalorii dziennie</span></p>

            <p style="padding-top: 1em;">Twoje zapotrzebowanie kaloryczne po uwzględnieniu aktywności to:</p>
            <p style="font-weight: 600; font-size: x-large;">
            
            <span id="ck">
                
            &nbsp
        
        </span><span> kalorii dziennie</span></p>
          

            <p style="padding-top: 2em;">Jeśli chcesz zwiększyć wagę powinieneś spożywać ok.:</p>
            <p style="font-weight: 600; font-size: x-large;"><span id="c">&nbsp</span><span> kalorii dziennie</span></p>
            <p style="font-weight: 600; font-size: x-large; color: red;">+<span id="cs">&nbsp</span><span> kalorii dziennie</span></p>

    


            <h5 style="padding: 3em 0 1em 0; font-size: 1.2em;">Rozkład makroelementów dla diety na masę</h5>

            <div>
                <ul class="macro-list">
                    <li>
                    <p>
                        <strong>50% węglowodanów: </strong>
                        <span id="c-2k" class="SS">&nbsp</span><span> kcal = </span>
                        <span id="c-2g" class="SS">&nbsp</span><span>g</span>
                    </p>
                    </li>

                    <li>                
                    <p>
                        <strong>25% białka: </strong> 
                        <span id="c-1k" class="SS">&nbsp</span><span> kcal = </span>
                        <span id="c-1g" class="SS">&nbsp</span><span>g</span>
                    </p>
                    </li>

                    <li>
                    <p>
                        <strong>25% tłuszczy: </strong>
                        <span id="c-3k" class="SS">&nbsp</span><span> kcal = </span>
                        <span id="c-3g" class="SS">&nbsp</span><span>g</span>
                    </p>
                    </li>
                </ul>
            </div>

            <div class="button">
            <button>Zapisz zapotrzebowanie</button>
            </div>

        </div>
     

        <table id="more-text-2">
      
        </table>

        <div id="constant-text-1">
            <h5 style="padding: 1em 0; font-size: 2em;">Utrzymanie wagi</h5>
            <p>Twój wskaźnik BMR to:</p>
            <p style="font-weight: 600; font-size: x-large;"><span id="ak-2">&nbsp</span><span> kalorii dziennie</span></p>

            <p style="padding-top: 1em;">Twoje zapotrzebowanie kaloryczne po uwzględnieniu aktywności to:</p>
            <p style="font-weight: 600; font-size: x-large;"><span id="ak">&nbsp</span><span> kalorii dziennie</span></p>
          

            <p style="padding-top: 2em;">Jeśli chcesz utrzymać wagę powinieneś spożywać ok.:</p>
            <p style="font-weight: 600; font-size: x-large;">
            
            <span id="a">&nbsp


            </span><span> kalorii dziennie</span></p>


            <h5 style="padding: 3em 0 1em 0; font-size: 1.2em;">Rozkład makroelementów dla diety na utrzymanie wagi</h5>

            <div>
                <ul class="macro-list">
                    <li>
                    <p>
                        <strong>50% węglowodanów: </strong>
                        <span id="a-2k" class="SS">&nbsp</span><span> kcal = </span>
                        <span id="a-2g" class="SS">&nbsp</span><span>g</span>
                    </p>
                    </li>

                    <li>                
                    <p>
                        <strong>25% białka: </strong> 
                        <span id="a-1k" class="SS">&nbsp</span><span> kcal = </span>
                        <span id="a-1g" class="SS">&nbsp</span><span>g</span>
                    </p>
                    </li>

                    <li>
                    <p>
                        <strong>25% tłuszczy: </strong>
                        <span id="a-3k" class="SS">&nbsp</span><span> kcal = </span>
                        <span id="a-3g" class="SS">&nbsp</span><span>g</span>
                    </p>
                    </li>
                </ul>
            </div>

            
            <div class="button">
            <button>Zapisz zapotrzebowanie</button>
            </div>

        </div>
   
<table id="constant-text-2">

            
      </table>
  
    </div>
    </section>

    </body>
</html>

 

komentarz zamknięcia: zakończone
komentarz 1 lutego 2022 przez VBService Ekspert (255,800 p.)
edycja 1 lutego 2022 przez VBService

Żeby dane pobrać np. przez $_GET musisz je "przesłać" ze strony do pliku z kodem php. Najczęściej robi się to za pomocą formularza <form>, ponieważ Ty chcesz

Dodawanie spana do bazy danych

pobrać dane z elementów html (w tym przypadku <span>), możesz spróbować przez "zasymulowanie" formularza za pomocą obiektu FormData.

 

przykład

w tym div-ie

<div id="Final" class="container2" style="display: none;">

...

</div>

zamień

<button>Zapisz zapotrzebowanie</button>

na

<div id="Final" class="container2" style="display: none;">

...

    <button id="less">Zapisz zapotrzebowanie</button>

...

    <button id="more">Zapisz zapotrzebowanie</button>

...

    <button id="constant">Zapisz zapotrzebowanie</button>
</div>

i dodaj kod js-a "na dole" kodu html.

const final = document.querySelector('#Final');
final.addEventListener('click', saveCalculation);

function saveCalculation(e) {
  if (e.target.nodeName == 'BUTTON') {
    let id_prefix;

    switch(e.target.id) {
      case 'less':     id_prefix = 'b'; break;
      case 'more':     id_prefix = 'c'; break;
      case 'constant': id_prefix = 'a'; break;
    }

    const kcal    = document.querySelector(`#${id_prefix}k`).textContent,
          wegiel  = document.querySelector(`#${id_prefix}-2g`).textContent,
          bialko  = document.querySelector(`#${id_prefix}-1g`).textContent,
          tluszcz = document.querySelector(`#${id_prefix}-3g`).textContent;

    const formData = new FormData();
    formData.append('kcal', kcal);
    formData.append('wegiel', wegiel);
    formData.append('bialko', bialko);
    formData.append('tluszcz', tluszcz);

    e.target.disabled = true;
    fetch('kalkulator_zapisz.php', {
      method: 'post',
      body: formData
    })
      .then((response) => {
      return response.text(); 
    })
      .then((text) => { 
      showResponseText(e.target, text);
    })
      .catch((error) => { 
      console.log(error);
      e.target.disabled = false;
    });

    function showResponseText(element, text) {
      const parent = element.closest('div.button');
      const p = document.createElement('P');
      p.innerHTML = text;
      parent.insertBefore(p, parent.childNodes[0]);

      setTimeout(() => {
        parent.removeChild(p);
        e.target.disabled = false;
      }, 5000);
    }
  }
}

 

fragment kou kalkulator.php po zmianach


<!--   TuTaJ reszta kodu z kalkulator.php z przed <div id="Final">    -->

<div id="Final" class="container2" style="display: none;">

        <div id="less-text-1">
          <h5 style="padding: 1em 0; font-size: 2em;">Utrata wagi</h5>
          <p>Twój wskaźnik BMR to:</p>
          <p style="font-weight: 600; font-size: x-large;"><span id="bk-2">&nbsp</span><span> kalorii dziennie</span></p>

          <p style="padding-top: 1em;">Twoje zapotrzebowanie kaloryczne po uwzględnieniu aktywności to:</p>
          <p style="font-weight: 600; font-size: x-large;"><span id="bk">&nbsp</span><span> kalorii dziennie</span></p>


          <p style="padding-top: 2em;">Jeśli chcesz zredukować wagę powinieneś spożywać ok.:</p>
          <p style="font-weight: 600; font-size: x-large;"><span id="b">&nbsp</span><span> kalorii dziennie</span></p>
          <p style="font-weight: 600; font-size: x-large; color: red;">-<span id="bs">&nbsp</span><span> kalorii dziennie</span></p>



          <h5 style="padding: 3em 0 1em 0; font-size: 1.2em;">Rozkład makroelementów dla diety na redukcje</h5>

          <div>
            <ul class="macro-list">
              <li>
                <p>
                  <strong>50% węglowodanów: </strong>
                  <span id="b-2k" class="SS">&nbsp</span><span> kcal = </span>
                  <span id="b-2g" class="SS">&nbsp</span><span>g</span>
                </p>
              </li>

              <li>                
                <p>
                  <strong>25% białka: </strong> 
                  <span id="b-1k" class="SS">&nbsp</span><span> kcal = </span>
                  <span id="b-1g" class="SS">&nbsp</span><span>g</span>
                </p>
              </li>

              <li>
                <p>
                  <strong>25% tłuszczy: </strong>
                  <span id="b-3k" class="SS">&nbsp</span><span> kcal = </span>
                  <span id="b-3g" class="SS">&nbsp</span><span>g</span>
                </p>
              </li>
            </ul>
          </div>
          <div class="button">
            <button id="less">Zapisz zapotrzebowanie</button>
          </div>
        </div>

        <table id="less-text-2" style="margin-top: 15px;">

        </table>



        <div id="more-text-1">
          <h5 style="padding: 1em 0; font-size: 2em;">Zwiększenie wagi</h5>
          <p>Twój wskaźnik BMR to:</p>
          <p style="font-weight: 600; font-size: x-large;"><span id="ck-2">&nbsp</span><span> kalorii dziennie</span></p>

          <p style="padding-top: 1em;">Twoje zapotrzebowanie kaloryczne po uwzględnieniu aktywności to:</p>
          <p style="font-weight: 600; font-size: x-large;"><span id="ck">&nbsp</span><span> kalorii dziennie</span></p>


          <p style="padding-top: 2em;">Jeśli chcesz zwiększyć wagę powinieneś spożywać ok.:</p>
          <p style="font-weight: 600; font-size: x-large;"><span id="c">&nbsp</span><span> kalorii dziennie</span></p>
          <p style="font-weight: 600; font-size: x-large; color: red;">+<span id="cs">&nbsp</span><span> kalorii dziennie</span></p>




          <h5 style="padding: 3em 0 1em 0; font-size: 1.2em;">Rozkład makroelementów dla diety na masę</h5>

          <div>
            <ul class="macro-list">
              <li>
                <p>
                  <strong>50% węglowodanów: </strong>
                  <span id="c-2k" class="SS">&nbsp</span><span> kcal = </span>
                  <span id="c-2g" class="SS">&nbsp</span><span>g</span>
                </p>
              </li>

              <li>                
                <p>
                  <strong>25% białka: </strong> 
                  <span id="c-1k" class="SS">&nbsp</span><span> kcal = </span>
                  <span id="c-1g" class="SS">&nbsp</span><span>g</span>
                </p>
              </li>

              <li>
                <p>
                  <strong>25% tłuszczy: </strong>
                  <span id="c-3k" class="SS">&nbsp</span><span> kcal = </span>
                  <span id="c-3g" class="SS">&nbsp</span><span>g</span>
                </p>
              </li>
            </ul>
          </div>

          <div class="button">
            <button id="more">Zapisz zapotrzebowanie</button>
          </div>

        </div>


        <table id="more-text-2">

        </table>

        <div id="constant-text-1">
          <h5 style="padding: 1em 0; font-size: 2em;">Utrzymanie wagi</h5>
          <p>Twój wskaźnik BMR to:</p>
          <p style="font-weight: 600; font-size: x-large;"><span id="ak-2">&nbsp</span><span> kalorii dziennie</span></p>

          <p style="padding-top: 1em;">Twoje zapotrzebowanie kaloryczne po uwzględnieniu aktywności to:</p>
          <p style="font-weight: 600; font-size: x-large;"><span id="ak">&nbsp</span><span> kalorii dziennie</span></p>


          <p style="padding-top: 2em;">Jeśli chcesz utrzymać wagę powinieneś spożywać ok.:</p>
          <p style="font-weight: 600; font-size: x-large;"><span id="a">&nbsp</span><span> kalorii dziennie</span></p>


          <h5 style="padding: 3em 0 1em 0; font-size: 1.2em;">Rozkład makroelementów dla diety na utrzymanie wagi</h5>

          <div>
            <ul class="macro-list">
              <li>
                <p>
                  <strong>50% węglowodanów: </strong>
                  <span id="a-2k" class="SS">&nbsp</span><span> kcal = </span>
                  <span id="a-2g" class="SS">&nbsp</span><span>g</span>
                </p>
              </li>

              <li>                
                <p>
                  <strong>25% białka: </strong> 
                  <span id="a-1k" class="SS">&nbsp</span><span> kcal = </span>
                  <span id="a-1g" class="SS">&nbsp</span><span>g</span>
                </p>
              </li>

              <li>
                <p>
                  <strong>25% tłuszczy: </strong>
                  <span id="a-3k" class="SS">&nbsp</span><span> kcal = </span>
                  <span id="a-3g" class="SS">&nbsp</span><span>g</span>
                </p>
              </li>
            </ul>
          </div>


          <div class="button">
            <button id="constant">Zapisz zapotrzebowanie</button>
          </div>

        </div>

        <table id="constant-text-2">


        </table>

      </div>
    </section>
    <style>
      .save-done {
        color: green;
      }
      .save-error {
        color: red;
      }
    </style>
    <script>
      const final = document.querySelector('#Final');
      final.addEventListener('click', saveCalculation);

      function saveCalculation(e) {
        if (e.target.nodeName == 'BUTTON') {
          let id_prefix;

          switch(e.target.id) {
            case 'less':     id_prefix = 'b'; break;
            case 'more':     id_prefix = 'c'; break;
            case 'constant': id_prefix = 'a'; break;
          }

          const kcal = document.querySelector(`#${id_prefix}k`).textContent,
                wegiel = document.querySelector(`#${id_prefix}-2g`).textContent,
                bialko = document.querySelector(`#${id_prefix}-1g`).textContent,
                tluszcz = document.querySelector(`#${id_prefix}-3g`).textContent;

          const formData = new FormData();
          formData.append('kcal', kcal);
          formData.append('wegiel', wegiel);
          formData.append('bialko', bialko);
          formData.append('tluszcz', tluszcz);

          e.target.disabled = true;
          fetch('kalkulator_zapisz.php', {
              method: 'post',
              body: formData
          })
          .then((response) => {
              return response.text(); 
          })
          .then((text) => { 
              showResponseText(e.target, text);
          })
          .catch((error) => { 
              console.log(error);
              e.target.disabled = false;
          });

          function showResponseText(element, text) {
              const parent = element.closest('div.button');
              const p = document.createElement('P');
              p.innerHTML = text;
              parent.insertBefore(p, parent.childNodes[0]);

              setTimeout(() => {
                  parent.removeChild(p);
                  e.target.disabled = false;
              }, 5000);
          }
        }
      }
    </script>
  </body>
</html>

 

przykładowy kod dla kalkulator_zapisz.php  (nazwa dowolna) poniżej 

 

komentarz 1 lutego 2022 przez VBService Ekspert (255,800 p.)

kalkulator_zapisz.php 

<?php
    session_start();
      
    if (!isset($_SESSION['zalogowany']))
    {
        header('Location: index.php');
        exit();
    }
  
    if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_SESSION['zalogowany_id'])) 
    {
        $kcal    = (isset($_POST['kcal']))    ? $_POST['kcal']    : null;
        $wegiel  = (isset($_POST['wegiel']))  ? $_POST['wegiel']  : null;
        $bialko  = (isset($_POST['bialko']))  ? $_POST['bialko']  : null;
        $tluszcz = (isset($_POST['tluszcz'])) ? $_POST['tluszcz'] : null;

        if (!is_null($kcal) && !is_null($wegiel) && !is_null($bialko) && !is_null($tluszcz))
        {
            save_log($_POST);

            require_once "connection.php";
            $polaczenie = new mysqli($host, $db_user, $db_password, $db_name);

            if ($polaczenie->connect_errno)
            {
                // problem z połączeniem do bazy danych
                save_log($polaczenie->connect_error);
                echo '<span class="save-error">Zapisanie do bazy danych niepowiodło się!</span>';
            }
            else
            {
                // przykładowy sql
                // polecam dodać zalogowanego użytkownika id 
                // ustawione w trakcie logowania do np.: $_SESSION['zalogowany_id']
                $sql = "INSERT INTO uzytkownicy VALUES "
                     . "(NULL, '{$_SESSION['zalogowany_id']}', '$kcal', '$wegiel', '$bialko', '$tluszcz')";
                if ($polaczenie->query($sql))
                {                    
                    echo '<span class="save-done">Dane zostały zapisane</span>';
                }
                else
                {
                    // problem z zapytaniem sql
                    save_log($polaczenie->error);
                    echo '<span class="save-error">Zapisanie do bazy danych niepowiodło się!</span>';
                }   
            }

            $polaczenie->close();
        } else {
            // problem z pobraniem danych z $_POST
            echo '<span class="save-error">Zapisanie do bazy danych niepowiodło się!</span>';
        }
    }

    function save_log($data) {
        $dump = date("Y-m-d H:i:s").PHP_EOL
              . 'User ID: '.$_SESSION['zalogowany_id'].PHP_EOL
              . var_export($data, true).PHP_EOL;
        file_put_contents('kalkulator_post.log', $dump, FILE_APPEND | LOCK_EX);
    }
?>

 

1
komentarz 1 lutego 2022 przez trixter310 Obywatel (1,440 p.)
Dziękuję bardzo
komentarz 1 lutego 2022 przez VBService Ekspert (255,800 p.)

o prostu porzucę ten projekt i będę marudził na system polskiej edukacji,

nie poddawaj się za szybko, początki zawsze są trudne. Powodzenia. smiley

komentarz 3 lutego 2022 przez trixter310 Obywatel (1,440 p.)
Gdzie się tego nauczyłeś? Bo ja chcę chłonąć wiedzę tylko nie wiem skąd najlepiej???
1
komentarz 3 lutego 2022 przez VBService Ekspert (255,800 p.)
edycja 3 lutego 2022 przez VBService

Książki głównie wydawnictwa Helion, choć nie tylko, po necie trzeba poszukać dobrze, bo można wiele ciekawych tutorial-i, czy blog-ów darmowych znaleść (nauka nie koniecznie musi kosztować wielkie pieniądze, ale ważne ile czasu na nią przeznaczysz - imho). W końcu po prostu analiza kodu ciekawych projektów z GitHub-a, czy codepen-a, analiza wypowiedzi na https://stackoverflow.com itd., pisanie własnych projektów nawet tych "malutkich", dla siebie do "szuflady", dla znajomych, w końcu komercyjnie. Znajomość j. angielskiego bardzo pomaga [ 1 ]  [ 2 ].

 

1 odpowiedź

0 głosów
odpowiedź 31 stycznia 2022 przez rafal.budzis Szeryf (85,340 p.)
wybrane 31 stycznia 2022 przez trixter310
 
Najlepsza

Najpierw musisz sprawdzić issset($_GET['bk']) a dopiero potem przypisywać do zmiennej ;) 

Możesz też ignorować błędy znakiem @ 

 

$kcal = @$_GET['bk'];

Poczytaj o rozdzielaniu warstwy HTMLa(widoku) od PHP (logiki). Warto aby były to dwa osobne pliki ;) Może być to np wzorzec MVC ;) 

komentarz 31 stycznia 2022 przez trixter310 Obywatel (1,440 p.)
dzięki za próbę pomocy i tak to nie działa chyba po prostu porzucę ten projekt i będę marudził na system polskiej edukacji, że nie uczy ciekawych, rzeczy a informatyka w liceum jest na poziomie robienia prezentacji w power point
komentarz 31 stycznia 2022 przez rafal.budzis Szeryf (85,340 p.)
Nikt nie powiedział że będzie łatwo. Gdyby poziom edukacji był większy była by większa konkurencja i i tak było by trudno o prace tak samo jak teraz ;P Pamiętaj jeśli powiesz sobie że dasz rade lub że nie dasz rady w obu przypadkach masz rację ;)

jeśli chcesz przypisać coś do zmiennej GET['bk'] powinieneś mieć w adresie strony :

http://strona.pl/index.php?bk=coś

Podobne pytania

0 głosów
1 odpowiedź 236 wizyt
pytanie zadane 30 stycznia 2022 w PHP przez trixter310 Obywatel (1,440 p.)
+1 głos
3 odpowiedzi 3,224 wizyt
pytanie zadane 2 kwietnia 2021 w PHP przez maciek3621 Nowicjusz (180 p.)
0 głosów
2 odpowiedzi 495 wizyt
pytanie zadane 21 marca 2022 w PHP przez pazo1313 Nowicjusz (140 p.)

92,980 zapytań

141,943 odpowiedzi

321,189 komentarzy

62,307 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...