Autor Zpráva
Andrej.B
Profil
Zdravim,

mam formular, kde vyberam podla id_druh_material. Pokial chcem vybrat len podla jedneho alebo vsetkych, tak mi to ide ako potrebujem /SELECT - OPTION/...
<div class="form-group">    
<form   method="get" action="/statistiky/sklad/?id_druh_material=">
 <div class="form-row">

<div class="col-2">



<select name="id_druh_material" class="custom-select">    
 <option value="">Vsetky</option>
 <option value="1">pena</option>
<option value="2">koza</option>
<option value="3">tkanina</option>
<option value="4">uplet</option>
<option value="5">podšívka</option>
 
 </select> 

</div>

<div class="col-2"><input type="submit" class="form-control"  value="vyhladat"  title=""></form></div>

</div>

</div>


Rad by som si to prerobil do checkboxu... Formular sa mi generuje podla vyberu z DB... Teraz tam je 5 poloziek.

Takto to mam teraz a vybera ok.
Adresa na vsetko je /statistiky/sklad/?id_druh_material=
Adresa na 1 je /statistiky/sklad/?id_druh_material=1

 <?php 
 if (empty($_GET['id_druh_material'])) 
            {     
                $clause_where = ''; 
            } 
            else 
            {
                
                $clause_where = " AND sp.id_druh_material = ".$_GET['id_druh_material']."";
                
            } 
  
  
  
$result = $conn->query("
  SELECT sp.*,  sm.nazov_material, dm.nazov_druh_material
  FROM sklad_polozka sp
  JOIN sklad_material sm ON sm.id_material = sp.id_material
  JOIN druh_material dm ON dm.id_druh_material = sp.id_druh_material
  WHERE
  YEAR(FROM_UNIXTIME(datum_sklad_polozka)) = 2018
  $clause_where
  GROUP BY sp.id_material
  ORDER BY sp.id_druh_material ASC
  ");
  ?>

Rad by som si vygeneroval checkboxy /to viem/, ktore mozem zaskrtavat podla toho co chcem vsetko potom vyselectovat z DB... Ako by vlastne vypadal ten dotaz do DB, ka by som mal zaskrtnute napriklad pena, tkanina, koza? Ako by som mal vlastne riesit dynamicky podla zaskrtnutia to:
$clause_where = " AND sp.id_druh_material = ".$_GET['id_druh_material']."";
Aby som dostal do premenej $clause_where toto:

$clause_where = " AND sp.id_druh_material = 1 OR sp.id_druh_material = 2 or sp.id_druh_material = 3";

Diky a pekne Vianoce :)
Keeehi
Profil
Andrej.B:
Rad by som si vygeneroval checkboxy /to viem/,
V první řadě bude potřeba, aby měly trochu jiné jméno.
name="id_druh_material[]"
Tím se vytvoří v PHP pole. A to už pak stačí jen projít.
if(!empty($_GET['id_druh_material']) and is_array($_GET['id_druh_material'])) {
    if(!empty($clause_where)) {
        $clause_where .= ' AND';
    }
    
    $clause_where .= ' (sp.id_druh_material = ' . implode(' OR sp.id_druh_material = ', $_GET['id_druh_material']) . ')';
}
Není to ošetřené proti sqlinjection útoku ale jelikož je to něco co si děláš jen pro sebe, tak to asi není potřeba řešit.
Andrej.B
Profil
Keeehi:

dakujem... upravil som si to takto:

if(!empty($clause_where)) {
       // $clause_where .= ' AND';
    }
    
    $clause_where .= ' AND sp.id_druh_material = ' . implode(' OR sp.id_druh_material = ', $_GET['id_druh_material']) . '';
}

nakolko mi tam tie zatvorky nefungovali, musel by som to urobit nejako inak asi este v tom selecte:

echo $clause_where; mi dava AND sp.id_druh_material = 2 OR sp.id_druh_material = 3 davalo (AND sp.id_druh_material = 2 OR sp.id_druh_material = 3)
co mi vyhadzovalo chybu
WHERE
  YEAR(FROM_UNIXTIME(datum_sklad_polozka)) = 2018
(AND sp.id_druh_material = 2 OR sp.id_druh_material = 3)

vs.

WHERE
  YEAR(FROM_UNIXTIME(datum_sklad_polozka)) = 2018
AND sp.id_druh_material = 2 OR sp.id_druh_material = 3
Kcko
Profil
Andrej.B:
WHERE
YEAR(FROM_UNIXTIME(datum_sklad_polozka)) = 2018
AND (sp.id_druh_material = 2 OR sp.id_druh_material = 3)
Andrej.B
Profil
Pokial tam nic nedam v defaulte mi vybera všetko, a az potom si vyberam z checkboxov... Funguje ako ma...
Andrej.B
Profil
a nejake to info ako to vypada :)

vsetko...



a vyber

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:

0