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

PHP wyświetlanie danych

Object Storage Arubacloud
0 głosów
399 wizyt
pytanie zadane 29 listopada 2017 w PHP przez zenon209210 Początkujący (260 p.)
edycja 29 listopada 2017 przez zenon209210

http://imgie.pl/image/Z1mBT

 

Witam,

Mam problem z wyświetleniem zawartości tabeli. Chodzi o to że za pomocą polecenia

Select * from 

 pobieram wszystkie rekordy z bazy, i daję to efekt jak na zdjęciu (obraz 1), a zależy mi na tym by te komórki scalić - polecenie :

rowspan 

nie działa tak jakbym chciał ponieważ wyświetlam dane w pętli i dzieją się cudza gdy użyje tego polecania. Krótko mówiąc zależy mi by wyglądało to tak jak na obrazku drugim. 

Tutaj kod php;

$wynik = $mysqli->query ("SELECT * FROM PN75pelzanie where znak_stali='16M'");
$kolumny = $mysqli->query("SHOW COLUMNS FROM PN75pelzanie");
 
 print "<table id='table2'></td>";
 
 print "<td id='topic' colspan=4 </td>";
 print "<td id='topic' colspan=25> <b> Granica pełazania </b> </tr>";


 
	while($row = mysqli_fetch_array($kolumny)) 
		{
			print "<td id='topic'><b>" . $row[0]. "</td>";
		}

		while($row = mysqli_fetch_array($wynik)) 
		{
			print "</tr>";
			print "<td id='cols'>" . $row[0] . "</td>"; 
			print "<td id='colsother' rowspan=''>";
			print "<a href='./../system/info.php?stal=".$row[1]."'>".$row[1]."</a></a></td>";
			print "<td id='col'>" . $row[2] . "</td>";
			print "<td id='col'>" . $row[3] . "</td>";
			print "<td id='col'>" . $row[4] . "</td>";
			print "<td id='col'>" . $row[5] . "</td>";
			print "<td id='col'>" . $row[6] . "</td>";
			print "<td id='col'>" . $row[7] . "</td>";
			print "<td id='col'>" . $row[8] . "</td>";
			print "<td id='col'>" . $row[9] . "</td>";
			print "<td id='col'>" . $row[10] . "</td>";	
			print "<td id='col'>" . $row[11] . "</td>";
			print "<td id='col'>" . $row[12] . "</td>";
			print "<td id='col'>" . $row[13] . "</td>";
			print "<td id='col'>" . $row[14] . "</td>";
			print "<td id='col'>" . $row[15] . "</td>";
			print "<td id='col'>" . $row[16] . "</td>";
			print "<td id='col'>" . $row[17] . "</td>";	
			print "<td id='col'>" . $row[18] . "</td>";
			print "<td id='col'>" . $row[19] . "</td>";
			print "<td id='col'>" . $row[20] . "</td>";
			print "<td id='col'>" . $row[21] . "</td>";
			print "<td id='col'>" . $row[22] . "</td>";	
			print "<td id='col'>" . $row[23] . "</td>";
			print "<td id='col'>" . $row[24] . "</td>";
			print "<td id='col'>" . $row[25] . "</td>";	
			print "<td id='col'>" . $row[26] . "</td>";	
		}
komentarz 29 listopada 2017 przez xandros Nałogowiec (29,450 p.)

zależy mi by wyglądało to tak jak na obrazku drugim.

Jakim obrazku.

Mozesz miec jedynie jeden element o tym samym id na stronie. Zamień id na class.

(ogólnie można to prościej zrobić, ale pokaż, jak ta tabelka powinna wyglądać)

komentarz 29 listopada 2017 przez zenon209210 Początkujący (260 p.)
Sorki faktycznie nie wkleiłem linka. Teraz jest na początku posta

1 odpowiedź

+1 głos
odpowiedź 29 listopada 2017 przez xandros Nałogowiec (29,450 p.)
 <?php
 $kolumny = [
   'znak_stali', 
   'stan_obróbki_cieplnej', 
   'oznaczenie_wlasnosci',
   'a',
   'b',
   'c', 
   'd',
   'e',
   'f',
   'g',
   'h',
 ];
 $wyniki = [
   [
       'id' => 1, 
       'znak_stali' => '16M', 
       'stan_obróbki_cieplnej' => 'N',  
       'oznaczenie_wlasnosci' => 'R1/10000', 
       'a' => null,
       'b' => null,
       'c' => null, 
       'd' => null,
       'e' => null,
       'f' => null,
       'g' => null,
       'h' => null,
    ],
   [
       'id' => 2, 
       'znak_stali' => '16M', 
       'stan_obróbki_cieplnej' => 'N',  
       'oznaczenie_wlasnosci' => 'R1/10000', 
       'a' => null,
       'b' => null,
       'c' => null, 
       'd' => null,
       'e' => null,
       'f' => null,
       'g' => null,
       'h' => null,
    ],
   [
       'id' => 3, 
       'znak_stali' => '16M', 
       'stan_obróbki_cieplnej' => 'N',  
       'oznaczenie_wlasnosci' => 'R1/100000', 
       'a' => null,
       'b' => null,
       'c' => null, 
       'd' => null,
       'e' => null,
       'f' => null,
       'g' => 32,
       'h' => null,
    ],
   [
       'id' => 4, 
       'znak_stali' => '16M', 
       'stan_obróbki_cieplnej' => 'N',  
       'oznaczenie_wlasnosci' => 'R1/10000', 
       'a' => 978,
       'b' => 432,
       'c' => 31, 
       'd' => 78,
       'e' => 645,
       'f' => 97,
       'g' => 564,
       'h' => 31,
    ],
 ];
 $toPrint = [
       'oznaczenie_wlasnosci', 
       'a',
       'b',
       'c', 
       'd',
       'e',
       'f',
       'g',
       'h',
 ];
 $resultsNumber = count($wyniki);
 $firstRecord = array_pop($wyniki);
 ?>
 
<!DOCTYPE html>
<html lang="en-PL"><head></head><body>
<table id="table2">
    <thead>
     <tr>
         <td class="topic" colspan="4"></td>
         <td class="topic" colspan="25">Granica pełazania</td>
     </tr>
     <tr>
     <?php foreach ($kolumny as $row): ?>
        <td class="topic"><?= $row ?></td>
     <?php endforeach; ?>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td class='col' rowspan='<?= $resultsNumber ?>'><?= $firstRecord['znak_stali'] ?></td>
      <td class='colsother' rowspan='<?= $resultsNumber ?>'>
          <a href='./../system/info.php?stal=<?= $firstRecord['znak_stali'] ?>'><?= $firstRecord['stan_obróbki_cieplnej'] ?></a>
      </td>
       <?php foreach($firstRecord as $key => $value): ?>
            <?php if(in_array($key, $toPrint)): ?>
                    <td class='cols'><?= $value ?></td>
            <?php endif ?>
        <?php endforeach; ?>
     </tr>
    <?php foreach($wyniki as $row): ?>
        <tr>
        <?php foreach($row as $key => $value): ?>
            <?php if(in_array($key, $toPrint)): ?>
                    <td class='cols'><?= $value ?></td>
            <?php endif ?>
        <?php endforeach; ?>
        </tr>
    <?php endforeach; ?>
   </tbody>
</table>
</body>
</html>

Trochę przekombinowane. Lepiej byłoby robić tego rowspana za pomoca JSa porównując wartości.

Błędy w twoim kodzie:

  • zła składnia HTML,
  • brak znaczników tr,  
  • HTML z PHP, przez co składnia nieczytelna
  • nazwy kolumn w tabeli SQL to nie labelki do tabeli w html
  • używanie znaczników do stylowania
  • używanie id do stylowania
komentarz 29 listopada 2017 przez zenon209210 Początkujący (260 p.)

Podmieniłem nazwy kolumn wpisywanych ręcznie przez ten kod :

<?php
include ('system/connectdb.php');
$mysqli = new mysqli($db_host, $db_user, $db_password, $db_name);
 $kolumny = $mysqli->query("SHOW COLUMNS FROM PN75pelzanie");
 
 $wyniki = [ 
   [
       'id' => 1, 
       'znak_stali' => '16M', 
       'stan_obróbki_cieplnej' => 'N',  
       'oznaczenie_wlasnosci' => 'R1/10000', 
       'a' => null,
       'b' => null,
       'c' => null, 
       'd' => null,
       'e' => null,
       'f' => null,
       'g' => null,
       'h' => null,
    ],
   [
       'id' => 2, 
       'znak_stali' => '16M', 
       'stan_obróbki_cieplnej' => 'N',  
       'oznaczenie_wlasnosci' => 'R1/10000', 
       'a' => null,
       'b' => null,
       'c' => null, 
       'd' => null,
       'e' => null,
       'f' => null,
       'g' => null,
       'h' => null,
    ],
   [
       'id' => 3, 
       'znak_stali' => '16M', 
       'stan_obróbki_cieplnej' => 'N',  
       'oznaczenie_wlasnosci' => 'R1/100000', 
       'a' => null,
       'b' => null,
       'c' => null, 
       'd' => null,
       'e' => null,
       'f' => null,
       'g' => 32,
       'h' => null,
    ],
   [
       'id' => 4, 
       'znak_stali' => '16M', 
       'stan_obróbki_cieplnej' => 'N',  
       'oznaczenie_wlasnosci' => 'R1/10000', 
       'a' => 978,
       'b' => 432,
       'c' => 31, 
       'd' => 78,
       'e' => 645,
       'f' => 97,
       'g' => 564,
       'h' => 31,
    ],
 ];
 $toPrint = [
       'oznaczenie_wlasnosci', 
       'a',
       'b',
       'c', 
       'd',
       'e',
       'f',
       'g',
       'h',
 ];
 $resultsNumber = count($wyniki);
 $firstRecord = array_pop($wyniki);
 ?>
  
<!DOCTYPE html>
<html lang="en-PL">
<head>
<link rel="stylesheet" href="css/styledbmain.css" type="text/css" />
		<link href="https://fonts.googleapis.com/css?family=Playfair+Display:400,900&amp;subset=latin-ext" rel="stylesheet">
</head>
<body>
<table id="table2">
    <thead>
     <tr>
         <td class="topic" colspan="4"></td>
         <td class="topic" colspan="25">Granica pełazania</td>
     </tr>
     <tr>
     <?php foreach ($kolumny as $row): ?>
        <td class="topic"><?= $row ?></td>
     <?php endforeach; ?>
    </tr>
  </head>
  <tbody>
    <tr>
      <td class='col' rowspan='<?= $resultsNumber ?>'><?= $firstRecord['znak_stali'] ?></td>
      <td class='colsother' rowspan='<?= $resultsNumber ?>'>
          <a href='./../system/info.php?stal=<?= $firstRecord['znak_stali'] ?>'><?= $firstRecord['stan_obróbki_cieplnej'] ?></a>
      </td>
       <?php foreach($firstRecord as $key => $value): ?>
            <?php if(in_array($key, $toPrint)): ?>
                    <td class='cols'><?= $value ?></td>
            <?php endif ?>
        <?php endforeach; ?>
     </tr>
    <?php foreach($wyniki as $row): ?>
        <tr>
        <?php foreach($row as $key => $value): ?>
            <?php if(in_array($key, $toPrint)): ?>
                    <td class='cols'><?= $value ?></td>
            <?php endif ?>
        <?php endforeach; ?>
        </tr>
    <?php endforeach; ?>
   </tbody>
</table>
</body>
</html>

?>

Niestety pojawia się taki błąd:

http://imgie.pl/image/Z1x8S

komentarz 29 listopada 2017 przez xandros Nałogowiec (29,450 p.)
W lini 95, $row jest arrayem, a nie stringiem.

wrzuć:

<?php var_dump($row) ?>

przed błędem i sprawdź, jak wygląda row
komentarz 29 listopada 2017 przez zenon209210 Początkujący (260 p.)
komentarz 30 listopada 2017 przez xandros Nałogowiec (29,450 p.)

W sumie dalej się zastanawiam, czemu pytasz sql o nazwy kolumn?

Rzuć w pętli (lub na sztywno) nazwy kolumn w nagłówku tabeli, a query po wyniki:

<?php
require_once __DIR__ . '/system/connectdb.php';
$query = "SELECT * FROM PN75pelzanie where znak_stali='16M'";
$wyniki = ($queryResult = $mysqli->query($query)) ? $queryResult->fetch_all(MYSQLI_ASSOC) : [];
$toPrint = [
    'oznaczenie_wlasnosci',
    '380C',
    '390C',
    '400C',
    '410C',
    '420C',
    '430C',
    '440C',
    '450C',
    '460C',
    '470C',
    '480C',
    '490C',
    '500C',
    '510C',
    '520C',
    '530C',
    '540C',
    '550C',
    '560C',
];
$kolumny = [
    'znak_stali',
    'stan_obróbki_cieplnej',
    'oznaczenie_wlasnosci',
    '380C',
    '390C',
    '400C',
    '410C',
    '420C',
    '430C',
    '440C',
    '450C',
    '460C',
    '470C',
    '480C',
    '490C',
    '500C',
    '510C',
    '520C',
    '530C',
    '540C',
    '550C',
    '560C',
];

$resultsNumber = count($wyniki);
$firstRecord = array_pop($wyniki);
?>

<!DOCTYPE html>
<html lang="en-PL">
<head></head>
<body>
<table id="table2">
    <thead>
    <tr>
        <td class="topic" colspan="4"></td>
        <td class="topic" colspan="25">Granica pełazania</td>
    </tr>
    <tr>
        <?php foreach ($kolumny as $row): ?>
            <td class="topic"><?= $row ?></td>
        <?php endforeach; ?>
    </tr>
    </thead>
    <tbody>
    <tr>
        <td class='col' rowspan='<?= $resultsNumber ?>'><?= $firstRecord['znak_stali'] ?></td>
        <td class='colsother' rowspan='<?= $resultsNumber ?>'>
            <a href='./../system/info.php?stal=<?= $firstRecord['znak_stali'] ?>'><?= $firstRecord['stan_obróbki_cieplnej'] ?></a>
        </td>
        <?php foreach ($firstRecord as $key => $value): ?>
            <?php if (in_array($key, $toPrint)): ?>
                <td class='cols'><?= $value ?></td>
            <?php endif ?>
        <?php endforeach; ?>
    </tr>
    <?php foreach ($wyniki as $row): ?>
        <tr>
            <?php foreach ($row as $key => $value): ?>
                <?php if (in_array($key, $toPrint)): ?>
                    <td class='cols'><?= $value ?></td>
                <?php endif ?>
            <?php endforeach; ?>
        </tr>
    <?php endforeach; ?>
    </tbody>
</table>
</body>
</html>

 

komentarz 30 listopada 2017 przez zenon209210 Początkujący (260 p.)
Bo mam kilka takich tabel i za każdym razem wpisywanie jest uciążliwe. Wolałbym żeby to się pobierało z bazy. No ale nic. Dzięki wielkie za wszystkie odpowiedzi. Zrobię może najwyżej tak jak mówisz. Dzięki
komentarz 30 listopada 2017 przez xandros Nałogowiec (29,450 p.)
> Wolałbym żeby to się pobierało z bazy.

Ale tak się nie robi :<

zrób sobie funkcje z labelkami, np. "getPN75pelzanieLabels()" w której zwracasz arraya z listą labelek.
komentarz 30 listopada 2017 przez xandros Nałogowiec (29,450 p.)

Swoją drogą, w twoim kodzie miałeś:

            print "</tr>";
            print "<td id='cols'>" . $row[0] . "</td>"; 
            print "<td id='colsother' rowspan=''>";
            print "<a href='./../system/info.php?stal=".$row[1]."'>".$row[1]."</a></a></td>";
            print "<td id='col'>" . $row[2] . "</td>";
            print "<td id='col'>" . $row[3] . "</td>";
            print "<td id='col'>" . $row[4] . "</td>";
            print "<td id='col'>" . $row[5] . "</td>";
            print "<td id='col'>" . $row[6] . "</td>";
            print "<td id='col'>" . $row[7] . "</td>";
            print "<td id='col'>" . $row[8] . "</td>";
            print "<td id='col'>" . $row[9] . "</td>";
            print "<td id='col'>" . $row[10] . "</td>"; 
            print "<td id='col'>" . $row[11] . "</td>";
            print "<td id='col'>" . $row[12] . "</td>";
            print "<td id='col'>" . $row[13] . "</td>";
            print "<td id='col'>" . $row[14] . "</td>";
            print "<td id='col'>" . $row[15] . "</td>";
            print "<td id='col'>" . $row[16] . "</td>";
            print "<td id='col'>" . $row[17] . "</td>"; 
            print "<td id='col'>" . $row[18] . "</td>";
            print "<td id='col'>" . $row[19] . "</td>";
            print "<td id='col'>" . $row[20] . "</td>";
            print "<td id='col'>" . $row[21] . "</td>";
            print "<td id='col'>" . $row[22] . "</td>"; 
            print "<td id='col'>" . $row[23] . "</td>";
            print "<td id='col'>" . $row[24] . "</td>";
            print "<td id='col'>" . $row[25] . "</td>"; 
            print "<td id='col'>" . $row[26] . "</td>"; 

Więc...

Podobne pytania

0 głosów
2 odpowiedzi 357 wizyt
pytanie zadane 8 lipca 2015 w C i C++ przez niezalogowany
0 głosów
2 odpowiedzi 760 wizyt
pytanie zadane 4 kwietnia 2016 w PHP przez Jaroslaw Roj Obywatel (1,990 p.)
–1 głos
1 odpowiedź 106 wizyt
pytanie zadane 2 kwietnia 2016 w PHP przez Filip31411 Dyskutant (8,820 p.)

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,941 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!

...