» Poradna » Programy

Php naplnění comboboxu

Odpovědět  |  Zobrazit bez stromu  |  Upozornit redakci  |  nových odpovědí: 7/7
 |   |  Microsoft Windows 8 Chrome 22.0.1229.79  |  [46.227.8.---]

Zdravím,rád bych se zeptal na radu zkušenějších. Snažím se pomocí php naprogramovat jednoduchý e-shop. Data zobrazuji z databáze v phpmyadmin a momentálně se snažím naplnit combobox daty ze sloupce "druh" a následně podle těchto hodnot filtrovat obsah. Ovšem názvy se zde opakují, tudíž jsem chtěl vytvořit cyklus s podmínkou, kdy se to název vypíše jen jednou, ale ne a ne na to přijít. Data se v comboboxu neustále opakují.Přikládám ukázku kódu.<form name="F1" method="post"> <table border="1" align="center" width="200"> <tr> <th colspan="3"> <h2> Filtrace </h2> </th> </tr> <tr> <th> Druh: </th> <th> <?php $dotaz="select druh trida from zbozi;"; $vysledek = mysql_query($dotaz) or die ("Nelze provézt dotazy"); echo "<select name='druh'>"; echo "<option value='%'>Vše</option>"; while (list($druh) = mysql_fetch_row($vysledek)) { if (isset($_POST['druh']).$druh==$_POST['druh']) $vybrano="selected"; else $vybrano=""; echo "<option value='".$druh."' $vybrano>".$druh."</option>"; } echo "</select>"; ?> </th> <th> <input type="submit" name="filtruj" value="Filtruj" /> </tr> </table> Děkuji za případné návrhy.

Odpovědi na otázku

 |   |  Microsoft Windows 7 Firefox 14.0.1

Ahoj.Rešíš to zbytečně složitě, ale učený z nebe samozřejmě nespadl (to jen někteří borci).Natakovéto filtrování dat je často nejvhodnější pracovat už na úrovni databáze.Databáze zná kouzelné group by, které zajistí výpis jen rozdílných hodnot ve sloupci.Mělo by tedy stačit upravit:$dotaz="select druh trida from zbozi group by druh";Mimochodem nejsem si jistý, jak máš nastaveno při dalších průchodech $vybrano="selected";Nikde totiž stav $vybrano neměníš.To by mělo generovat nevalidní HTML kód, kdy všechny položky jsou s atributem selected.Zatímco podle normy by selected měla být výhradně jedna položka.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 8 Chrome 22.0.1229.79  |  [46.227.8.---]

S tím selected jsem si toho všiml, až co jsi to napsal. Následně jsem select přiřadil jen hodnotě "vše". Sice při vyfiltrování podle něčeho mi to select vrátí zase na "vše", ale to je zanedbatelný detail.Děkuji, opravdu mi to ulehčilo práci i pro budoucí programování!S pozdravem,Daniel.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 8 Chrome 26.0.1410.64  |  [78.156.36.---]

www.devbook.cz - programátorská sociální síť :)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 8 Chrome 22.0.1229.79  |  [46.227.8.---]

Díky, takové stránky se vždy hodí pro další problémy, které určitě přijdou. :o)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Mozilla 18.0  |  [178.77.233.---]

BTW: mašinkový kód (tr td td tr tr tdtdttdtd...) se už v tomto století nepíše bohúšu

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 8 Chrome 26.0.1410.43  |  [46.227.8.---]

Kdybych znal modernější způsob, používal bych ho. Bohužel, když nás to takto vyučují na škole, jsem nucen jej používat, když nám to cpou do hlavy.Naštěstí jsou tu lidé, kteří nás narozdíl od zastaralých způsobů, které nám cpou do hlavy učitelé, naučí jednodušší a modernější způsob.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux AppleMAC-Safari 5.0  |  [88.101.190.---]

No jo, machýrek.

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: 10, Druh, Echo, Jednoduchý e-shop



Určitě si přečtěte