Dlaczego nie sortuje?

Odpowiedz Nowy wątek
2018-08-04 16:01
0

Zrobiłem sortowanie, wydawało mi się, że dobrze zrobione, ale jak zwykle działać nie chce, nawet mnie to nie dziwi. Gdzie jest błąd?

index.php

<?php
ob_start();
?>
<html>
<head>
<style>
.btn_stan0{
    font-size: 16;
    width: 100%;
    height: 100%;
    background-color: red;
    color: white;

}
.btn_stan1{
    font-size: 16;
    width: 100%;
    height: 100%;
    background-color: green;
    color: white;
}

.btn_resetuj_wszystko {
    background-color: black;
    color: white;
    font-size: 15;
    font-weight: 900;
}

.btn_sortowanie {
    background-color: #ff5733;
    color: white;
    font-size: 15;
    font-weight: 900;
}
</style>

</head>
<body>
<?php 
//Łączenie z bazą danych
$sqltable = 'TestowySerial';
$sortowanie = 'rosnaco';
$db = new PDO('sqlite:lista.db');
$result = $db->query("SELECT * FROM $sqltable");

//Infomracje początkowe

// phpinfo();
//nazwa bazy danych
//$nazwabazy = $db->query('SELECT name FROM sqlite_master WHERE type = "table"');
///$nazwabazy = $nazwabazy->fetch();
echo "Nazwa tabeli:<b> $sqltable</b></br>";

//ilość rekordów
$statement = $db->query("SELECT COUNT(*) FROM $sqltable");
$result = $statement->fetch();
$ile = $result[0];
echo "Ilość elementów w tabeli:<b>". $ile."</b></br>";
echo"<form action='' method='post'><input class='btn_resetuj_wszystko' type=submit value='Resetuj wszystko!' name=resetuj_wszystko></form>";
echo"<form action='' method='post'><input class='btn_sortowanie' type=submit value='Sortuj malejąco/rosnąco' name=sortowanie></form>";
echo "</br> </br>";

//koniec poczatkowych informacji
//Tabela rekordów

echo "<center><table border=1 width=75%> ";
echo'<tr style="font-weight:900;"><td>ID</td><td width=4%>S</td><td>Odc</td><td>Seria</td><td>Rok</td><td>Nazwa</td></tr>';
$licznik_tabelowy=0;
//Sortowanie
if($sortowanie == 'rosnaco'){
 $sql =<<<EOF
      SELECT * from $sqltable;
EOF;
}
else
{
     $sql =<<<EOF
      SELECT * from $sqltable ORDER BY ID DESC;
EOF;
}

//Wyswietlanie
   $ret = $db->query($sql);
while ($row = $ret->fetch()){

   //echo "Wykonano ".$licznik_tabelowy." razy.</br>";
   echo "<tr><td>";
   $licznik_tabelowy++;
   echo"<a name='$licznik_tabelowy'></a>".$row['ID']."</td>";
   $licznik_tabelowy--;
   echo '<td>'; //. $row['stan']; 
   if ($row['stan']==0){
    $btn_stan_znak = '✘'; }
   else{
    $btn_stan_znak = '✔'; }
   echo"<form action='' method='post'><input class='btn_stan".$row['stan']."' type=submit value=$btn_stan_znak name=p$licznik_tabelowy></form></td>";
   echo '<td>nr:' . $row['nr']."</td>";
   echo '<td>sezon ' . $row['sezon']."</td>";
   echo '<td>rok ' . $row['rok']."</td>";
   echo '<td>Nazwa: ' . $row['nazwa']."</td>";
   echo "</tr>";
   $licznik_tabelowy++;
}
//Obsługa przycisków

    /*if(isset($_POST['p0'])){
    $ret = $db->query('SELECT stan FROM TestowySerial WHERE id=1');
    $row = $ret->fetch();
    echo "Przycisk kliknięty!";
    if ($row['stan']==0){
    $db->exec("UPDATE TestowySerial SET stan=1 WHERE ID=1"); }
    else{
    $db->exec("UPDATE TestowySerial SET stan=0 WHERE ID=1"); }
    unset($_POST['p0']);
    //echo'<script src="norefresh.js"></script>  <div id="load"> </div>';
    header('refresh: 0;');  }
    */

for ($x=0; $x<$ile; $x++)
{
    //echo "Tyle razy: ".$x;
    if(isset($_POST['p'.$x])){
    $ret = $db->query("SELECT stan FROM $sqltable WHERE id=".$x."+1");
    $row = $ret->fetch();
    echo "Przycisk kliknięty!";
    if ($row['stan']==0){
    $db->exec("UPDATE $sqltable SET stan=1 WHERE ID=$x+1"); }
    else{
    $db->exec("UPDATE $sqltable SET stan=0 WHERE ID=$x+1"); }
    unset($_POST['p'.$x.'+1']);
    //echo'<script src="norefresh.js"></script>  <div id="load"> </div>';
    $x=$x-2;
    header("location:index.php#$x");
    $x=$x+2;
    }

    if(isset($_POST['resetuj_wszystko']))
    {
        $ret = $db->query("SELECT stan FROM $sqltable");
        $row = $ret->fetch();
        $db->exec("UPDATE $sqltable SET stan=0");
        header("refresh: 0;");
    }

    if(isset($_POST['sortowanie']))
    {
        if($sortowanie == 'rosnaco'){
        $sortowanie = 'malejaco';
        header("refresh: 0;");
        echo"SDFSDJF";
        }
        else{
        $sortowanie = 'rosnaco';
        header("refresh: 0;");
        echo"SDFSDJF";
        }
    }
}

echo "</table></br><hr>";
echo "2018 &copy \n";
//TUTAJ TESTUJEMY KOD

//TUTAJ JUŻ KOŃCZYMY TESTOWANIE
echo "</hr>";
?></body>
</html>
<?php
ob_end_flush();
?>

Pozostało 580 znaków

2018-08-04 16:13
0

Uprość kod do minimalnej formy prezentującej problem - w innym wypadku ciężko jest nam przeanalizować to, co może pójść nie tak.


Pozostało 580 znaków

2018-08-04 16:41
0
Patryk27 napisał(a):

Uprość kod do minimalnej formy prezentującej problem - w innym wypadku ciężko jest nam przeanalizować to, co może pójść nie tak.

Okej. Zostawiam tylko to co odpowiada za sort:


if(!isset($sortowanie))
    {

        $sortowanie = 'rosnaco';
        echo "Nie było ustawiononej zminne j $sortowanie !!!";
    }

if($sortowanie == 'rosnaco'){
 $sql =<<<EOF
      SELECT * from $sqltable;
EOF;
}
else
{
     $sql =<<<EOF
      SELECT * from $sqltable ORDER BY ID DESC;
EOF;
}

echo"<form action='' method='post'><input class='btn_sortowanie' type=submit value='Sortuj malejąco/rosnąco' name=sortowanie></form>";

    if(isset($_POST['sortowanie']))
    {
        if($sortowanie == 'rosnaco'){
        $sortowanie = 'malejaco';
        header("refresh: 0;");
        echo"SDFSDJF";
        }
        else{
        $sortowanie = 'rosnaco';
        header("refresh: 0;");
        echo"SDFSDJF";
        }
    }

Pozostało 580 znaków

2018-08-04 17:06
0

Ok, to teraz wytłumacz, co to znaczy nie sortuje - co się dokładnie (nie)dzieje?


Pozostało 580 znaków

2018-08-04 17:08
0
Patryk27 napisał(a):

Ok, to teraz wytłumacz, co to znaczy nie sortuje - co się dokładnie (nie)dzieje?

No nie sortuje, tzn, że domyślnie od ID 1 do X jest, czyli zmienna $sortowanie = 'rosnaco' a po kliknieciu przycisku ma sie zmienic $sortowanie = 'malejaco' i ma być od ID X do 1. Cały czas jest od 1 do X, chyba że zmienię ręcznie, zapytanie sql, ale to tylko żeby upewnić się, że zapytanie sql działa.

Pozostało 580 znaków

2018-08-04 17:09
0

Kolejność sortowania uzależniasz od $_POST['sortowanie'] - gdzie tę wartość wysyłasz w formularzu?


Pozostało 580 znaków

2018-08-04 17:11
0

echo"<form action="" method="post"><input class="btn_sortowanie" type="submit" value="Sortuj malejąco/rosnąco" name="sortowanie"></form>";

tu jest forumlarz. To ma być jeden przycisk zmieniający się zależnie od aktualnego sortowanie jak jest rosnące to po kliknieciu ma byc malejące. i na odwrót. Chodzi CI o to że muszą być dwa przyciski?

Pozostało 580 znaków

2018-08-04 17:12
0

Ok, zatem powoli - czy wiesz, co zawiera w sobie tablica $_POST?


Pozostało 580 znaków

2018-08-04 17:34
0
Patryk27 napisał(a):

Ok, zatem powoli - czy wiesz, co zawiera w sobie tablica $_POST?

Nie wiem, to jest tablica z danymi przesylanymi formularzem metodą POST, każdy ma inną nazwę, ale wiem, że po kliknięciu w submita coś w niej jest i dzięki funkcji isset(); robi się obsługę przycisków. Mam zrobić vardump(); żeby sprawdzić co w niej jest?

edytowany 1x, ostatnio: CodeRZ, 2018-08-04 17:35

Pozostało 580 znaków

2018-08-04 17:36
0

Pierwsze primo: forum jest liniowe - nie musisz cytować postu znajdującego się bezpośrednio nad Twoim ;-)

Drugie primo: skoro nie wiesz, do czego służy $_POST, dlaczego z tego korzystasz?

ale wiem, że po kliknięciu w submita coś w niej jest i dzięki funkcji isset(); robi się obsługę przycisków.

Rzuć okiem na kilka poradników w temacie obsługi formularzy w PHP, to będziesz wiedział, a nie zgadywał.


Pozostało 580 znaków

2018-08-04 17:49
0

http://webmaster.helion.pl/index.php/php-obsluga-formularzy tu jest fajnie opisane, przeczytałem

$_POST zawiera wszystkie dane, które zostały przesłane do aktualnie przetwarzanego skryptu za pomocą metody HTTP POST.

Czyli w moim przypadku będzie to wartość true or false. Niestety dalej nie wiem jaki ma to związek z moim problemem :(

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0