#1 Tvorba webu » Stránkování - PHP & Jquery » 2019-04-03 18:41:47

ondrejpatrovic
Odpovědi: 0

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.

#2 Re: Tvorba webu » FPDF error:Missing or incorrect image file » 2019-03-06 22:46:31

Děkuji za pomoc, vše už funguje tak, jak má, minimálně prozatím.

#3 Re: Tvorba webu » FPDF error:Missing or incorrect image file » 2019-03-06 22:06:16

Dobrý den, děkuji za potvrzení domněnky - zkoušil jsem testovat u jiných obrázků a vše fungovalo bez obtíží a PDF výstup se ukázal bez problému.
Teď mám ovšem potíže je dostat na server, vyskakuje mi chyba 
"Incorrect output destination: vstupenky/vstupenka.pdf"

vstupenky je opět složka na serveru a vstupenka.pdf název daného vygenerovaného PDF souboru.
Zde přikládám i syntaxi, která by snad měla být v pořádku:
$pdf->Output('F','vstupenky/vstupenka.pdf');

Napadlo mě, že by se mohlo jednat o nedostatečná práva, ale právě například obrázky jde na server ukládat bez problému.

#4 Re: Tvorba webu » FPDF error:Missing or incorrect image file » 2019-03-05 22:14:49

Dobrý den, posílám ukázku kódu, kde dochází ke komplikaci:

$sqm = 'SELECT uo.nazev, uo.oznaceni, uo.dodani, uo.platba,uo.cena, o.total_cena AS totaly, vo.objednavka, e.obrazek AS obrazek, o.pouzito_kreditu AS kredity, o.datum_objednavky FROM uzivatele_objednavka uo JOIN objednavky o ON (uo.id_o = o.id_o) JOIN vstupenka_objednavka vo ON (vo.objednavka = o.id_o)  JOIN eventy e ON (e.id_event = vo.e_vent) WHERE uo.id_o="'.$idecko.'"';
   mysqli_select_db($conn, 'ticketshop');
   $rittig = mysqli_query( $conn, $sqm);

   if($rittig) {
//echo "yeeeees";
   }

   else {
	 die('Could not send data: ' . mysqli_error($conn). 'něco je špatně');
}
$pdf = new tFPDF();
 $pdf->AddPage();
 $pdf->AddFont('DejaVu','','DejaVuSansCondensed.ttf',true);
$pdf->SetFont('DejaVu','',14);    

while($row = mysqli_fetch_array($rittig)){
  $pdf->Image($row['obrazek'],60,30,90);
  $pdf->Cell(180, 40, $row['nazev'], 0, 2, 'C');
  $pdf->Cell(180, 20, $row['dodani'], 0, 1, 'C');
  
  }   

    $pdf->Output();

SELECT by měl být v pořádku, jak jsem psal, je rozpoznána cesta k němu "images/test.jpg" - images je má složka na serveru, kam ukládám dané obrázky,a v databázi je na ní přímo navedeno - při normálním zobrazování stránky bez problému funguje.

#5 Tvorba webu » FPDF error:Missing or incorrect image file » 2019-03-05 21:02:05

ondrejpatrovic
Odpovědi: 6

Zdravím, snažím se po odeslání objednávky vygenerovat PDF s obrázkem z databáze, po odeslání mi ovšem vyskočí tato chyba: FPDF error: Missing or incorrect image file: images/test.jpg

Slyšel jsem, že problém může být, pokud není zapnuto allow_url_fopen, ovšem v tomto případě se o to jednat nemůže.
Nevíte někdo, co s tím?
Předem děkuji za odpověď.

Zápatí

Založeno na FluxBB | CZ a SK