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

Pobranie danych z bazy danych [php,Ajax,js]

VPS Starter Arubacloud
+2 głosów
203 wizyt
pytanie zadane 18 stycznia 2021 w PHP przez ZeRo_ Nowicjusz (180 p.)
zmienione kategorie 19 stycznia 2021 przez ScriptyChris

Witam, zależy mi na pobraniu atrybutów z bazy danych, przesortowaniu ich oraz wyświetleniu na stronie. Niestety nic co powinno być pobrane z bazy danych nie wyświetla się. Nie wiem czy wina jest po stronie kodu php czy też Ajaxa.
Serwer apach jak i baza danych jest ustawiona na porcie 80 (znalazłem w internecie gdzieś taką informacje że tak musi być).
W konsoli nie wyśletlają się żadne błędy. Połącznie z bazą danych przebiega bezproblemowo.

Kod poniżej:
1)

<DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>SKLEP</title>
        
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
       

    </head>
<body>
</br>
</br>
<div class="jumbotron jumbotron-fluid" style="background-image: url(image/books-1099067_1920.jpg)">

  <div class="container">
  <blockquote class="blockquote text-right align-text-bottom">
    <p class="mb-0 font-weight-bold text-white">"Pokój bez książek jest jak ciało bez duszy."</p>
    <footer class="blockquote-footer font-italic text-white">Cyceron</footer>
  </div></blockquote>
</div>
  <nav class="navbar navbar-inverse navbar-fixed-top">
    <div class="container-fluid">
      <div class="navbar-header">
        <a class="navbar-brand" href="#">Sklep</a>
      </div>
      <ul class="nav navbar-nav navbar">
        <li><a href="#"><span class="glyphicon glyphicon-home"></span> Strona główna</a></li>
        <li><a href="#"><span class="glyphicon glyphicon-book"></span> Książki</a></li>
        <li><a href="#"><span class="glyphicon glyphicon-file"></span> Regulamin</a></li>
        <li><a href="#"><span class="glyphicon glyphicon-phone-alt"></span> Kontakt</a></li>
      </ul>
      <ul class="nav navbar-nav navbar-right">
        <li><a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-shopping-cart"></span><span class="badge">0</span> Koszyk</a>
          <div class="dropdown-menu" style="width:400px">
            <div class="panel panel-warning">
              <div class="panel-heading">
                <div class="row">
                  <div class="col-md-3">Numer</div>
                  <div class="col-md-3">Tytuł</div>
                  <div class="col-md-3">Okładka książki</div>
                  <div class="col-md-3">Cena w zł</div>
                </div>  
              </div>
              <div class="panel-body"></div>
              <div id="koszyk_ksiazka">
              <!--<div class="row">
              <div class="col-md-3">Numer</div>
              <div class="col-md-3">Tytuł</div>
              <div class="col-md-3">Okładka książki</div>
              <div class="col-md-3">Cena w zł</div>
              </div>-->
              </div>

              <div class="panel-footer"></div>
            </div>
          </div>
        </li>
        <li><a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-user"></span> Zaloguj się</a>
          <ul class="dropdown-menu">
            <div style="width:300px;">
              <div class="panel-danger">
                <div class="panel-heading">Logowanie</div>
                <div class="panel-heading">
                <form onsubmit="return false" id="login">
                <div class="panel-heading">
                  <label for="email">Email</label>
                  <input type="email" class="form-control" id="email" required/>
                  <label for="haslo">Hasło</label>
                  <input type="haslo" class="form-control" id="haslo" required/>
                  <p><br/></p>
                  <a href="#" style="color:white; list-style:none;">Zapomniałeś hasła?</a><input type="submit" class="btn btn-success" style="float:right;">
                </form>
                </div>
              <div class="panel-footer" id="error_msg"></div>
              </div>
            </div>
          </ul>
        </li>
        <li><a href="#"><span class="glyphicon glyphicon-user"></span> Zarejestruj się</a></li>
      </ul>
    </div>
                <div>
  
  </nav> <!-- Koniec navbar -->

  <br/>
  <div class="conteiner" style="background:white">
    <div class="row">
      <div class="col-md-1"></div>
      <div class="col-md-2 col-sx-12">
      
      <div id="get_wydawnictwo">
        
      </div>

      <div id="get_rodzaje">
        
      </div>

      <!--<div class="nav nav-pills nav-stacked">
        <li class="active"><a href="#">Rodzaje literatury</a></li>
        <li class="nav-item"><a class="nav-link" href="#">Proza</a></li>
        <li class="nav-item"><a class="nav-link" href="#">Kryminał</a></li>
        <li class="nav-item"><a class="nav-link" href="#">Literatura faktu</a></li>
        <li class="nav-item"><a class="nav-link" href="#">Biografia</a></li>
        <li class="nav-item"><a class="nav-link" href="#">Fantastyka</a></li>
        <li class="nav-item"><a class="nav-link" href="#">Literatura młodzieżowa</a></li>
        <li class="nav-item"><a class="nav-link" href="#">Proza obca</a></li>
        <li class="nav-item"><a class="nav-link" href="#">Literatura obyczajowa</a></li>
        <li class="nav-item"><a class="nav-link" href="#">Literatura obca</a></li>
      </div> -->
      </div> <!-- koniec div col-md-2 -->
    
      <div class="col-md-8 col-sx-12">
        <div class="row">
          <div class="col-md-12 col-sx-12" id="ksiazka_msg">
          </div>
        </div>
        <div class="panel panel-info">
          <div class="panel-heading">Książki</div>
          <div class="panel-body">
              <div id="get_ksiazka">
              <!-- -->
              </div>
            <!---
            <div class="col-md-4">
              <div class="panel panel-info">
                <div class="panel-heading">Tytuł</div>
                <div class="panel-body">
                    
                    <a href="#" data-toggle="tooltip" title="Opis!"><img src="fotki_ksiazki/hashtag.jpg" style="height:250px"></a>
                </div>
                <div class="panel-heading">23.23 zł
                  <button style="float:right;" class="btn btn-success btn-xs">Kup</button>
                </div>
              </div>
            </div> -->
          </div>
          <div class="panel-footer"> 2021</div>
        </div>
      </div>
      
    </div> <!-- koniec div row -->
    
  </div>

</body>
</html>

2)
 

<?php

include "db.php";

if(isset($_POST["wydawnictwo"])){
    
    $wydawnictwo_query = "SELECT * FROM wydawnictwa";
    $run_query = mysqli_query($polaczenie, $wydawnictwo_query);

    echo "
    <div class='nav nav-pills nav-stacked'>
    <li class='active'><a href='#'>Wydawnictwo</a></li>
    ";

    if(mysqli_num_rows($run_query) > 0) {
        while($row = mysqli_fetch_array($run_query)){
                $w_id = $row["wydawnictwo_id"];
                $w_nazwa = $row["wydawnictwo_nazwa"];

                echo " 
                <li><a href='#' class='wydawnictwo' w_id='$w_id'>$w_nazwa</a></li>
                ";
        }
        echo "
        </div>
        ";
    }
}
if(isset($_POST["rodzaje"])){
    
    $rodzaje_query = "SELECT * FROM rodzaj";
    $run_query = mysqli_query($polaczenie, $rodzaje_query);

    echo "
    <div class='nav nav-pills nav-stacked'>
    <li class='active'><a href='#'>Rodzaje literackie</a></li>
    
    ";
    

    

    if(mysqli_num_rows($run_query) > 0) {
        while($row = mysqli_fetch_array($run_query)){
                $r_id = $row['rodzaj_id'];
                $r_ksiazki = $row['rodzaj_ksiazki'];

                echo " 
                <li><a href='#'>$r_ksiazki</a></li>
                ";
        }
        echo "
        </div>
        ";
    }
}
if(isset($_POST["getksiazka"])) {
    $ksiazka_query = "SELECT * FROM ksiazki ORDER BY RAND() LIMIT 0,9";
    $run_query = mysqli_query($polaczenie, $ksiazka_query);
    if(mysqli_num_rows($run_query) > 0){
        while($row = mysqli_fetch_array($run_query)){
            $k_id = $row['ksiazka_id'];
            $k_tytul = $row['ksiazka_tytul'];
            $k_autor = $row['ksiazka_autor'];
            $k_wydawnictwo = $row['ksiazka_wydawnictwo'];
            $k_rodzaj = $row['ksiazka_rodzaj'];
            $k_cena = $row['ksiazka_cena'];
            $k_opis = $row['ksiazka_opis'];
            $k_zdjecie = $row['ksiazka_zdjecie'];
            echo 
            "
            <div class='col-md-4'>
              <div class='panel panel-info'>
                <div class='panel-heading'>$k_tytul, $k_autor</div>
                <div class='panel-body'>
                    
                    <a href='#' data-toggle='tooltip' title='Opis!'><img src='fotki_ksiazki/$k_zdjecie' style='height:250px; height:160px;'></a>
                </div>
                <div class='panel-heading'>$k_cena zł
                  <button class='$k_id' style='float:right;' class='btn btn-success btn-xs'>Kup</button>
                </div>
              </div>
            </div>
            ";
        }
    }
}


?>

3)

jQuery(function(){
alert("hi");
    wyd();
    rod();
    ksiazka();
    function wyd(){

        

        $.ajax({
            url: "action.php",
            method: "POST",
            data: {wydawnictwo:1},
            success: function(data){
                $("#get_wydawnictwo").html(data);
                
            },
            error: function(blad) {
                alert ("wystąpił błąd");
                console.log(blad);
            }
        });
            return false;
    }
    function rod(){

        $.ajax({
            url: "action.php",
            method: "POST",
            data: {rodzaje:1},
            success: function(data){
                $("#get_rodzaje").html(data);
            }
        });

    }
    function ksiazka(){

        $.ajax({
            url: "action.php",
            method: "POST",
            data: {getKsiazka:1},
            success: function(data){
                $("#get_ksiazka").html(data);
            }
        });

    }
});

<?php

$servername = "localhost";
$username = "mysql_user";
$password = "tajnehaslo";
$db = "sklep";


$polaczenie = mysqli_connect($servername, $username, $password, $db);

if(!polaczenie) {
    die("Connection failed: " . mysqli_connect_error());
}

?>


Za pomoc z góry dziękuję. :)
 

komentarz 18 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)

Pokaż co znajduje się w zmiennej data w linijkach 15, 32 i 44 pliku main.js - tam gdzie są ciała funkcji success Ajaxa'.

komentarz 18 stycznia 2021 przez ZeRo_ Nowicjusz (180 p.)

@ScriptyChris, Jeśli chodzi tobie o to  co jest zawarte w zmiennej data po kompilacji kodu to niestety debuger nie wyświetla mi takiej zmiennej.

komentarz 18 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)

Po wykonaniu Ajax'a serwer powinien zwrócić odpowiedź i jej zawartość powinna być w argumencie data, który masz w metodach success. Więc sprawdź to dopiero po wykonaniu Ajax'a.

komentarz 18 stycznia 2021 przez ZeRo_ Nowicjusz (180 p.)

@ScriptyChris, niestey serwer nie zwraca mi takiej zmiennej.

komentarz 18 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)
A co zwraca? Możesz pokazać screen z panelu Response/Odpowiedź z zakładki Network/Sieć z narzędzi developerskich przeglądarki?

https://developers.google.com/web/tools/chrome-devtools/network/reference#response
komentarz 18 stycznia 2021 przez ZeRo_ Nowicjusz (180 p.)

@ScriptyChris, tylko przetwarza takie pliki jak w linku.

https://megawrzuta.pl/download/838b2393a02135d4352eb94aa0eeb8d2.html

komentarz 18 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)

Screeny udostępniaj przez serwisy typu imgur.com lub (jeśli uda się zachować ostrość obrazka) wstaw bezpośrednio do posta, bo w powyższym linku trzeba coś pobierać.

komentarz 18 stycznia 2021 przez ZeRo_ Nowicjusz (180 p.)

@ScriptyChris, proszę bardzo.

https://imgur.com/a37xCCA

komentarz 18 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)

Ok, to jest screen z zakładki Network. A ja proszę o screen z tej zakładki, ale z panelu Response po wysłaniu konkretnego requesta (wyżej podlinkowałem gdzie go znaleźć). U Ciebie Ajax jest wysyłany pod URL action.php, więc wykonaj kod wysyłający ten request i w wyżej wspomnianym panelu sprawdź co zwrócił serwer jako odpowiedź.

komentarz 18 stycznia 2021 przez ZeRo_ Nowicjusz (180 p.)
komentarz 18 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)

Wygląda jakby serwer nie zwracał odpowiedzi. Czy jesteś w stanie sprawdzić, czy w PHP wykonuje się któryś z if'ów zawierający użycie funkcji isset - tam gdzie sprawdzasz zawartość zmiennej $_POST?

Pokaż jeszcze panel Headers - pierwszy od lewej (obok tego Response) - zarówno informacje na górze (tam jest m.in. URL i status) jak i na dole (tam będą dane wysłane metodą POST).


Istotna kwestia: jeśli sprawdzasz coś w panelu Network, to nie rób tego w momencie, gdy masz zatrzymany kod w debuggerze - jeśli np. masz postawiony breakpoint w ciele metody success, to nie zobaczysz zwróconej odpowiedzi z serwera dopóki skrypt jest zatrzymany. Więc na czas sprawdzania odpowiedzi w zakładce Network nie zatrzymuj kodu debuggerem.

komentarz 18 stycznia 2021 przez ZeRo_ Nowicjusz (180 p.)
komentarz 18 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)
Sprawdziłeś kod PHP, o czym wspomniałem wyżej? I czy ponownie spojrzałeś w panel Response w Networku bez zatrzymanego kodu w debuggerze - czy nadal nie ma tam odpowiedzi z serwera?
komentarz 18 stycznia 2021 przez ZeRo_ Nowicjusz (180 p.)

@ScriptyChris, w zakładce Response dalej nic nie ma. Tak sprawdzałem bez zatrzymanego kodu.

komentarz 18 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)

Jedyne co widzę, to że wysyłasz property z kluczem getKsiazka, a w PHP sprawdzasz if(isset($_POST["getksiazka"])) - jeśli PHP automatycznie nie zamienia stringa z camelCase na lowerCase, to może tu jest przyczyna problemu - przynajmniej dla tego requestu, bo w pozostałych przypadkach klucz w wysyłanym property zgadza się z tym sprawdzanym w warunku w PHP.

komentarz 18 stycznia 2021 przez ZeRo_ Nowicjusz (180 p.)

@ScriptyChris, czy jest jakieś rozwiązanie na problem który przedstawiłeś ?

komentarz 18 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)

Jeśli to jest faktycznie przyczyną problemu, to rozwiązanie jest proste - zrób jednolitą konwencję nazewniczą propertisów po stronie JS i PHP - albo getKsiazka, albo getksiazka.

komentarz 18 stycznia 2021 przez ZeRo_ Nowicjusz (180 p.)

@ScriptyChris, niestety nadal nie działa. 

komentarz 19 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)

Wg mnie po stronie PHP coś blokuje odesłanie odpowiedzi. Wstawiłbym testowo echo("test"); w 4 linijce pliku action.php (przed pierwszym if'em) i jeśli nadal nie będzie odpowiedzi na Ajax, to raczej ewidentnie wina PHP - można sprawdzić jeszcze w innej przeglądarce (np. Firefox, bo jako jedna z nielicznych popularniejszych nie jest na silniku Chromium, co w skrajnych przypadkach może mieć znaczenie); jeśli jednak odpowiedź będzie zwrócona, to coś w if'ach nie działa (może się nie wykonują, a może kod w środku rzuca błędem).

komentarz 19 stycznia 2021 przez ZeRo_ Nowicjusz (180 p.)

@ScriptyChris, sprawdziłem wyświetla pojedyńcze wywołanie atrybutów z bazy danych, lecz w pętli if już nie przekazuje danych.
Posiadam aktualną wersję PHP 7.3.
Czy można to jakoś jeszcze uratować?
 

komentarz 19 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)

Skoro da się cokolwiek wyświetlić ze skryptu action.php, to zapisz przed pierwszym if'em: echo(json_encode($_POST)); i pokaż co wtedy będzie w odpowiedzi na Ajax w przeglądarce.

https://www.php.net/manual/en/function.json-encode.php

lecz w pętli if już nie przekazuje danych

O której pętli mówisz?

komentarz 19 stycznia 2021 przez ZeRo_ Nowicjusz (180 p.)

@ScriptyChris, mówię mówię o jednej i drugiej pętli if.
Mógłbyś mi wyjaśnić jak mam wywołać tego jsona za pomocą Ajax'a ?
Jestem zielone w te klocki z Ajax'em dopiero co się uczę go obsługiwać.

komentarz 19 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)

Mógłbyś mi wyjaśnić jak mam wywołać tego jsona za pomocą Ajax'a ?

 Na początku pliku action.php wstaw echo:

<?php
 
include "db.php";
 
echo(json_encode($_POST)); // <--

if(isset($_POST["wydawnictwo"])){

Następnie wywołaj w aplikacji kod JavaScript, który wysyła zapytania Ajax (te, które masz w pliku main.js) i sprawdź w zakładce Network devtoolsów, czy i jaką odpowiedź (panel Response) dostał z serwera.

 

komentarz 19 stycznia 2021 przez ZeRo_ Nowicjusz (180 p.)

@ScriptyChris, niestety tylko takie odpowiedzi dostałem od serwera.
https://imgur.com/a/KjOQeFD
https://imgur.com/a/2JCase0
https://imgur.com/a/LQqVA3r

komentarz 19 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)

Super, czyli jednak serwer zwraca odpowiedzi. :) Jednak w przypadku property getksiazka brakuje zwracanego HTML'a - tutaj nie bardzo pomogę, bo jest tam jakaś logika związana z obsługą bazy danych; sprawdziłbym czy kod nie przechodzi przez if z 60 linijki czy przez while w 61 linijce (możesz tam wstawić echo z jakimś tekstem żeby to zweryfikować).

Co do problemu po stronie frontu: skoro serwer zwraca w odpowiedzi HTML'a, to teraz pokaż co znajduje się w zmiennej data, o co już pytałem w pierwszych dwóch komentarzach.

komentarz 19 stycznia 2021 przez ZeRo_ Nowicjusz (180 p.)

@ScriptyChris, poniżej przesyłam to o co prosiłeś.

https://imgur.com/a/OnXwjWR
https://imgur.com/a/2P0O8Yo
https://imgur.com/a/kBixorB

Tak btw to te niebieskie prostokąty z napisami "wydawnictwo" i "rodzaje literackie" oraz {"wydawnictwo":"1"}, {"rodzaje":"1"}, {"getksiazka":"1"} wyświetliły mi się na stronie dopiero po wywołaniu kodu javascript w consoli przeglądarki.
Bez tego po wejściu na stronę wyświetla się tylko baner, pasek menu oraz kontener "Książki". 

komentarz 19 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)

Pokazałeś screen z panelu Headers zakładki Network, a ja prosiłem o screen z konsoli (zakładka Console), gdzie - po odebraniu odpowiedzi na Ajax z serwera - powinna pokazać się zawartość zmiennej data. Oczywiście wstaw w linijkach 15, 32 i 44 pliku main.js kod console.log('data:', data) żeby wypisać do konsoli zmienną otrzymaną w argumencie metody success.

komentarz 19 stycznia 2021 przez ZeRo_ Nowicjusz (180 p.)

@ScriptyChris, przepraszam zagubiłem się w akcji.
Poniżej przesyłam zrzut z konsoli.

https://imgur.com/a/ptfT88o

komentarz 19 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)

Ok, kod $("#get_wydawnictwo").html(data); i jego analogiczne odpowiedniki w pozostałych wywołaniach metody success powinny wstawiać kod HTML ze zmiennej data do elementów o określonych id - tylko usuń (albo zakomentuj, dopóki nie będziesz pewny, że kod działa) w pliku action.php dodane testowo echo(json_encode($_POST));

Dlaczego Ajax'a wykonujesz z konsoli, a nie robi tego skrypt? Czy on w ogóle jest podpięty w pliku HTML strony?

komentarz 19 stycznia 2021 przez ZeRo_ Nowicjusz (180 p.)
edycja 19 stycznia 2021 przez ZeRo_

@ScriptyChris, dodałem odnośnik w index.php do main.js. Prostokąty z napisami się wyświetlają ale dalej nie wyświetlają się dane z bazy.

komentarz 19 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)

To coś po stronie PHP się nie wykonuje - obstawiam na ten powtarzalny fragment kombinacji if z while

    if(mysqli_num_rows($run_query) > 0) {
    while($row = mysqli_fetch_array($run_query)){

Sprawdź co jest w zmiennych $run_query i $row.

komentarz 19 stycznia 2021 przez ZeRo_ Nowicjusz (180 p.)
if(mysqli_num_rows($run_query) > 0) {
        while($row = mysqli_fetch_array($run_query)){
                $w_id = $row["wydawnictwo_id"];
                $w_nazwa = $row["wydawnictwo_nazwa"];
                echo(json_encode($run_query)); 
                echo(json_encode($row)); 

@ScriptyChris, w taki sposób mam to sprawdzić ?
Z jakiej zakładki mam pobrać te informacje?

komentarz 19 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)

Nie. Jeśli bloki if lub while się nie wykonują, to te echo wstaw przed if i przed while (pomiędzy if i while). Wtedy będzie wiadomo jakie wartości są sprawdzane w nagłówkach tych instrukcji, a tym samym dlaczego one się nie wykonują.

echo('$run_query:', $run_query);

if(mysqli_num_rows($run_query) > 0) {
        $fetch = mysqli_fetch_array($run_query);
        echo('$fetch:', $fetch);

        while($row = $fetch){

(zmienna $row pewnie nie jest dostępna poza while, więc dla testów wyciągnąłbym wynik pierwszego wywołania mysqli_fetch_array do zmiennej przed while, żeby sprawdzić jaka wartość tam jest w pierwszej iteracji)

komentarz 19 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)

Z jakiej zakładki mam pobrać te informacje?

Normalnie w devtoolsach w zakładce Network w panelu Response dla konkretnego requesta - z tego co wiem, wszystko co jest wyświetlane przy pomocy echo w PHP jest właśnie zwracane jako odpowiedź na Ajax (przynajmniej w kontekście komunikacji klient-serwer).

komentarz 19 stycznia 2021 przez ZeRo_ Nowicjusz (180 p.)

@ScriptyChris, po wykonaniu operacji wyświetla mi się tylko "$run_query".

https://imgur.com/a/4R6vSlG

komentarz 19 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)

Mhmm, wygląda na to, że ta zmienna jest pusta. Może zapytanie "SELECT * FROM wydawnictwa" nic nie zwraca?

komentarz 19 stycznia 2021 przez ZeRo_ Nowicjusz (180 p.)

@ScriptyChris, faktycznie nic nie zwraca. 
Co w takim układzie zrobić? Może spróbować zmienić wersję PHP'a? (tylko czy to coś da?)


https://imgur.com/a/2sbXWWJ

komentarz 19 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)

Wersja PHP raczej nie ma tutaj znaczenia. Sprawdź w bazie danych czy masz niepustą tabelę o nazwie wydawnictwa. Jeśli tak, to sprawdź czy połączenie PHP z bazą jest ok.

komentarz 19 stycznia 2021 przez ZeRo_ Nowicjusz (180 p.)
edycja 19 stycznia 2021 przez ZeRo_

@ScriptyChris, napisałem taki kodzik aby sprawdzić połączenie z bazą danych.
 

<?php
include dp.php;

echo("TEST PHP OK - " . date('Y-m-d H:i:s'));

if(mysqli_connect('localhost','mysql_user','tajnehaslo','sklep')){
    echo "polaczono";
}else{
    echo "niepolaczono";  
}

if(mysqli_connect('localhost','mysql_user','tajnehaslo','sklep')){
if(mysqli_select_db('wydawnictwa')){
    echo " wybrano baze wydawnictwa, ";
}else{
    echo " niewybrano baze wydawnictwa, ";  
}

if(mysqli_select_db('rodzaj')){
    echo " wybrano baze rodzaj, ";
}else{
    echo " niewybrano baze rodzaj, ";  
}

if(mysqli_select_db('ksiazka')){
    echo " wybrano baze ksiazka, ";
}else{
    echo " niewybrano baze ksiazka, ";  
}
}
?>

Wynik tego wyszedł negatywny. Zrzut: https://imgur.com/a/fcjWBQ5

Moja baza danych: https://imgur.com/a/awaCyOV
Dodam jeszcze że moje konto w phpmyadmin ma nadane wszystkie uprawnienia.

Jest to dla mnie bardzo dziwne że nie ma dostępu do bazy danych jak po wywołaniu kodu poniżej normalnie wyświetla dane na stronie.

<?php
$mysqli = new mysqli("localhost", "mysql_user", "tajnehaslo", "sklep");
if($mysqli->connect_error) {
  exit('Could not connect');
}

$sql = "SELECT ksiazka_tytul, ksiazka_autor, ksiazka_wydawnictwo, ksiazka_rodzaj, ksiazka_cena, ksiazka_opis, ksiazka_zdjecie FROM ksiazki";

$stmt = $mysqli->prepare($sql);
$stmt->bind_param("s", $_GET['q']);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($cid, $cname, $name, $adr, $city, $pcode, $country);
$stmt->fetch();
$stmt->close();

echo "<table>";
echo "<tr>";
echo "<th>CustomerID</th>";
echo "<td>" . $cid . "</td>";
echo "<th>CompanyName</th>";
echo "<td>" . $cname . "</td>";
echo "<th>ContactName</th>";
echo "<td>" . $name . "</td>";
echo "<th>Address</th>";
echo "<td>" . $adr . "</td>";
echo "<th>City</th>";
echo "<td>" . $city . "</td>";
echo "<th>PostalCode</th>";
echo "<td>" . $pcode . "</td>";
echo "<th>Country</th>";
echo "<td>" . $country . "</td>";
echo "</tr>";
echo "</table>";
?>

Kodzi znalazłem na internecie i tylko dane zmieniłem.
 

1
komentarz 19 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)
Nie znam na tyle MySQL i PHP żeby w tym pomóc. Zmienię kategorię tego pytania na bardziej odpowiednią, to może ktoś bardziej kompetentny Ci pomoże.
2
komentarz 19 stycznia 2021 przez ZeRo_ Nowicjusz (180 p.)

@ScriptyChris, dziękuję za pomoc i poświęcony czas. :)

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 747 wizyt
0 głosów
0 odpowiedzi 93 wizyt
0 głosów
2 odpowiedzi 382 wizyt
pytanie zadane 21 grudnia 2016 w JavaScript przez skrzatjedyny Gaduła (3,150 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 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!

...