Autor Zpráva
David Zindulka
Profil
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
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
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é?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: