Autor | Zpráva | ||
---|---|---|---|
David Zindulka Profil |
#1 · Zasláno: 5. 5. 2017, 10:07:40
Vytáhávám z databáze třeba 50 položek a všechny se mi očíslují boxy a divy, že když zmačknu danej div zvětší se mi danej id div atd. jenže ten kod je pak napsanej úplně strašně, když se kouknu do zdrojaku tak je to samé opakovaní jen s jinačí číslicí, prosím o radu jak tento kod zjednodušit a nedělat to podmínkou if. Bavím se o tom že se mi do stylů a scriptů doplnují číslice přes php. díky
$dotaz = "SELECT * FROM `eshop` WHERE Zverejnit='ano' ORDER BY ".$order; $data = mysqli_query($link, $dotaz) or die("Z databáze se nepodařilo vypsat data" . mysqli_error($link)); $pocet = 1; $pocetlicha = 1; $pocetsuda = 2; while ($zaznam = mysqli_fetch_array($data)) { if ($pocet % 2 == 1) { echo"<div id='".$zaznam['Znacka']."$pocetlicha'><div id='box$pocetlicha' class='djLicha'>"; $pocetlicha+=2; }else{ echo"<div id='".$zaznam['Znacka']."$pocetsuda'><div id='box$pocetsuda' class='djSuda'>"; $pocetsuda+=2; } echo"<form method='POST'>"; echo "<div class='fotoLeva' style='background-size: 100% 100%; background-image: url(\"foto/eshop/".$zaznam['Nazev'].".png\")'><img style='margin-left:0px; margin-top:0px;' alt='".$zaznam['Nazev']."' src='foto/eshop/znacky/".$zaznam['Znacka'].".png' class='fotoLeva'></div><div class='poradikalendar'><h2>"; echo number_format($zaznam['Cena'],0,","," ")." Kč</h2></div>"; echo"<div class='jmenokalendar'><h2>".$zaznam['Nazev']."</h2></div>"; echo"<div class='popis'><p>".$zaznam['Popisviceinfo']."</p><button name='koupit' class='buttonM' style='float:right'; value='".$zaznam['ID']."'>Vybrat do košíku</button> <p><button id='stisk$pocet' class='NE".$zaznam['Viceinfo']."' onclick='return false'>Zobrazit více</button></p> </div>"; echo"<div class='premiumspodnicast'> <div style='text-align:left; margin-left:20px;' class='bio'> <p>".$zaznam['Popis']."</p></form></div> </div></div></div>"; $pocet++; } ?> </div> </div> <style> <?php include 'orderby.php'; $order = 'type'; if (isset($_GET['orderBy']) && in_array($_GET['orderBy'], $orderBy)) { $order = $_GET['orderBy']; }else{ $order = "Cena DESC"; } $dotaz = "SELECT * FROM `eshop` WHERE Zverejnit='ano' ORDER BY ".$order; $data = mysqli_query($link, $dotaz) or die("Z databáze se nepodařilo vypsat data" . mysqli_error($link)); $pocet = 1; while ($zaznam = mysqli_fetch_array($data)){ echo"#box$pocet { width: 100%; height: 306px; } #box$pocet.clicked { height: auto; } @media only screen and (max-width: 1040px) { #box$pocet { width: 100%; height: 150px; } #box$pocet.clicked { height: auto; } } "; echo"#".$zaznam['Znacka']."$pocet { display:block; } #".$zaznam['Znacka']."$pocet.none { display:none; }"; $pocet++; } ?> </style> <script> <?php include 'orderby.php'; $order = 'type'; if (isset($_GET['orderBy']) && in_array($_GET['orderBy'], $orderBy)) { $order = $_GET['orderBy']; }else{ $order = "Cena DESC"; } $dotaz = "SELECT * FROM `eshop` WHERE Zverejnit='ano' ORDER BY ".$order; $data = mysqli_query($link, $dotaz) or die("Z databáze se nepodařilo vypsat data" . mysqli_error($link)); $pocet = 1; while ($zaznam = mysqli_fetch_array($data)){ echo" $('#stisk$pocet').on('click', function() { $('#box$pocet').toggleClass('clicked'); });"; echo" $('#".$zaznam['Znacka']."e').on('click', function() { $('#".$zaznam['Znacka']."$pocet').toggleClass('none'); });"; $pocet++; } ?> $('.NEviceinfoano').click(function(){ var $this = $(this); $this.toggleClass('NEviceinfoano'); if($this.hasClass('NEviceinfoano')){ $this.text('Zobrazit více'); } else { $this.text('Zobrazit méňe'); } }); </script> |
||
Kajman Profil |
#2 · Zasláno: 5. 5. 2017, 10:44:00
V css i javascript části vůbec nepoužívejte cykly dat z dotazu s různými id, ale vytvořte si na ty položky stejnou class a tu nastylujte a použijte pro nastavení událostí.
|
||
Joker Profil |
#3 · Zasláno: 5. 5. 2017, 15:03:05
David Zindulka:
Když vezmu ten začátek: • Vypisovat SQL chyby do stránky není moc dobrý nápad. Návštěvník s chybovou hláškou moc neudělá (maximálně když bude zlý, využije ji k hacknutí webu), zato se o chybové hlášce potřebuje dovědět správce webu. • $pocetlicha a $pocetsuda jsou úplně zbytečné, dají se spočítat z $pocet. • Je zbytečné ve dvou větvích IF generovat ve výsledku totožný HTML kód, který se liší jen v jedné CSS třídě. Měňte tam jen tu CSS třídu. • Některé položky z DB jsou zjevně texty, ale mezi jejich výběrem a vložením do kódu není žádné ošetření speciálních znaků v HTML. • Ani hodnoty získané z GET (jako $orderBy) se neošetřují před vložením do SQL dotazu. • Proč se vyrábí pro každý #box* styl, když všechny ty styly jsou úplně stejné? |
||
Časová prodleva: 6 let
|
0