Webboard

Pełna wersja: Wyświetlanie nicków administracji z ich opisem
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Stron: 1 2
Witam was znowu w tym dziale(nawet nie wiem czy dobrym, ale chyba tak).
Nowy pomysł, nowe problemy. Kombinuje z "automatycznym" dodawaniem listy administracji wraz z ich opisem, funkcjami, zadaniami jak zwał tak zwał.
Korzystam z bootstrap 4 i znalazłem tam fajny kodzik navbar, który wygląda normalnie tak:
[attachment=14062]
Aczkolwiek po co mi home, profile etc.? Kiedy próbując wyciąg informacje z bazy nicki i opis, ale niestety chyba coś pomyliłem w kodzie html, bo wygląda to tak(Proszę nie zwracać uwagi na tylną część ciała, jest to tylko test)
[attachment=14064]
Trochę kombinowałem, ale niestety nic nie przychodzi mi do głowy.

Oryginalny kod od bootstrap
Kod PHP:
div class="row">
 
 <div class="col-3">
 
   <div class="nav flex-column nav-pills" id="v-pills-tab" role="tablist" aria-orientation="vertical">
 
     <class="nav-link active" id="v-pills-home-tab" data-toggle="pill" href="#v-pills-home" role="tab" aria-controls="v-pills-home" aria-selected="true">Home</a>
 
     <class="nav-link" id="v-pills-profile-tab" data-toggle="pill" href="#v-pills-profile" role="tab" aria-controls="v-pills-profile" aria-selected="false">Profile</a>
 
     <class="nav-link" id="v-pills-messages-tab" data-toggle="pill" href="#v-pills-messages" role="tab" aria-controls="v-pills-messages" aria-selected="false">Messages</a>
 
     <class="nav-link" id="v-pills-settings-tab" data-toggle="pill" href="#v-pills-settings" role="tab" aria-controls="v-pills-settings" aria-selected="false">Settings</a>
 
   </div>
 
 </div>
 
 <div class="col-9">
 
   <div class="tab-content" id="v-pills-tabContent">
 
     <div class="tab-pane fade show active" id="v-pills-home" role="tabpanel" aria-labelledby="v-pills-home-tab">...</div>
 
     <div class="tab-pane fade" id="v-pills-profile" role="tabpanel" aria-labelledby="v-pills-profile-tab">...</div>
 
     <div class="tab-pane fade" id="v-pills-messages" role="tabpanel" aria-labelledby="v-pills-messages-tab">...</div>
 
     <div class="tab-pane fade" id="v-pills-settings" role="tabpanel" aria-labelledby="v-pills-settings-tab">...</div>
 
   </div>
 
 </div>
</
div

Mój cały plik test.php
Kod PHP:
<?php
require_once('header.php');
?>
<!DOCTYPE HTML>
<html lang="pl">
<head>
<title> ZnQ_Pv2 | Lista Administracji </title>
</head>
<body>
<section class="container bg-success">
<div class="row  margin-t-100 padding-t-40 padding-b-40">
  <div class="col-3">
<?php
require_once "connect.php";
$polaczenie = @new mysqli($host$db_user$db_password$db_name);

if (
$polaczenie->connect_errno!=0)
{
echo 
"Error: ".$polaczenie->connect_errno;
}
else {
if (
$rezultat = @$polaczenie->query("SELECT * FROM administracja WHERE gid='1'"))
{
while(
$administracja mysqli_fetch_assoc($rezultat))
{




?>
<div class="nav flex-column nav-pills" id="v-pills-tab" role="tablist" aria-orientation="vertical">
<a class="nav-link active" id="v-pills-home-tab" data-toggle="pill" href="#v-pills-home" role="tab" aria-controls="v-pills-home" aria-selected="true"><?php echo $administracja['nickname']; ?></a>
</div>
<div class="col-9">
<div class="tab-content" id="v-pills-tabContent">
  <div class="tab-pane fade show active" id="v-pills-home" role="tabpanel" aria-labelledby="v-pills-home-tab"><?php echo $administracja['opis']; ?></div>
<?php }?>
</div>
</div>
</div>
</section>
    </body>
  </html>
<?php
}
$rezultat->free_result();

$polaczenie->close();
?>
<?php
require_once('footer.php');
?>
Tylko to
Kod:
<a class="nav-link active" id="v-pills-home-tab" data-toggle="pill" href="#v-pills-home" role="tab" aria-controls="v-pills-home" aria-selected="true">Home</a>
powinno znaleźć się w Twojej pętli, reszta kodu poza nią.
Po części działa chwała Ci 
[attachment=14065]
! Ale, no tak zawsze musi być ale. Ale, teraz nie wyświetla opisu. domyślam się, że winą mogą być atrybuty href, aria-controls, aria-labelledby. Czy dałoby radę jakoś temu zaradzić czy tworzyć własne menu z js i divem onclick()?
Mój dawna wersja alpha zawierała takiego js i wyglądał tak( Wiem amatorsko)
Kod PHP:
function znaqu() {
 
document.getElementById("nick").style.display "none";
document.getElementById("nick1").style.display "block";
document.getElementById("nick2").style.display "none";
document.getElementById("nick3").style.display "none";
document.getElementById("nick4").style.display "none";
document.getElementById("nick5").style.display "none";

i divami
Kod PHP:
<div onclick="nick()" class="nicki"><span style="margin-left:5px;" class="wlasciciel"nick</span></div>
 <
div onclick="nick1()" class="nicki"><span style="margin-left:5px;" class="wlasciciel"nick1</span></div>
<
div onclick="nick2()" class="nicki"><span style="margin-left:5px;" class="admin"nick2</span></div>
<
div onclick="nick3()" class="nicki"><span style="margin-left:5px;" class="admin"nick3</span></div>
<
div onclick="nick4()" class="nicki"><span style="margin-left:5px;" class="jadmin"nick4</span></div>
<
div onclick="nick5()" class="nicki"><span style="margin-left:5px;" class="gmod"nick5</span></div
Ale jak to rozwiązać po stronie php
Nie wiem jak chcesz aby ten opis wyglądał, ale w bootstrapie w tym komponencie raczej go nie ma. Generalnie możesz wszystko wrzucić w miejsce nicku, tylko musisz to sobie ostylować w css
Jest w bootstrapie i nawet w tym kodzie
Kod PHP:
<div class="row">
  <
div class="col-3">
    <
div class="nav flex-column nav-pills" id="v-pills-tab" role="tablist" aria-orientation="vertical">
      <
class="nav-link active" id="v-pills-home-tab" data-toggle="pill" href="#v-pills-home" role="tab" aria-controls="v-pills-home" aria-selected="true">Tutaj nick</a>
    </
div>
  </
div>
  <
div class="col-9">
    <
div class="tab-content" id="v-pills-tabContent">
      <
div class="tab-pane fade show active" id="v-pills-home" role="tabpanel" aria-labelledby="v-pills-home-tab">Tutaj opis</div>
    </
div>
  </
div
Tylko jak zrobić, aby odpowiednio się zmieniały
Aaa, dobra, bo to są zakładki. Musisz zrobić dwie pętle, jedna na przyciski które masz, a drugą na content tabów.
Kod:
<div class="tab-pane fade show active" id="v-pills-home" role="tabpanel" aria-labelledby="v-pills-home-tab">...</div>
Do tego musisz im nadać unikalne id. Najlepiej dodając np. id usera. Powinieneś mieć coś takiego
Kod:
<a class="nav-link active" id="v-pills-<id_usera>-tab" data-toggle="pill" href="#v-pills-<id_usera>" role="tab" aria-controls="v-pills-<id_usera>" aria-selected="true">Home</a>
Kod:
<div class="tab-pane fade show active" id="v-pills-<id_usera>" role="tabpanel" aria-labelledby="v-pills-home-tab">opis</div>
Nie wiem czy dobrze zrozumiałem, jeżeli tak to nie działa :/ W linku zmiena teraz home i tak dalej, na id, ale dalej nie wyświetla tekstu, który jest w bazie
Kod PHP:
if ($polaczenie->connect_errno!=0)
{
    echo 
"Error: ".$polaczenie->connect_errno;
}
else {
    if (
$rezultat = @$polaczenie->query("SELECT * FROM administracja WHERE gid='1'"))
    {
        while(
$administracja mysqli_fetch_assoc($rezultat))
        {
?>
            
            <a class="nav-link active" id="v-pills-<?php echo $administracja['id'];?>-tab" data-toggle="pill" href="#v-pills-<?php echo $administracja['id'];?>" role="tab" aria-controls="v-pills-<?php echo $administracja['id'];?>" aria-selected="true"><?php echo $administracja['nickname']; ?></a>
        <?php }?>
                    </div>
            <div class="col-9">
                <div class="tab-content" id="v-pills-tabContent">
<?php     while($administracja mysqli_fetch_assoc($rezultat))
        {
?>    
            <div class="tab-pane fade show active" id="v-pills-<?php echo $administracja['id'];?>" role="tabpanel" aria-labelledby="v-pills-<?php echo $administracja['id'];?>-tab"><?php echo $administracja['opis']; ?></div>
        <?php }?>
                </div>
            </div> 
Echo Ci gdzieś zaginęło przy id
Cytat:<?php.$administracja['id'].?>
i te kropki niepotrzebne.
Wiem, że nie było echo i kropek, już poprawione, ale dalej nie wyświetla.


Nie wyświetla nic z tej pętli
Kod PHP:
while($administracja mysqli_fetch_assoc($rezultat))
        {
?>            
            <div class="tab-pane fade show active" id="v-pills-<?php echo $administracja['id'];?>" role="tabpanel" aria-labelledby="v-pills-<?php echo $administracja['id'];?>-tab"><?php echo $administracja['opis']; ?></div>

        <?php }?>
Czy winą może być dublowanie $administracja w dwóch różnych pętlach ?
Problemem jest użycie mysqli_fetch_assoc które pobiera wiersz, po wierszu dane z bazy dla zapytania, jednak przy kolejnym użyciu nie ma co pobierać, ponieważ wszystko już poprał wcześniej.
Użycie mysqli_fetch_all która zwraca wszystkie dane w formie arraya powinno załatwić sprawę. Potrzebujesz coś w tym stylu:
Kod:
$users = mysqli_fetch_all($rezultat);

foreach($users as $user) {
?>
//Kod buttonow
<?php } ?>

<?php foreach($users as $user) { ?>
// kod contentu zakladek
<?php } ?>
Po zmiane while na foreacha mamy puste tablice
[attachment=14081]
Ale teraz content zakładki działa
kod php

Kod PHP:
if ($polaczenie->connect_errno!=0)
{
echo 
"Error: ".$polaczenie->connect_errno;
}
else {
if (
$rezultat = @$polaczenie->query("SELECT * FROM administracja WHERE gid='1'"))
{
$users mysqli_fetch_all($rezultat);
foreach(
$users as $user) {
?>
<a class="nav-link active" id="v-pills-<?php echo $user['id'];?>-tab" data-toggle="pill" href="#v-pills-<?php echo $user['id'];?>" role="tab" aria-controls="v-pills-<?php echo $user['id'];?>" aria-selected="true"><?php echo $user['nickname']; ?></a>
<?php }?>
</div>
</div>
<div class="col-9">
<div class="tab-content" id="v-pills-tabContent">
<?php foreach($users as $user) { ?> 
<div class="tab-pane fade show active" id="v-pills-<?php echo $user['id'];?>" role="tabpanel" aria-labelledby="v-pills-<?php echo $user['id'];?>-tab"><?php echo $user['opis']; ?></div>

<?php }?>
var_dump($users); die; pokaz
Kod PHP:
array(2) { [0]=> array(5) { [0]=> string(1"3" [1]=> string(5"Dupa3" [2]=> string(0"" [3]=> string(32"Jest to d?ugi opis by starczy?o3" [4]=> string(1"1" } [1]=> array(5) { [0]=> string(1"4" [1]=> string(5"Dupa4" [2]=> string(0"" [3]=> string(32"Jest to d?ugi opis by starczy?o4" [4]=> string(1"1" } } 
Zobacz tak:
Kod:
$users = mysqli_fetch_all($rezultat, MYSQLI_ASSOC);
Jak nie będzie działało to znowu pokaż var_dump
Działa to !
Kod:
$users = mysqli_fetch_all($rezultat, MYSQLI_ASSOC);
I to tak jak chciałem dzięki wielkie za chęci pomocy

Ale czemu cały czas nie mam polskich znaków ?
Kod PHP:
[3]=> string(32"Jest to d?ugi opis by starczy? 
w pliku php mam takie coś
w head
Kod:
<meta charset="utf-8">
i w php
Kod PHP:
$polaczenie->set_charset("utf-8"); 
w bazie mam ustawione kodowanie na utf8_general_ci(zmieniam na polish_ci)
w Notepadzie mam UTF-8 bez BOM

W bazie wygląda to normalnie są polskie znaki, a na stronie już nie ma
Stron: 1 2