#1 2019-04-03 18:41:47

ondrejpatrovic
Endora uživatel
Registrován: 1970-01-01
Příspěvky: 6

Stránkování - PHP & Jquery

Zdravím, už nějakou dobu si vrtám hlavu s tím, jak na svou stránku zakomponovat stránkování bez toho, abych musel kód nějak kompletně přepracovat.

Na straně serveru probíhá toto:

<?php
session_start();
 
header('Content-Type: text/plain; charset=utf-8-czech');[/ins]

   $dbhost = 'innodb.endora.cz:3306';
   $dbuser = 'ondrejpatrovic';
   $dbpass = '***********';
   
   $conn = mysqli_connect($dbhost, $dbuser, $dbpass);
   mysqli_set_charset($conn, "utf8");
   $conn->query("set character_set_results `UTF-8`"); 
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $requested_page = isset($_GET['page']) ? intval($_GET['page']) : 1;

   $start_from = ($page - 1)*$pocet;

  
   switch ($_POST['cislo']) {
   	case 1:
   		$sql = 'SELECT DISTINCT r.id_event AS ID, r.nazev AS nazev, COALESCE(ROUND(AVG(eh.hodnoceni),2),"0") as hodnoceni, r.obrazek AS obrazek, r.popis AS popis FROM eventy r LEFT JOIN eventy_hodnoceni eh ON (eh.e_vent = r.id_event)
      GROUP BY r.nazev
		ORDER BY RAND()';
   		break;

   	case 2:
   		$sql = 'SELECT DISTINCT r.id_event AS ID, r.nazev AS nazev, r.cas_od,  r.obrazek AS obrazek,COALESCE(ROUND(AVG(eh.hodnoceni),2),"0") as hodnoceni, r.popis AS popis FROM eventy r LEFT JOIN eventy_hodnoceni eh ON (eh.e_vent = r.id_event)
   		WHERE r.cas_od<CURDATE() + INTERVAL 3 MONTH AND r.cas_od>=CURDATE()
      GROUP BY r.nazev
   	ORDER BY r.cas_od ASC
            ';
   		break;
   	case 3:
   		$sql = 'SELECT DISTINCT r.id_event AS ID, r.nazev AS nazev, r.cas_do, COALESCE(ROUND(AVG(eh.hodnoceni),2),"0") as hodnoceni, r.obrazek AS obrazek, r.popis AS popis FROM eventy r LEFT JOIN eventy_hodnoceni eh ON (eh.e_vent = r.id_event)
   		where r.cas_do
      GROUP BY r.nazev
         ORDER BY r.cas_do DESC';
   		break;

      case 4:
         $sql = 'SELECT DISTINCT r.id_event AS ID, r.nazev AS nazev, r.typ AS typ, COALESCE(ROUND(AVG(eh.hodnoceni),2),"0") as hodnoceni, r.obrazek AS obrazek, r.popis AS popis FROM eventy r LEFT JOIN eventy_hodnoceni eh ON (eh.e_vent = r.id_event)
      
         WHERE r.typ=1
             GROUP BY r.nazev
         ';

         break;

      case 5:
         $sql = 'SELECT DISTINCT r.id_event AS ID, r.nazev AS nazev, r.typ AS typ, COALESCE(ROUND(AVG(eh.hodnoceni),2),"0") as hodnoceni, r.obrazek AS obrazek, r.popis AS popis FROM eventy r LEFT JOIN eventy_hodnoceni eh ON (eh.e_vent = r.id_event)
      
         WHERE r.typ=2
             GROUP BY r.nazev';
         break; 

       case 6:
         $sql = 'SELECT DISTINCT r.id_event AS ID, r.nazev AS nazev, COALESCE(ROUND(AVG(eh.hodnoceni),2),"0") as hodnoceni, r.obrazek AS obrazek, r.popis AS popis FROM eventy r LEFT JOIN eventy_hodnoceni eh ON (eh.e_vent = r.id_event)       
         WHERE r.typ=3
             GROUP BY r.nazev';
         break;

        case 7:
         $sql = 'SELECT DISTINCT r.id_event AS ID, r.nazev AS nazev,  COALESCE(ROUND(AVG(eh.hodnoceni),2),"0") as hodnoceni, r.obrazek AS obrazek, r.popis AS popis FROM eventy r LEFT JOIN eventy_hodnoceni eh ON (eh.e_vent = r.id_event)
          WHERE r.typ=4
              GROUP BY r.nazev';
         break;

       case 8:
         $sql = 'SELECT DISTINCT r.id_event AS ID, r.nazev AS nazev,  COALESCE(ROUND(AVG(eh.hodnoceni),2),"0") as hodnoceni, r.obrazek AS obrazek, r.popis AS popis FROM eventy r LEFT JOIN eventy_hodnoceni eh ON (eh.e_vent = r.id_event)
          WHERE r.typ=5
              GROUP BY r.nazev';
         break;

      case 9:
         $sql = 'SELECT DISTINCT r.id_event AS ID, r.nazev AS nazev, COALESCE(ROUND(AVG(eh.hodnoceni),2),"0") as hodnoceni, r.obrazek AS obrazek,  r.popis AS popis FROM eventy r LEFT JOIN eventy_hodnoceni eh ON (eh.e_vent = r.id_event)
          WHERE r.typ=6
              GROUP BY r.nazev';
         break;

         case 10:
         $sql = 'SELECT DISTINCT r.id_event AS ID, r.nazev AS nazev, COALESCE(ROUND(AVG(eh.hodnoceni),2),"0") as hodnoceni, r.obrazek AS obrazek, r.popis AS popis FROM eventy r LEFT JOIN eventy_hodnoceni eh ON (eh.e_vent = r.id_event)
        GROUP BY r.nazev
   		ORDER BY round(hodnoceni,3) DESC';
         break;

         case 11:
         $sql = 'SELECT DISTINCT r.id_event AS ID, r.nazev AS nazev, COALESCE(ROUND(AVG(eh.hodnoceni),2),"0") as hodnoceni, r.obrazek AS obrazek, r.popis AS popis FROM eventy r LEFT JOIN eventy_hodnoceni eh ON (eh.e_vent = r.id_event)
      GROUP BY r.nazev
      ORDER BY r.id_event DESC';
         break;         
   }

   mysqli_select_db($conn, 'ticketshop');
   $result = mysqli_query($conn, $sql);
   
   if(! $result ) {
      die('Could not get data: ' . mysqli_error($conn));
   }
   $rows = array();
	while( $r = mysqli_fetch_object($result)){ 
     $rows[] = $r;
}
echo json_encode($rows);
?>

O následné zpracování v Jquery se pak stará tato funkce:

function sort(cislo){

 	console.log("sort");
	$(".list-group-item").css( "background-color", "white" );
		$("#"+cislo).css( "background-color", "#66D6EC" );
	

		$.post("Eventy_Sorty.php",{cislo: cislo},function(vysledek){
		//	console.log(vysledek);
			vysledek2=JSON.parse(vysledek);
			console.log(vysledek2);
		//	console.log(vysledek2[0].nazev);
		//	console.log(vysledek2[0].hodnoceni);
						$("#vklad").html("");
						if (vysledek2.length==0) {
							$("#vklad").html("");
							$("#vklad").append("NENALEZENY ŽÁDNÉ VÝSLEDKY");
						}
						else {
			for(var m=0;m<vysledek2.length;m++){
					//		var popis= vysledek2[m].popis.slice(0,40) + "...";
			$("#vklad").append(""
			+"<div class='col-sm-3 col-lg-3 col-md-3'>"
                        +"<div class='thumbnail'>"
                            +"<img class='img-responsive' src='"+vysledek2[m].obrazek+"' alt=''>"
                            +"<div class='caption'>"
                               +"<h4 align='center'><a href='Detail_Eventu.php?IDR="+vysledek2[m].ID+"' onclick=' ("+vysledek2[m].ID+")'>"+vysledek2[m].nazev+"</a>"
                                +"</h4>"
                               +"<p align='center' id='Hodnoceni'><b>INDEX OČEKÁVÁNÍ: "+vysledek2[m].hodnoceni+"/10</b></p>"
                              //  +"<p align='center'>"+popis+"</p>"
                                +"</div>"
                    +"</div>"

			);
		/*	 if(vysledek2[m].hodnoceni==null){
        $("#Hodnoceni").html("<b>BEZ INDEXU OČEKÁNÍ</b>");
      }
      else{
        $("#Hodnoceni").html("<b>INDEX OČEKÁVÁNÍ: "+vysledek2[m].hodnoceni+"/10</b>");
      }  */
		}
		}
		});
	}

(i) jsou v kulatých závorkách jen zde, jinak v kódu mám samozřejmě hranaté.
Budu rád za jakékoli připomínky a nápady, za než již předem děkuji.

Upravil ondrejpatrovic (2019-04-03 18:45:53)

Offline

Zápatí

Založeno na FluxBB | CZ a SK