Autor Zpráva
james2210
Profil
Ahojte , mam taký menši problém a už sa sni trápim nejaký ten čas.

Problém pozostáva :
Mám spravený výpis užívateľov z DB (MySQL) na : <select></select>
výpis funguje až ne jednu drobnú chybu ktorú by som potreboval vyriešiť a to je že chcem rozdeliť užívateľov do skupín a tu nastáva problém.


mám napr. DB tabuľke :
ID user pass hodnost
1 Fero **** user
2 Alena **** sponzor
3 Emil **** user
4 Lucia **** user
5 Daniel **** moderator
6 Erik **** moderator

<select class="message_komu_select" name="komu_poslat" >
                    <?php $s1= mysql_query("SELECT * FROM account");
                          while($row= mysql_fetch_assoc($s1)) { 
                    ?>
                                           
                          <optgroup label="<?php echo "".ucfirst($hodnosti[$row['hodnost']])."" ?>">
                            <option value="<?php echo "".$row ['id_account']."" ?>"><?php echo "".ucfirst($row ["username"])."" ?></option>
                          </optgroup>                                            
                                                                                                                                                      
                    <?php } ?>
                </select>

keď použijem súčasný kód ktorý som tu dal tak sa to vypíše všetko až na to že label ( hodnost ) sa duplikuje.
Ak do dotazu na výpis z DB pridám : group by hodnost vypíše iba raz ale iba s jedným menom ale napr.: v hodnost : user majú 3 užívatelia (Fero , Emil , Lucia) pritom sa vypísše iba : Fero.

vedel by mi niekto pomoc ako toho docielim.
Živá ukážka
juriad
Profil
Chceš si upravit toto:
Nejčastější potíže s PHP (FAQ) » Nadpis skupiny nejen při výpisu z databáze
Seřadit podle hodnost a začít optgroup kdykoli uvidiš novou hodnot. Žádný GROUP BY nechceš.
lionel messi
Profil
james2210:
SQL dotaz je v poriadku, zoskupovanie nepotrebuješ. Odporúčam riadiť sa juriadovou odpoveďou.
james2210
Profil
Skúsil som čo navrhoval juriad lenže nejak mi to nejde a neviem kde mam chybu ...
$pamet = "" .$row ['hodnost']. "";
Parse error: syntax error, unexpected '$pamet' (T_VARIABLE), expecting ',' or ';' in C:\Program Files\xampp1\htdocs\1\napisat_spravu.php on line 52

   <?php              
                $s1= mysql_query("select hodnost, username from account order by hodnost, username"); 
                                         
                $pamet = '';
                while($row= mysql_fetch_assoc($s1))
                {
                  if ($row ['hodnost'] != $pamet)
                  {
                    $pamet = "" .$row ['hodnost']. "";
                    echo "<optgroup label=" $pamet "</optgroup>";
                  }
                  echo "<option value=" .$row ['id_account']. ">" .ucfirst($row ["username"]). "</option>";
                }
                ?>   
Alphard
Profil
Uvozovky pro html je třeba escapovat (nebo použít apostrofy, nebo tam dát . pro spojení řetězců (s tím, že na výstupu uvozovky nebudou vůbec))
echo "<optgroup label=\"$pamet\"></optgroup>";

$pamet = "" .$row ['hodnost']. "";
Tohle vypadá strašně, připojovat prázdný řetězec nemá žádný smysl, stačí psát
$pamet = $row['hodnost'];
james2210
Profil
Ďakujem všetky za pomoc, už mi to funguje.

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: