Witam, napisałem stronę php która pobiera z bazy danych wszystkie rekordy. Teraz chciałbym aby wyświetlane były tylko rekordy z wartością wybraną z rozwijanej listy, znajdujące się dla kolumny linia_nr.
Dotychczasowa strona poprawnie działająca, wyświetla wszystkie rekordy z tabeli 'pomiary' od najwyższego 'id' i dzieli na strony po 72 rubryki/pomiary,
<html><head><title>Wykaz pomiarów temp. z Bazy Danych</title></head>
<body>
<?php
echo '<p><h2>Rejestrator Temperatur</h2></p>';
//Połączenie z mysql i wybranie bazy
$link = mysqli_connect('localhost','user','pass')
or die ('Nie można połączyć się z MySQL.');
mysqli_select_db($link,'naratemperatury');
//Domyślne wartości, odpowiednio liczby rekordów na strone i przesunięcia
$count=72;
$offset=0;
//Pobranie danych z $_GET jezsli ustawione
if(isset($_GET['count']))$count = $_GET['count'];
if(isset($_GET['offset']))$offset = $count*$_GET['offset']; //numer strony
//Pobranie liczby rekordów
$sql = 'Select count(*) from pomiary';
$result = mysqli_query($link,$sql);
$r = mysqli_fetch_array($result);
//Liczba stron, użycie ceil - zaokrąglenie w górę, w celu zapewnienia, że żadna strona się nie straci
$pages = ceil($r[0]/$count);
//Pobranie odpowieniej paczki
$sql = 'Select * from pomiary ORDER BY id DESC Limit '.$count.' offset '.$offset.';';
$result = mysqli_query($link,$sql);
//testy z rozwijanym wyborem
//Początek tabeli
echo '<table Border CELLSPACING=0 CELLPADDING=5><tr bgcolor=#CCCCCC><th>ID</th><th >Data</th><th>Linia NR</th><th>Temperatura 1 IN</th><th>Temperatura 2 Out</th><th>Temperatura 3 opc.</th><th>Alarmy</th></tr>';
//Pętla po wszystkich rekordach
while(($row=mysqli_fetch_array($result))!=NULL){
$redalarm = $row['temperatura2'] ;
if ($redalarm > 30 || $redalarm < -70)
{
echo '<tr><td>'.$row['id'].'</td><td>'.$row['data']. '</td><td>'.$row['linia_nr'].'</td><td>'.$row['temperatura1'].'</td><td bgcolor="yellow">'.$row['temperatura2'].'</td><td>'.$row['temperatura3'].'</td><td>'.$row['alarm'].'</td></tr>';
} else
{
echo '<tr><td>'.$row['id'].'</td><td>'.$row['data']. '</td><td>'.$row['linia_nr'].'</td><td>'.$row['temperatura1'].'</td><td>'.$row['temperatura2'].'</td><td>'.$row['temperatura3'].'</td><td>'.$row['alarm'].'</td></tr>';
}
}
echo '</table>';
echo '<a>Strony: </a>';
//Pętla po stronach
for($i=0;$i<$pages;$i++){
//jeśli obecna strona, nie twórz linku do strony
if($i*$count==$offset){
echo '<b>| '.$i.' |</b>';
}else{
echo '<a href="tabelapomiary.php?count='.$count.'&offset='.$i.'">| '.$i.' |</a>';
}
}
?>
</body>
</html>
Teraz chciałbym mieć możliwość wyświetlania tylko wyników np dla linii nr 12,
Udało mi się zrobić obiekt Select pobierający z bazy danych wszystkie możliwe numery linii które zapisane zostały dotychczas. Lecz napotykam na problem gdy chcę połączyć wybór z listy rozwijanej i wyświetlanie tabeli z podziałem na strony.. (czy koniecznym jest napisanie strony z użyciem ramek?
oto kod:
<html><head><title>Wykaz pomiarów temp. z Bazy Danych</title></head>
<body>
<?php
echo '<p><h2>Rejestrator Temperatur</h2></p>';
//Połączenie z mysql i wybranie bazy
$link = mysqli_connect('localhost','user','pass')
or die ('Nie można połączyć się z MySQL.');
mysqli_select_db($link,'naratemperatury');
// lista rozwijana
echo '<form action="tabelapomiary.php" method="post">';
echo '<!----- Select Option Fields Starts Here ----->';
echo '<select style="width:50px" name="LiniaNR[]">';
$sql = 'SELECT DISTINCT linia_nr FROM pomiary';
$linia_query = mysqli_query($link,$sql);
while($wiersz = mysqli_fetch_array($linia_query) )
{
echo '<option vlaue="'.$wiersz['linia_nr'].'">'.$wiersz['linia_nr'].'</option>';
}
echo '</select>';
/*<?php include'select_value.php'; ?> */
echo '<input name="submit" type="submit" value="Wyświetl">';
echo '</form>';
/*
echo '<p>Rejestrator Linii NR:</p><select name="opcja" style="width:50px" >';
$sqlw = 'SELECT DISTINCT linia_nr FROM pomiary';
$linia_query = mysqli_query($link,$sqlw);
while($wiersz = mysqli_fetch_array($linia_query) )
{
echo '<option vlaue="'.$wiersz['linia_nr'].'">'.$wiersz['linia_nr'].'</option>';
}
echo '</select>'; */
//Domyślne wartości, odpowiednio liczby rekordów na strone i przesunięcia
$count=72;
$offset=0;
if(isset($_POST['submit'])){
if(!empty($_POST['Color'])) {
echo "<span>You have selected :</span><br/>";
// As output of $_POST['Color'] is an array we have to use Foreach Loop to display individual value
foreach ($_POST['Color'] as $select)
{
//Pobranie danych z $_GET jezsli ustawione
if(isset($_GET['count']))$count = $_GET['count'];
if(isset($_GET['offset']))$offset = $count*$_GET['offset']; //numer strony
//Pobranie liczby rekordów
$sql = 'Select count(*) from pomiary WHERE linia_nr ='.$select.'';
$result = mysqli_query($link,$sql);
$r = mysqli_fetch_array($result);
//Liczba stron, użycie ceil - zaokrąglenie w górę, w celu zapewnienia, że żadna strona się nie straci
$pages = ceil($r[0]/$count);
//Pobranie odpowieniej paczki
$sql = 'Select * from pomiary ORDER BY id DESC WHERE linia_nr ='.$select.' Limit '.$count.' offset '.$offset.';';
$result = mysqli_query($link,$sql);
//testy z rozwijanym wyborem
//Początek tabeli
echo '<table Border CELLSPACING=0 CELLPADDING=5><tr bgcolor=#CCCCCC><th>ID</th><th >Data</th><th>Linia NR</th><th>Temperatura 1 IN</th><th>Temperatura 2 Out</th><th>Temperatura 3 opc.</th><th>Alarmy</th></tr>';
//Pętla po wszystkich rekordach
while(($row=mysqli_fetch_array($link,$sql))!=NULL){
$redalarm = $row['temperatura2'] ;
if ($redalarm > 30 || $redalarm < -70)
{
echo '<tr><td>'.$row['id'].'</td><td>'.$row['data']. '</td><td>'.$row['linia_nr'].'</td><td>'.$row['temperatura1'].'</td><td bgcolor="yellow">'.$row['temperatura2'].'</td><td>'.$row['temperatura3'].'</td><td>'.$row['alarm'].'</td></tr>';
} else
{
echo '<tr><td>'.$row['id'].'</td><td>'.$row['data']. '</td><td>'.$row['linia_nr'].'</td><td>'.$row['temperatura1'].'</td><td>'.$row['temperatura2'].'</td><td>'.$row['temperatura3'].'</td><td>'.$row['alarm'].'</td></tr>';
}
}
echo '</table>';
echo '<a>Strony: </a>';
//Pętla po stronach
for($i=0;$i<$pages;$i++){
//jeśli obecna strona, nie twórz linku do strony
if($i*$count==$offset){
echo '<b>| '.$i.' |</b>';
}else{
echo '<a href="tabelapomiary.php?count='.$count.'&offset='.$i.'">| '.$i.' |</a>';
}
}
}
}
}
?>
</body>
</html>
oto co się wyświetla:
problematyczna linia: ```
while(($row=mysqli_fetch_array($link,$sql))!=NULL){