Sortowanie w PHP oraz SQL

0

Siemka, mam problem mam sobie 2 tabele w bazie danych: Posty, posty_oceny Rekordy tabeli Posty są tutaj w linku http://prntscr.com/pigq01 a tabeli posty_oceny tutaj: http://prntscr.com/pigqfv

Teraz jeśli można, prosiłbym o pomoc zrobienia sortowania do tego, aby posty pokazywały się od najwyższej oceny.
Jeśli jest to istotne, to mogę zaznaczyć że oceny postu są od 1 do 5 :D

1

Chyba coś mi się źle wyświetla przy obrazkach, ale sortowanie załatwiasz poprzez ORDER BY nazwa_kolumny DESC

ASC - rosnąco
DESC - malejąco

0

W sensie, nie wiedziałem czego dokładnie zrobić ss więc zrobiłem ss jeden i drugiej tabeli, chciałbym aby te tabele jakby się złączyły i żebym mógł po prostu je wyświetlać od najwyższej oceny :P
I teraz tak w tabeli Posty czyli tej dużej tabeli w sumie nic nas nie interesuje oprócz kolumny id więc jakby zaznaczam sobie kolumnę ID z tabeli Posty. I teraz dla mnie pod górkę Z tabeli posty_oceny zaznaczam sobie w sumie wszystko, i tak, Id z tabeli posty musi się zgadzać z id_postu w tabeli posty_oceny Jeśli to się zgadza to teraz tak aby wybrane już jakby wiersze zgadzały się z kolumną serwer. Jeśli to wszystko bedzie okej, to chciałbym aby te zaznaczone wiersze sumowały kolumnę rateIndex, czyli żeby się wszystko dodało, podzieliło przez ilość ocen (czyli wierszy) i na końcu sortowało od najwyższej średniej na stronie :D Nie wiem czy mnie zrozumieliście XDD Postarałem się to wytłumaczyć tak jak potrafię

0

Hmm, no naprawdę nie wiem jak to wytłumaczyć, jestem zielony w tym temacie, chce po prostu zrobić sortowanie od najwyższej średniej, napisałem co chciałem, kurczę naprawdę nie wiem jak to wytłumaczyć :/

1

Wygląda na to, że wszystko zrobisz SQLem. Musisz użyć "Join" miedzy tabelami jak wspomniał @ccwrc.
Jakiej bazy używasz? Czy piszesz w czystym PHP czy to jakiś framework?
Pokaż jakiś kod gdzie łączysz się do bazy.

0
jurek1980 napisał(a):

Wygląda na to, że wszystko zrobisz SQLem. Musisz użyć "Join" miedzy tabelami jak wspomniał @ccwrc.
Jakiej bazy używasz? Czy piszesz w czystym PHP czy to jakiś framework?
Pokaż jakiś kod gdzie łączysz się do bazy.

A więc tak łącze się do bazy tak

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "strona";
// Create connection

$conn = new mysqli($servername, $username, $password, $dbname);
mysqli_set_charset($conn,"utf8");
?>

Nie wiem dokładnie o co chodzi z framworkiem, ale pisze z czystym PHP.
Jeśli chodzi o pytanie jakiej bazy używam? To chodzi np. o MySQL czy MariaDB? Jeśli tak, to MySQL Służy mi do tego program XAMPP

Jeśli chodzi o wyświetlanie się postów to wygląda on tak:

<?php
$adres_strony = ustawienia('adres_strony');
$adres_strony = $adres_strony['opcja'];
$conn = connect();

$ip = $_SERVER['REMOTE_ADDR'];


    if (isset($_POST['save'])) {
        $ratedIndex = $conn->real_escape_string($_POST['ratedIndex']);
        $id = $conn->real_escape_string($_POST['cos']);
        $serwer = $conn->real_escape_string($_POST['serwer']);
        
        $conn->query("INSERT INTO posty_ocena (rateIndex, adres_ip, id_postu, serwer) VALUES ('$ratedIndex', '$ip', '$id', '$serwer')");
            
    }


// PAGINACJA
    if (isset($_GET['p'])) {
        $pageno = intval($_GET['p']);
    } else {
        $pageno = intval(1);
    }
    if(isset($_GET['serwer'])){
      $serwer = $_GET['serwer'];
      $sql = "SELECT * FROM posty WHERE serwer='$serwer'  LIMIT 1";
      $res_data = mysqli_query($conn,$sql);
      $row = mysqli_fetch_array($res_data);
      $serwerid = $row['id_serwera'];

      $no_of_records_per_page = 8;
      $offset = ($pageno-1) * $no_of_records_per_page;
      $total_pages_sql = "SELECT COUNT(*) FROM posty WHERE serwer_id='$serwerid' ";
      $result = mysqli_query($conn,$total_pages_sql);
      $total_rows = mysqli_fetch_array($result)[0];
      $total_pages = ceil($total_rows / $no_of_records_per_page);
  }
?>
<?php navbar() ?>

<div class="main">
    <div class="tytul-strony">Wybierz Serwer</div>

    <div class="post-strona">

        <div class="tekststrony">

          <div class="blok-box">

              <?php
              $sql = "SELECT * FROM posty WHERE serwer_id=0 order by sortowanie";
              $res_data = mysqli_query($conn,$sql);
              while($serwery = mysqli_fetch_array($res_data)){ ?>
                <a href="/serwery/<?php $str=$serwery['id_serwera']; $str = str_replace(' ', '', $str); echo $str;?>#me">
                    <div class="card-sklep">
                        <img src="<?php echo $adres_strony.$serwery['zdjecie1']?>">
                    </div>
                </a>
              <?php } ?>
          </div>
            <center>
              <a href="../dodaj" class="guzik"><i class="fas fa-star" style="color: white;"></i> Dodaj zgłoszenie!</a>
            </center>
        </div>
    </div>
    <?php if(isset($_GET['serwer'])): ?>
      <?php
      $serwer =  mysqli_real_escape_string($conn, $_GET["serwer"]);
      $sql = "SELECT * FROM posty WHERE serwer_id='$serwer' and serwer_id > 0 and aktywacja = 1 order by rand() LIMIT $offset, $no_of_records_per_page";
      $res_data = mysqli_query($conn,$sql);
      while($cribsy = mysqli_fetch_array($res_data)){ ?>
        
      <div class="post-strona">
          <div class="tekststrony" >
              <div class="card" id="me">
                      <div class="container">
                          <p class="p1" style="text-align: center;"><?php echo $cribsy['nick']?></p>
                          <hr>
                          <p class="p2" style="text-align: center;"><?php echo $cribsy['tresc']?></p>
                          <center>
                          <a href="<?php echo $cribsy['zdjecie1']?>" target="_blank"><img src="<?php echo $cribsy['zdjecie1']?>" class="multimedia-res" style="max-height: 30%; width: 30%;"></a>
                          <a href="<?php echo $cribsy['zdjecie2']?>" target="_blank"><img src="<?php echo $cribsy['zdjecie2']?>" class="multimedia-res" style="max-height: 30%; width: 30%;"></a>
                          <a href="<?php echo $cribsy['zdjecie3']?>" target="_blank"><img src="<?php echo $cribsy['zdjecie3']?>" class="multimedia-res" style="max-height: 30%; width: 30%;"></a>
                          </center>
                          <br>

                          <div align="center" >


                          <?php
                            $idpostu = $cribsy['id'];
                            $sql = "SELECT * from posty_ocena WHERE id_postu='$idpostu' AND adres_ip='$ip'";
                            $query = mysqli_query($conn, $sql);

                            if (mysqli_num_rows($query) <= 0){
                              echo "Oceń: ";
                              for ($i=1; $i<=5; $i++) {
                              printf('<i id="ocena" class="fa fa-star" style="cursor: pointer;" data-user="'.$cribsy['id'].'" data-serwer="'.$cribsy['serwer_id'].'"  data-index="'.$i.'"></i>', $i+1, $i+1);
                              }
                            }
                            else{
                              echo '<font color="red">Już zagłosowałeś</font> ';
                            }
                          ?>
                          <br>
                          <?php 
                            ocena(''.$cribsy['id'].'');
                          ?>
                          </div>
                      </div>
              </div>
          </div>
      </div>
    <?php }  ?>


    <div class="post">
      <div class="pagination" style="text-align: center; margin: 2%;">
        <a href="<?php if($pageno <= 1){ echo ''; } else { echo "?p=".($pageno - 1); } ?>" class="<?php if($pageno <= 1){ echo 'not-active'; } ?>"><i class="fas fa-chevron-left"></i></a>
        <a href="<?php if($pageno >= $total_pages){ echo ''; } else { echo "?p=".($pageno + 1); } ?>" class="<?php if($pageno >= $total_pages){ echo 'not-active'; } ?>"><i class="fas fa-chevron-right"></i></a>
      </div>
    </div>
  <?php endif ?>

</div>
<script>

$(document).ready(function () {

  $('.fa-star').on('click', function () {
     ratedIndex = parseInt($(this).data('index'));
     cos = parseInt($(this).data('user'));
     serwer = parseInt($(this).data('serwer'));
     zapiszocene();
     
     
  });
});

</script>

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