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

PHP nie pobiera danych z bazy danych [php,mysql]

Object Storage Arubacloud
+2 głosów
702 wizyt
pytanie zadane 19 stycznia 2021 w SQL, bazy danych przez ZeRo_ Nowicjusz (180 p.)

Witam, chciałbym pobrać atrybuty z bazy danych, lecz coś po stronie serwera mi to nie umożliwia.
Serwer Apache jest postawiony na Rasppberry pi 4B.
W consoli nie wyświetlają się żadne błędy. 

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>
        <script src=main.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);
            }
        });
 
    }
});

4)
 

<?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());
}
 
?>

Wszystko pod kątem Ajaxa zostało sprawdzone. 
https://forum.pasja-informatyki.pl/525762/pobranie-danych-z-bazy-danych-php-ajax-js?show=526009#c526009

Po napisaniu krótkiego kodu sprawdzającego połączeniewyniki wyszły negatywne.
 

<?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, ";  
}
}
?>

Link do wyników: https://imgur.com/a/fcjWBQ5

Po wprowadzeniu kodu poniżej strona internetowa wyświetla poprawnie zawartość bazy danych.

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

$sql = "SELECT wydawnictwo_id, wydawnictwo_nazwa FROM wydawnictwa";

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


echo "<table>";
echo "<tr>";
echo "<th>WydawnictwoID:</th>";
echo "<td>" . $cid . "</td>";
echo "<th>WydawnictwoNAZWA:</th>";
echo "<td>" . $cname . "</td>";

echo "</table>";
?>

Chciałbym się dowiedzieć jak temu można zaradzić. Czy trzeba coś zmienia w plikach konfiguracyjnych serwera, czy może trzeba zaktualizować jakieś biblioteki?

Wersja Apache: Apache/2.4.38 (Raspbian)
Wersja PHP: 7.3.19-1~deb10u1
Wersja klienta bazy danych: libmysql - mysqlnd 5.0.12-dev - 20150407 - $Id: 7cc7cc96e675f6d72e5cf0f267f48e167c2abb23 $

Za odpowiedź z góry dziękuję. :)

1 odpowiedź

+1 głos
odpowiedź 20 stycznia 2021 przez VBService Ekspert (252,740 p.)
edycja 22 stycznia 2021 przez VBService

Funkcja mysqli_select_db(), służy trochę do czego innego. wink 

spróbuj wykonać ten test:

<pre>
<?php

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

$db = "sklep";
$mysqli = new mysqli("localhost", "mysql_user", "tajnehaslo", $db);
if ($mysqli->connect_error) {
  exit('Nie mogę połaczyć się z bazą danych.');
}

$sql = "SHOW TABLES FROM {$db}";
$query = $mysqli->query($sql);

if (!$query) {
  echo "Nie mogę pobrać nazw tabel", PHP_EOL;
  echo 'MySQL Error: ' . $mysqli->error;
  exit;
}

echo PHP_EOL, "Tabele w bazie danych: ", $db, PHP_EOL;
while ($row = $query->fetch_row()) {
  echo $row[0], PHP_EOL;
}

$query->close();
$mysqli ->close();
?>
</pre>

action.php

<?php
  
//include "db.php";

var_dump($_POST["wydawnictwo"], $_POST["rodzaje"], $_POST["getksiazka"]);
exit;
  
if(isset($_POST["wydawnictwo"])){

Wrzuć wyniki testów zobaczymy co dalej. wink

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

@VBServicezrobiłem tak jak wskazałeś, wyniki w formie zrzutów poniżej.

Test phphttps://imgur.com/a/n27eakh

Test action.phphttps://imgur.com/a/wBN7oit

Wygląda na to że niby się łączy ale nic nie pobiera z bazy.

komentarz 20 stycznia 2021 przez VBService Ekspert (252,740 p.)

  • połączenie z serwerem bazy danych można wykonać
  • połączenie do bazy danych: sklep - też
  • zapytanie sql - zwróciło wynik, bez błędów (nazwy dostępnych tabel)
komentarz 20 stycznia 2021 przez ZeRo_ Nowicjusz (180 p.)

@VBService,  teraz jest pytanie, dlaczego nie pobiera danych z bazy w action.php?
 

komentarz 21 stycznia 2021 przez VBService Ekspert (252,740 p.)
edycja 21 stycznia 2021 przez VBService

Wygląda, że kod action.php nie zawiera błędów, może ajax dostaje "czkawki", a spróbuj buforowania danych zanim je "wyślesz" do ajax-a  [ Output Control Functions ] np.:

action.php

<?php
  
include "db.php";

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

...

} // klamra zamykająca if(isset($_POST["getksiazka"]))
  
ob_end_flush(); 
 
?>

 

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

@VBService, nic to nie dało dalej to samo. Nic się z bazy danych nie wyświetla na stronie.
 

komentarz 21 stycznia 2021 przez VBService Ekspert (252,740 p.)
edycja 22 stycznia 2021 przez VBService

Może za dużo tzw. "białych znaków" jest wysyłane do ajax-a 

echo
 "
    <div class='col-md-4'> ...
 ";

teoretycznie ten zapis wykona się bez błędu, ale wysyłane są wszystkie znaki, które znajdują się między cudzysłowami, łącznie ta duża ilość spacji, które przeglądarka "ignoruje" wink

spróbuj tego

action.php

<?php

include "db.php";

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

    $html = '<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'];

            $html .= "<li><a href='#' class='wydawnictwo' id='{$w_id}'>{$w_nazwa}</a></li>";
        }
    }

    echo $html.'</div>';
}

if (isset($_POST["rodzaje"])) {
    $rodzaje_query = "SELECT * FROM rodzaj";
    $run_query = mysqli_query($polaczenie, $rodzaje_query);

    $html = '<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'];

            $html .= "<li><a href='#' id='{$r_id}'>{$r_ksiazki}</a></li>";
        }
    }

    echo $html.'</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) {
        $html = '';
        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']; // Nie wykorzystany
            $k_rodzaj = $row['ksiazka_rodzaj']; // Nie wykorzystany
            $k_cena = $row['ksiazka_cena'];
            $k_opis = $row['ksiazka_opis']; // Nie wykorzystany
            $k_zdjecie = $row['ksiazka_zdjecie'];

            $html .= '<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></div>';
        }

        echo $html;
    }
}
?>

 

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

@VBService, bo wprowadzeniu kodu wyskakuje mi teraz taki komunikat i nic sie nie wyświetla.

1
komentarz 21 stycznia 2021 przez VBService Ekspert (252,740 p.)

A spróbuj wywołać (wykonać) ten kod bezpośrednio z pominięciem ajax-a, jak z formularza.

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

@VBService, nadal brak efektów.

 

<?php 
    $db = mysqli_connect("localhost","mysql_user","tajnehaslo","sklep");

    function getksiazka(){
        global $db;

        $get_ksiazka = "SELECT ksiazka_id ksiazka_tytul ksiazka_autor ksiazka_wydawnictwo ksiazka_rodzaj ksiazka_cena ksiazka_opis ksiazka_zdjecie FROM ksiazki ORDER BY 1 DESC LIMIT 0,8";
        $run_ksiazki = mysqli_query($db,$get_ksiazka);

        while($row_ksiazki=mysqli_fetch_array($run_ksiazki)){
            $k_id = $row_ksiazki['ksiazka_id'];
            $k_tytul = $row_ksiazki['ksiazka_tytul'];
            $k_cena = $row_ksiazki['ksiazka_cena'];
            $k_zdjecie = $row_ksiazka['ksiazka_zdjecie'];

            echo "
                <div class='col-md-4 col-sm-6 single'>
                    <div class='ksiazka'>
                        <a href='detale.php?k_id=$k_id'>
                            <img class='cover' src='fotki_ksiazki/$k_zdjecie'>
                        </a>
                        <div class='text'>
                            <h3>
                                <a href='detale.php?k_id=$k_id'>
                                    $k_tytul
                                </a>
                            </h3>
                            <p class='cena'>
                                $k_cena
                            </p>
                                <p class='button'>
                                <a class='btn btn-default' href='detale.php?k_id=$k_id'>
                                    Szczegóły
                                </a>
                                <a class='btn btn-primary' href='detale.php?k_id=$k_id'>
                                    <i class='glyphicon glyphicon-shopping-cart'></i> Kup
                                </a>
                                </p>
                        </div>
                    </div>
                </div>
            ";
        }

    }
?>

action.php wywołuję w index.php tak:
 

<?php 
      getksiazka();?>

Nic na stronie się nie wyświetla.

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

@VBService, jak próbuję dodać coś do bazy danych poprzez formularz to też nie działa.

Podobne pytania

0 głosów
1 odpowiedź 291 wizyt
0 głosów
1 odpowiedź 653 wizyt
0 głosów
1 odpowiedź 260 wizyt
pytanie zadane 15 października 2017 w Systemy operacyjne, programy przez Paweł123 Nałogowiec (33,500 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...