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

require w require, czyli wczytywanie pliku we wczytanym pliku

Mały hosting, OGROMNE możliwości
0 głosów
355 wizyt
pytanie zadane 2 stycznia 2017 w PHP przez Q_Nick Mądrala (5,010 p.)

Piszę sobie prosty system w php i chciałem zrobić plik core.php posiadający najważniejsze funkcje, między innymi łączenie z bazą danych. W tej funkcji łączącej jest kolejny odnośnik do pliku konfiguracyjnego. Skrypt po załadowaniu na stronę wypluwa mi komunikat o tym że są niezdefiniowane zmienne w pliku core.php. Gdy wywołuje tylko plik core.php wszystko działa jak powinno. Podaje tutaj kod skryptów, może ktoś lepiej zrozumie o co chodzi.

Plik index.php(połączenie nie działa):


<?php
    require_once 'core/core.php';
 
    db_connect();
     
    $a=mysqli_query($mysqli, "select * from users");
    while($r=mysqli_fetch_assoc($a))
    {
        echo $r['user'];
    }
     
?>

Plik core.php (połączenie działa)

<?php
    
    function db_connect()
    {
        require_once 'config/config.php';
        $mysqli=mysqli_connect($CONFIG['db_host'],$CONFIG['db_user'],$CONFIG['db_pass'],$CONFIG['db_name']);
        if(!$mysqli)
        {
            echo "Nie można połączyć z bazą danych";
            exit;
        }
    }
    
    
?>

i plik config.php

<?php
    
$CONFIG['db_host']='localhost';
$CONFIG['db_user']='root';
$CONFIG['db_pass']='';
$CONFIG['db_name']='baza';
    
?>

 

2 odpowiedzi

+3 głosów
odpowiedź 3 stycznia 2017 przez maly Nałogowiec (37,190 p.)
wybrane 3 stycznia 2017 przez Q_Nick
 
Najlepsza

Skrypt po załadowaniu na stronę wypluwa mi komunikat o tym że są niezdefiniowane zmienne w pliku core.php

Fajnie że podzieliłeś się znami tym komunikatem.

 

W funkcji db_connect zmienna $mysqli jest lokalna(nie widoczna poza tą funkcją);

komentarz 3 stycznia 2017 przez Q_Nick Mądrala (5,010 p.)
edycja 3 stycznia 2017 przez Q_Nick

A jak zrobić aby była widoczna?

z komunikatami sobie poradziłem. Okazało się że powoduje je zrobiona przy poszukiwaniu błędu wywołanie tej funkcji w pliku core.php

PS. Już sobie poradziłem. Dziękuje za uwagę laugh

0 głosów
odpowiedź 3 stycznia 2017 przez Assasz Nałogowiec (30,460 p.)
Możliwe, że jest jakiś konflikt ze ścieżkami dostępu, ale tu nie pomogę bez znajomości struktury folderów.

Czy nie łatwiej byłoby wpisać parametry do połączenia z bazą bezpośrednio zamiast umieszczać ich w zmiennych w oddzielnym pliku i includować do kolejnego pliku z samą funkcją połączenia? Może się nie znam, ale po co tyle komplikować? A, i jeszcze zapomniałeś o nawiasach przy funkcji exit w pliku core.php, tak mi się w oczy rzuciło.
komentarz 3 stycznia 2017 przez Q_Nick Mądrala (5,010 p.)
A prawda, zgubiłem nawiasy, dzięki.

Co do katalogów to są na pewno poprawne, bo sprawdzałem i rozrysowałem to chyba z 20 razy. Nie chce umieszczać danych bazy w pliku core.php, bo zależy mi na łatwej edycji tych parametrów, nawet gdy cały system miał by być obsługiwany przez niedoświadczoną osobę.

Podobne pytania

0 głosów
1 odpowiedź 945 wizyt
0 głosów
2 odpowiedzi 297 wizyt
pytanie zadane 28 maja 2022 w PHP przez el maccho Użytkownik (620 p.)
0 głosów
1 odpowiedź 332 wizyt
pytanie zadane 30 listopada 2017 w PHP przez fyww Obywatel (1,450 p.)

93,715 zapytań

142,629 odpowiedzi

323,260 komentarzy

63,257 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...