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

jak wstawić kod PHP w kilku miejscach?

VPS Starter Arubacloud
+1 głos
637 wizyt
pytanie zadane 20 października 2020 w PHP przez napoludniestad.pl Użytkownik (960 p.)

Hej mam pytanie czy jeśli mój kod wygląda tak, to czy zawsze muszę wstawiać połączenie? Pewnie da się to zamienić na bardziej krótki kod - może mi ktoś podpowiedzieć jak to zamienić na bardziej funkcjonalny z wyjaśnieniem czemu tak?

 

<div class="jumbotron jumbotron-fluid"><!--zawartość główna-->
  <div class="container-fluid">
    
    <div id="wyksztalcenie">
      <header>
        <h1>Garść informacji o moim <span style="color:yellow">wykształceniu</span>...</h1>
      </header>
    </div>

    <div id="wyksztalcenie-tekst">
    <p style="text-indent: 7%">
    <?php
require_once "connect.php";
 
// Create connection
$conn = @new mysqli($host, $db_user, $db_password, $db_name); // baza z serwerem - podpięty plik connect 
 
 
// Check connection
if ($conn->connect_errno!=0) {
     
    echo "Error".$conn->connect_errno."opis".$conn->connect_error;
}
else
{
    $sql = "SELECT * FROM pozostale WHERE id=3"; //kod sql i zapytanie
	
    $rezultat = @$conn->query($sql);
	if ($rezultat->num_rows>0){
		while ($row=$rezultat->fetch_assoc()){
   // wyświetla dokładne informacje jakie chcesz mieć na stronie 
   
   echo $row ["tekst"]; // wyświetla dokładne informacje jakie chcesz mieć na stronie 
  }
}
      //echo "udało się połączyć";
      $conn->close();
}
?>
    </p>
    </div>
      
    <div id="umiejetnosci">
      <section>
        <h2>...oraz o moich <span style="color:yellow">umiejętnościach</span>!</h2>
      </section>
    </div>  

    <div id="umiejetnosci-tekst">
    <p style="text-indent: 7%">
    <?php
require_once "connect.php";
 
// Create connection
$conn = @new mysqli($host, $db_user, $db_password, $db_name); // baza z serwerem - podpięty plik connect 
 
 
// Check connection
if ($conn->connect_errno!=0) {
     
    echo "Error".$conn->connect_errno."opis".$conn->connect_error;
}
else
{
    $sql = "SELECT * FROM pozostale WHERE id=4"; //kod sql i zapytanie
	
    $rezultat = @$conn->query($sql);
	if ($rezultat->num_rows>0){
		while ($row=$rezultat->fetch_assoc()){
   // wyświetla dokładne informacje jakie chcesz mieć na stronie 
   
   echo $row ["tekst"]; // wyświetla dokładne informacje jakie chcesz mieć na stronie 
  }
}
      //echo "udało się połączyć";
      $conn->close();
}
?>
    </p>
    </div>

  </div>
</div><!--koniec zawartości głównej--> 

Dopiero stawiam małe kroczki w PHP - proszę o wyrozumiałość :)

2 odpowiedzi

+1 głos
odpowiedź 20 października 2020 przez VBService Ekspert (251,210 p.)
edycja 20 października 2020 przez VBService

Można  wszystko wrzucić do pliku : connect.php, w Moim przykładzie nazwałem go: db_functions.php, bo zawiera więcej niż tylko połaczenie do bazy. wink

Twój plik, zgaduję: index.php

<php
    // na początku pliku
    require_once "db_functions.php";
?>
<div class="jumbotron jumbotron-fluid"><!--zawartość główna-->
  <div class="container-fluid">
     
    <div id="wyksztalcenie">
      <header>
        <h1>Garść informacji o moim <span style="color:yellow">wykształceniu</span>...</h1>
      </header>
    </div>
 
    <div id="wyksztalcenie-tekst">
    <p style="text-indent: 7%">
<?php
   // wyświetla dokładne informacje jakie chcesz mieć na stronie 
   $info = getTextFromOthers(3); // id=3
   foreach ($info as $row) {
        echo $row ["tekst"];
   }
?>
    </p>
    </div>
       
    <div id="umiejetnosci">
      <section>
        <h2>...oraz o moich <span style="color:yellow">umiejętnościach</span>!</h2>
      </section>
    </div>
 
    <div id="umiejetnosci-tekst">
    <p style="text-indent: 7%">
<?php
   // wyświetla dokładne informacje jakie chcesz mieć na stronie 
   $info = getTextFromOthers(4); // id=4
   foreach ($info as $row) {
        echo $row ["tekst"];
   }
?>
    </p>
    </div>
 
  </div>
</div><!--koniec zawartości głównej-->

db_functions.php

<?php
    define('HOST','localhost');
    define('USER','root');
    define('PASS','');
    define('DB','nazwa_bazy_danych');

    function connect($conn = null) {
        if ($conn == null) {
            $conn = mysqli_connect(HOST,USER,PASS,DB) or die("Błąd połączenia z bazą danych!");
            return $conn;
        } else {
            $conn->close();
        }
    }

    function getTextFromOthers($id) {
        $conn = connect();

        $sql = 'SELECT tekst FROM pozostale WHERE id = ?';
        $stmt = $conn->prepare($sql);
        $stmt->bind_param('i', $id);
        $stmt->execute();

        $res = $stmt->get_result();
        $stmt->close();
        connect($conn);

        return $res->fetch_all(MYSQLI_ASSOC);
    }
?>

 

komentarz 20 października 2020 przez napoludniestad.pl Użytkownik (960 p.)

@VBService 

dziękuję królu złoty! właśnie o coś takiego mi chodziło! Chcę unikać niepotrzebnego kodu tam gdzie ma być struktura, mam tylko pytanie nie będzie to kolidowało jeśli używam connect.php też do innej tablicy? Tak z ciekawości pytam - choć pewnie nie

komentarz 20 października 2020 przez VBService Ekspert (251,210 p.)
edycja 20 października 2020 przez VBService

Ta część db_functions.php odpowiada temu co Ty masz w connect.php

    define('HOST','localhost');
    define('USER','root');
    define('PASS','');
    define('DB','demo_game_level_system');
 
    function connect($conn = null) {
        if ($conn == null) {
            $conn = mysqli_connect(HOST,USER,PASS,DB) or die("Błąd połączenia!");
            return $conn;
        } else {
            $conn->close();
        }
    }

Możesz utworzyć nową funkcję (dodać kolejną): tu masz przykład db_functions.php

z innymi funkcjami 

<?php
    define('HOST','localhost');
    define('USER','root');
    define('PASS','');
    define('DB','demo_game_level_system');

    function connect($conn = null) {
        if ($conn == null) {
            $conn = mysqli_connect(HOST,USER,PASS,DB) or die("Błąd połączenia!");
            return $conn;
        } else {
            $conn->close();
        }
    }

    function showUserInfo($user_info) {
        foreach ($user_info as $row) {
            $rows = '<tr>'
                    .'<td>'.$row['id'].'</td>'
                    .'<td>'.$row['level'].'</td>'
                    .'<td>'.$row['xp_all'].'</td>'
                    .'<td id="xp_current_db">'.$row['xp_current'].'</td>'
                    .'<td id="xp_needed">'.$row['xp_needed'].'</td>'
                    .'</tr>';
        }

        return $rows;
    }

    function getUserInfo($id) {
        $conn = connect();

        $sql = 'SELECT id, level, xp_all, xp_current, xp_needed FROM users WHERE id = ?';
        $stmt = $conn->prepare($sql);
        $stmt->bind_param('i', $id);
        $stmt->execute();

        $res = $stmt->get_result();
        $stmt->close();
        connect($conn);

        return $res->fetch_all(MYSQLI_ASSOC);
    }

    function setUserInfo($key, $value, $id) {
        $conn = connect();

        $sql = 'UPDATE users SET '.$key.' = ? WHERE id = ?';
        $stmt = $conn->prepare($sql);
        $stmt->bind_param('ii', $value, $id);
        $stmt->execute();

        $stmt->close();
        connect($conn);
    }
?>

a tu przykład ich zastosowania

<?php
    session_start();
    define('XP__NEEDED','100');

    //unset($_SESSION['id_user']);

    if (isset($_COOKIE["PHPSESSID"]) && isset($_SESSION['id_user'])) {
        if ($_SERVER["REQUEST_METHOD"] == "POST") {
            try {
                require_once('db_functions.php');
                $user_info = getUserInfo($_SESSION['id_user']);
                $xp_current = $_POST['xp_current'];

                foreach ($user_info as $data) {
                    $user_level = $data['level'];
                    $xp_all = $data['xp_all'];
                    $xp_needed = $data['xp_needed'];
                }

                if ($xp_current >= $xp_needed) {
                    $user_level += 1;
                    setUserInfo('level', $user_level, $_SESSION['id_user']);

                    $xp_all += $xp_current;
                    setUserInfo('xp_all', $xp_all, $_SESSION['id_user']);

                    $xp_current -= $xp_needed;
                    setUserInfo('xp_current', $xp_current, $_SESSION['id_user']);

                    $xp_needed = XP__NEEDED * $user_level;
                    setUserInfo('xp_needed', $xp_needed, $_SESSION['id_user']);
                }

                $user_info = getUserInfo($_SESSION['id_user']);
                $rows = showUserInfo($user_info);
            } catch (Exception $e) {
                echo $e->getMessage();
            }
        }
    } else {
        // Symulacja zalogowania się użytkownika do Twojego systemu
        // Uzytkownik zalogował się za pomocą formularza - prawidłowo
        $_SESSION['id_user'] = 1;

        try {
            require_once('db_functions.php');
            $user_info = getUserInfo($_SESSION['id_user']);
            $rows = showUserInfo($user_info);
        } catch (Exception $e) {
            echo $e->getMessage();
        }
    }
?>

<!-- Demo -->
<!DOCTYPE html>
<html>
    <head lang="pl">
        <meta charset="utf-8">

    <style>
        :root {
            --board-width: 20vw;
        }
        * {
            box-sizing: border-box;
        }
        thead tr {
            background-color: gray;
            color: white;
            font: 1em monospace;
        }
        thead th {
            padding: 0.5em;
        }
        tbody td {
            padding: 0.2em;
            text-align: center;
        }
        .game-board {
            width: var(--board-width);
            margin-top: 2em;
            padding: 0.2em;
            font: 1.1em monospace;
        }
        .game-board .playground {
            font: 0.8em bold monospace;
            padding: 0.2em;
            color: green;
            text-align: center;
        }
        .game-board .play-time {
            font-size: 4.1em;
        }
        .game-board button {
            width:  var(--board-width);
            cursor: pointer;
            box-shadow: 2px 2px 1px grey;
            font: 1.2em monospace;
            font-variant: small-caps;
        }
        .game-board button:active {
            transform: translateY(1px);
            box-shadow: none;
        }
    </style>
    </head>
    <body>
        <table>
            <thead>
                <tr><th colspan="5">Dane z bazy danych</th></tr>
                <tr>
                    <th>Użytkownik</th>
                    <th>Poziom</th>
                    <th>Punkty zdobyte</th>
                    <th>Punkty obecne</th>
                    <th>Punkty następny poziom</th>
                </tr>
            </thead>
            <tbody>
                <?php echo $rows; ?>
            </tbody>
        </table>
        <div class="game-board">
            <div>Punkty: <span id="user_points"></span></div>
            <div id="playground" class="playground play-time">0</div>
            <div><button id="play">Graj</button></div>
        </div>
        <form id="form" action="index.php" method="post">
            <input type="hidden" id="xp_current" name="xp_current" value="">
        </form>
    <script>
        const xp_current_db = document.getElementById('xp_current_db');
        const xp_needed = document.getElementById('xp_needed');
        const user_points = document.getElementById('user_points');
        const playground = document.getElementById('playground');
        const button_play = document.getElementById('play');

        const XP__NEEDED = xp_needed.textContent * 1;

        (setUserPoints = function(points = null) {
            if (points == null) {
                user_points.textContent = xp_current_db.textContent;
            } else {
                let calculate_user_points = user_points.textContent * 1;
                calculate_user_points += points;
                user_points.textContent = calculate_user_points;

                if (calculate_user_points >= XP__NEEDED) {
                    button_play.disabled = true;
                    playground.classList.remove('play-time');
                    playground.innerHTML = 'Gratulacje !<br>Przechodzisz na następny poziom.';

                    setTimeout(sendData, 2000, calculate_user_points);
                }
            }
        }).call(this)

        button_play.addEventListener('click', () => {
            const min = 1;
            const max = XP__NEEDED;
            const result = Math.floor(Math.random() * (max - min + 1) ) + min;
            playground.textContent = result;
            setUserPoints(result);
        })

        function sendData(points) {
            const form = document.getElementById('form');
            const input_xp_current = document.getElementById('xp_current');
            input_xp_current.value = points;
            form.submit();
        }
    </script>
    </body>
</html>

 

komentarz 20 października 2020 przez napoludniestad.pl Użytkownik (960 p.)

zrobiłem krócej i prościej - akurat w tym jednym miejscu nich będzie więcej kodu php - po prostu zamieniłem kod połączenia - dla mnie jest to bardziej czytelne niż to co wstawiłeś - choć pewnie twoje jest bardziej poprawne - nie mniej jest to mała strona a ja jestem początkujący więc to tak zostawię, abym był w stanie rozumieć kod i to co się w nim dzieje (po prostu powoli będę robił kolejne projekty i stopniowo się uczył jak i co działa

tak to wygląda

<div class="jumbotron jumbotron-fluid"><!--zawartość główna-->
  <div class="container-fluid">

    <header>
    <div class="title-main">
    <h1>Doświadczenie <span style="color:yellow">zawodowe</span></h1>
    </div>
    </header>
    <table class="table-responsive-sm table-striped table-dark table-sm"><!--zawartość tabeli-->
      <thead>
        <tr class="bg-warning text-center">
          <th scope="col">Firma</th>
          <th scope="col">Miejsce</th>
          <th scope="col">Okres</th>
          <th scope="col">Zakres obowiązków</th>
        </tr>
      </thead>
      <tbody>

<?php
require_once "connect.php";
 
// Create connection
$conn = mysqli_connect(HOST,USER,PASS,DB);
 
// Check connection
if ($conn->connect_errno!=0) {
     
    echo "Error".$conn->connect_errno."opis".$conn->connect_error;
}
else
{
    $sql = "SELECT * FROM doswiadczenie ORDER BY id DESC"; //kod sql i zapytanie
	
    $rezultat = @$conn->query($sql);
	if ($rezultat->num_rows>0){
		while ($row=$rezultat->fetch_assoc()){
   // wyświetla dokładne informacje jakie chcesz mieć na stronie 
   
   echo $row ["miejsce_pracy"]; // wyświetla dokładne informacje jakie chcesz mieć na stronie 
  }
}
      //echo "udało się połączyć";
      $conn->close();
}
?>




      </tbody>
    </table><!--koniec zawartości tabeli-->
      
  
  </div>
</div><!--koniec zawartości głównej--> 

 

komentarz 20 października 2020 przez VBService Ekspert (251,210 p.)

Twój cyrk, Twoje małpy wink, jak najbardziej możesz zrobić po swojemu,  to co zaprezentowałem Tobie to tylko, sugestia.laugh 

komentarz 20 października 2020 przez napoludniestad.pl Użytkownik (960 p.)
no niby tak XD na razie staram się ogarnąć php na tyle abym mógł wstawiać dane z bazy mySQL - nie robię żadnego sklepu gdzie trzeba się logować tylko chcę zbudować zwykłe strony z informacjami (coś w stylu bloga lub dziennika) na początek pracy jako front-endowiec powinno to wystarczyć w CV oraz do budowania serwisów z większa ilością danych - np mam swoją stronę napoludniestad.pl - i jako że była to moja pierwsza to ma tak kuriozalną ilość błędów i niepoprawnie napisanego kodu że aż wstyd XD dla tego przygotowuje się do drugiego podejścia - napisania tej same strony albo podobnej z tym że: będzie napisana już w farmeworku Angular (choć nic jeszcze z niego nie potrafię :/ ) z SASS zamiast CSS, bootstrap (tu już trochę doświadczenia mam i wiem co robię), z użyciem SQL i PHP właśnie (chyba że polecasz zamiast w PHP to iść w np Ruby on Rails - słyszałem że bardziej się nadaje do większych witryn) - podpowiesz coś? Jakieś sugestie? np jaki tutorial z Angulara?
0 głosów
odpowiedź 20 października 2020 przez Mavannkas Bywalec (2,290 p.)
A nie zrozumiałem pytania.  Zrób sobie w osobnym pliku połączenie zaincluduj je na początku i powinno być git. Przez cały plik masz dostep do all zmiennych
komentarz 20 października 2020 przez napoludniestad.pl Użytkownik (960 p.)

tak samo zapytanie działa i wgl - chodzi mi o to czy muszę mieć za każdym razem ten kod

    <?php
require_once "connect.php";
 
// Create connection
$conn = @new mysqli($host, $db_user, $db_password, $db_name); // baza z serwerem - podpięty plik connect 
 
 
// Check connection
if ($conn->connect_errno!=0) {
     
    echo "Error".$conn->connect_errno."opis".$conn->connect_error;
}
else
{
    $sql = "SELECT * FROM pozostale WHERE id=4"; //kod sql i zapytanie
	
    $rezultat = @$conn->query($sql);
	if ($rezultat->num_rows>0){
		while ($row=$rezultat->fetch_assoc()){
   // wyświetla dokładne informacje jakie chcesz mieć na stronie 
   
   echo $row ["tekst"]; // wyświetla dokładne informacje jakie chcesz mieć na stronie 
  }
}
      //echo "udało się połączyć";
      $conn->close();
}
?>

czy może da się jakoś skrócić go żeby nadal wykorzystywał ta baze danych ale wskazywać mu inne id? Czy muszę ten kod powtarzać zawsze?

komentarz 20 października 2020 przez Mavannkas Bywalec (2,290 p.)
Po prostu nie zamykaj połączenia za każdym razem. Powinno zadziałać. Na początku pliku połącz się z bazą
komentarz 20 października 2020 przez Mavannkas Bywalec (2,290 p.)
Ewentualnie w twoim wypadku od razu oppytaj bazę o co chcesz zapisz to w zmiennych i zamknij polączenie
komentarz 20 października 2020 przez napoludniestad.pl Użytkownik (960 p.)
no właśnie po drodze jest kod HTML/bootstrap - nie mam pojęcia jak go "wyciągnąć" żeby PHP go nie łapał - tyle i aż tyle ;) czy zrobić to za pomocą tablicy? czy jeszcze inaczej? właśnie stawiam pierwsze kroki i nie mam pojęcia jak przeplatać kod żeby wyświetlał tylko zmienną...

Podobne pytania

0 głosów
1 odpowiedź 256 wizyt
0 głosów
1 odpowiedź 202 wizyt
pytanie zadane 16 sierpnia 2016 w SQL, bazy danych przez Stiuil06 Nowicjusz (160 p.)
0 głosów
1 odpowiedź 138 wizyt
pytanie zadane 31 grudnia 2018 w PHP przez Jokii Nowicjusz (240 p.)

92,453 zapytań

141,262 odpowiedzi

319,086 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...