IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
vanecek.karel:10.3.2015 14:17

Dobrý den, měl bych hned dna dotazy. Potřeboval bych udělat výpisy z databáze s možností volby. Jedná se mi o to, aby se mi na stránce s uživateli zobrazilo posledních deset uživatelů, kteří se registrovali a byla u toho možnost ještě zvolení s profilovým obrázkem či bez obrázku (avatar/noavatar). Dokážu si udělat script na výpis uživatelů, ale neumím tento script omezit na počet. Rovněž neumím vytvořit script, který by mi vyvolal možnost, aby se u výběru zobrazil profilový obrázek či nikoli. Předem děkuji za pomoc.

Odpovědět
10.3.2015 14:17
Jsem jaký jsem a na tom nic měnit nebudu.
Avatar
Odpovídá na vanecek.karel
Michal Šmahel:10.3.2015 15:19

Zkopíruj sem svůj dosavadní script, celý ti ho psát nebudu.

Nahoru Odpovědět
10.3.2015 15:19
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
debeneesse
Člen
Avatar
debeneesse:10.3.2015 16:07

K limitu použij LIMIT klauzuli.
http://dev.mysql.com/…/select.html

Rovněž neumím vytvořit script, který by mi vyvolal možnost, aby se u výběru zobrazil profilový obrázek či nikoli.
Co myslíš tím vyvolal možnost?

 
Nahoru Odpovědět
10.3.2015 16:07
Avatar
Odpovídá na debeneesse
Michal Šmahel:10.3.2015 16:13

Tím výběrem asi myslí:
V nějaké stránce má select nebo odkazy na to nebo to a potřebuje podle výběru vypsat ty články.

Nahoru Odpovědět
10.3.2015 16:13
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Michal Šmahel:10.3.2015 16:15

Pokud to vypisuješ přes foreach, stačí si jen připravit proměnnou a do té uloží true/false (v tom výběru na té stránce) a při výpisu tam dáš podmínku.

Nahoru Odpovědět
10.3.2015 16:15
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
debeneesse
Člen
Avatar
Odpovídá na Michal Šmahel
debeneesse:10.3.2015 16:17

Netuším, o jakých článcích mluvíš, psal o profilových obrázích. Nevím.

 
Nahoru Odpovědět
10.3.2015 16:17
Avatar
Odpovídá na debeneesse
vanecek.karel:10.3.2015 16:17

Asi jsem to napsal špatně, ale je to samé co píšeš ty. Neumím vytvořit ve scriptu možnost vyvolání profilového obrázku, chci aby byla možnost, že pokud registrovaný návštěvník se bude dívat na registrované jiné uživatele, tak aby si mohl vybrat, zda uvidí 10 posledních uživatelů buď s profilovým obrázkem, či bez profilového obrázku a nebo aby tam byli u deseti posledních uživatelů jak profilové obrázky či nikoli.

<?php

            $i=1;
            $sql = mysql_query("SELECT * FROM users ORDER BY battles_won DESC, tournaments_won DESC LIMIT 3");
            if(mysql_num_rows($sql)>0) {
                while($row = mysql_fetch_array($sql)) {

                    if($i == 1) {
                        echo '<div class="ranking"> <div class="ranking_1"> </div><div class="ranking_info_top"><span style="font-size:18px;"><b>'.$row[usern].'</b></span><br><br>'.$lang[battles_won].': '.number_format($row[battles_won]).'<br/>'.$lang[won_tournaments].': '.number_format($row[tournaments_won]).'</div></div> ';
                    } elseif($i == 2) {
                        echo '<div class="ranking"><div class="ranking_2"></div> <div class="ranking_info_top"><span style="font-size:18px;"><b>'.$row[usern].'</b></span><br><br>'.$lang[battles_won].': '.number_format($row[battles_won]).'<br/>'.$lang[won_tournaments].': '.number_format($row[tournaments_won]).'</div></div> ';
                    } elseif($i == 3) {
                        echo '<div class="ranking"><div class="ranking_3"></div> <div class="ranking_info_top"><span style="font-size:18px;"><b>'.$row[usern].'</b></span><br><br>'.$lang[battles_won].': '.number_format($row[battles_won]).'<br/>'.$lang[won_tournaments].': '.number_format($row[tournaments_won]).'</div></div> ';
                    } else {
                        echo '<div class="ranking"><div class="ranking_info"><span style="font-size:18px;"><b>'.$row[usern].'</b></span><br><br>'.$lang[battles_won].': '.number_format($row[battles_won]).'<br/>'.$lang[won_tournaments].': '.number_format($row[tournaments_won]).'</div></div>';
                    }
                    $i++;
                }
            }
            ?>
Nahoru Odpovědět
10.3.2015 16:17
Jsem jaký jsem a na tom nic měnit nebudu.
Avatar
debeneesse
Člen
Avatar
debeneesse:10.3.2015 16:36

Důležitá je jedna věc, neuč se používat zastaralé příkazy a je jedno jestli jde o mysql_~, nebo cokoliv jiného. Nikdy ti to k ničemu nebude a nakonec se stejně budeš muset naučit používat novější metody. Nejen že to je zastaralé, ale taky ne zrovna bezpečné. Takže doporučuju mysqli a ještě lépe PDO. U tvého příkladu používaš inkrementaci nějakého integeru, ale proč? Teda chci říct, já to chápu, ale můžeš na to jít jednodušeji. Když chvilku vydržíš a někdo mě nepředběhne, tak ti pošlu kód, musím se na chvíli vzdálit.

Editováno 10.3.2015 16:38
 
Nahoru Odpovědět
10.3.2015 16:36
Avatar
debeneesse
Člen
Avatar
debeneesse:10.3.2015 18:26

Tak tento kód by tě mohl nasměrovat, ale samozřejmě si ho uprav podle představ:

<?php

function getTopUsers($conn, $limit, $profile_pics) {
  $lang['user'] = "Uživatel";
  $lang['battles_won'] = "Vyhrané bitvy";
  $lang['won_tournaments'] = "Vyhrané turnaje";

  $sql = "SELECT usern, battles_won, tournaments_won FROM users ORDER BY battles_won DESC, tournaments_won DESC LIMIT $limit";
  $result = $conn->query($sql);
  $i=1;
  if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
      echo '<div class="user-box">' . "\n\t";
      if ($profile_pics === true) {
        echo '<div class="profile-pic">fotka uzivatele na ' . $i . '. místě</div>' . "\n\t";
      }
      echo '<div class="ranking';
      if (($i >= 1) && ($i <= 3)) { echo ' ranking-info-top'; }
      if ($i === 1) { echo ' ranking-1'; }
      else if ($i === 2) { echo ' ranking-2'; }
      else if ($i === 3) { echo ' ranking-3'; }
      else { echo ' ranking-info'; }
      echo '">' . "\n\t\t";
      echo $lang['user'] . ': ' . $row['usern'] . '<br />' . $lang['battles_won'] . ': ' . number_format($row['battles_won']) . '<br/>' . $lang['won_tournaments'] . ': ' . number_format($row['tournaments_won']);
      $i++;
      echo "\n\t" . '</div>' . "\n" . '</div>' . "\n";
    }
  } else {
    echo "žádný uživatel";
  }
}

$conn = new mysqli("localhost", "root", "asdf", "database_name");
$limit = 4;
$profile_pics = true;
getTopUsers($conn, $limit, $profile_pics);

Nakonec jsem tam nechal ten inkrement, ale šlo by to řešit ještě jinak.

Editováno 10.3.2015 18:28
 
Nahoru Odpovědět
10.3.2015 18:26
Avatar
vanecek.karel:10.3.2015 19:22

Zkoušel sem upravit kód stránky tak jak ji potřebuji ve finálové podobě, ovšem problém v tom, že právě nevím jak vložit možnost zobrazit profil buď s avatarem či bez avataru a zároveň umožnit výpis jen 10ti nových členů.

<?php
class Memberscontroller{

        private $registry;
        private $model;
        public function __construct( Registry $registry, $directCall )
        {
                $this->registry = $registry;

                $urlBits = $this->registry->getObject('url')->getURLBits();
                if( isset( $urlBits[1] ) )
                {
                        switch( $urlBits[1] )
                        {
                                case 'list':
                                        $this->listMembers( intval( $urlBits[2] ) );
                                        break;
                                case 'alpha':
                                        $this->listMembersAlpha( $urlBits[2] , intval( isset( $urlBits[3] ) ? $urlBits[3] : 0 ) );
                                        break;
                                case 'search':
                                        $this->searchMembers( true, '', 0 );
                                        break;
                                case 'search-results':
                                        $this->searchMembers( false, $urlBits[2] , intval( isset( $urlBits[3] ) ? $urlBits[3] : 0 )  );
                                        break;
                                default:
                                        $this->listMembers(0);
                                        break;
                        }

                }
                else
                {
                        $this->listMembers( 0 );
                }

        }

        private function listMembers( $offset )
        {
                require_once( FRAMEWORK_PATH . 'models/members.php');
                $members = new Members( $this->registry );
                $pagination = $members->listMembers( $offset );
                if( $pagination->getNumRowsPage() == 0 )
                {
                        $this->registry->getObject('template')->buildFromTemplates('header.php', 'members/invalid.php', 'footer.php');
                }
                else
                {
                        $this->registry->getObject('template')->buildFromTemplates('header.php', 'members/list.php', 'footerphp');
                        $this->registry->getObject('template')->getPage()->addTag( 'members', array( 'SQL', $pagination->getCache() ) );
                        $this->registry->getObject('template')->getPage()->addTag( 'letter', '' );

                        $this->registry->getObject('template')->getPage()->addTag( 'page_number', $pagination->getCurrentPage() );
                        $this->registry->getObject('template')->getPage()->addTag( 'num_pages', $pagination->getNumPages() );
                        if( $pagination->isFirst() )
                        {
                                $this->registry->getObject('template')->getPage()->addTag( 'předchozí', '');
                                $this->registry->getObject('template')->getPage()->addTag( 'následující', '' );
                        }
                        else
                        {
                                $this->registry->getObject('template')->getPage()->addTag( 'předchozí', "<a href='members/list/'>První stránka</a>" );
                                $this->registry->getObject('template')->getPage()->addTag( 'následující', "<a href='members/list/" . ( $pagination->getCurrentPage() - 2 ) . "'>Předchozí stránka</a>" );
                        }
                        if( $pagination->isLast() )
                        {
                                $this->registry->getObject('template')->getPage()->addTag( 'následující', '' );
                                $this->registry->getObject('template')->getPage()->addTag( 'předchozí', '' );
                        }
                        else
                        {
                                $this->registry->getObject('template')->getPage()->addTag( 'následující', "<a href='members/list/" . $pagination->getCurrentPage() . "'>Další stránka</a>" );
                                $this->registry->getObject('template')->getPage()->addTag( 'předchozí', "<a href='members/list/" . ( $pagination->getNumPages() - 1 ) . "'>Poslední stránka</a>" );
                        }
                        $this->formRelationships();
                }
        }

        private function listMembersAlpha( $alpha='A', $offset=0 )
        {
                require_once( FRAMEWORK_PATH . 'models/members.php');
                $members = new Members( $this->registry );
                $pagination = $members->listMembersByLetter( $alpha, $offset );
                if( $pagination->getNumRowsPage() == 0 )
                {
                        $this->registry->getObject('template')->buildFromTemplates('header.tpl.php', 'members/invalidphp', 'footer.php');
                }
                else
                {
                        $this->registry->getObject('template')->buildFromTemplates('header.php', 'members/list.php', 'footer.php');
                        $this->registry->getObject('template')->getPage()->addTag( 'members', array( 'SQL', $pagination->getCache() ) );
                        $this->registry->getObject('template')->getPage()->addTag( 'letter', " - Písmeno: " . $alpha );

                        $this->registry->getObject('template')->getPage()->addTag( 'page_number', $pagination->getCurrentPage() );
                        $this->registry->getObject('template')->getPage()->addTag( 'num_pages', $pagination->getNumPages() );
                        if( $pagination->isFirst() )
                        {
                                $this->registry->getObject('template')->getPage()->addTag( 'předchozí', '');
                                $this->registry->getObject('template')->getPage()->addTag( 'následující', '' );
                        }
                        else
                        {
                                $this->registry->getObject('template')->getPage()->addTag( 'předchozí', "<a href='members/alpha/".$alpha."/'>První stránka</a>" );
                                $this->registry->getObject('template')->getPage()->addTag( 'následující', "<a href='members/alpha/".$alpha."/" . ( $pagination->getCurrentPage() - 2 ) . "'>Předchozí stránka</a>" );
                        }
                        if( $pagination->isLast() )
                        {
                                $this->registry->getObject('template')->getPage()->addTag( 'následující', '' );
                                $this->registry->getObject('template')->getPage()->addTag( 'předchozí', '' );
                        }
                        else
                        {
                                $this->registry->getObject('template')->getPage()->addTag( 'následující', "<a href='members/alpha/".$alpha."/" . $pagination->getCurrentPage() . "'>Další stránka</a>" );
                                $this->registry->getObject('template')->getPage()->addTag( 'předchozí', "<a href='members/alpha/".$alpha."/" . ( $pagination->getNumPages() - 1 ) . "'>Poslední stránka</a>" );
                        }
                }
        }

        private function searchMembers( $search=true, $name='', $offset=0 )
        {
                require_once( FRAMEWORK_PATH . 'models/members.php');
                $members = new Members( $this->registry );

                if( $search == true )
                {
                        $pagination = $members->filterMembersByName( urlencode( $_POST['name'] ), $offset );
                        $name = urlencode( $_POST['name']  );
                }
                else
                {
                        $pagination = $members->filterMembersByName( $name, $offset );
                }
                if( $pagination->getNumRowsPage() == 0 )
                {
                        $this->registry->getObject('template')->buildFromTemplates('header.tpl.php', 'members/invalid.php', 'footer.php');
                }
                else
                {
                        $this->registry->getObject('template')->buildFromTemplates('header.php', 'members/search.php', 'footer.php');
                        $this->registry->getObject('template')->getPage()->addTag( 'members', array( 'SQL', $pagination->getCache() ) );
                        $this->registry->getObject('template')->getPage()->addTag( 'public_name', urldecode( $name ) );
                        $this->registry->getObject('template')->getPage()->addTag( 'encoded_name', $name );

                        $this->registry->getObject('template')->getPage()->addTag( 'page_number', $pagination->getCurrentPage() );
                        $this->registry->getObject('template')->getPage()->addTag( 'num_pages', $pagination->getNumPages() );
                        if( $pagination->isFirst() )
                        {
                                $this->registry->getObject('template')->getPage()->addTag( 'předchozí', '');
                                $this->registry->getObject('template')->getPage()->addTag( 'následující', '' );
                        }
                        else
                        {
                                $this->registry->getObject('template')->getPage()->addTag( 'předchozí', "<a href='members/search-results/".$name."/'>První stránka</a>" );
                                $this->registry->getObject('template')->getPage()->addTag( 'následující', "<a href='members/search-results/".$name."/" . ( $pagination->getCurrentPage() - 2 ) . "'>Předchozí stránka</a>" );
                        }
                        if( $pagination->isLast() )
                        {
                                $this->registry->getObject('template')->getPage()->addTag( 'následující', '' );
                                $this->registry->getObject('template')->getPage()->addTag( 'předchozí', '' );
                        }
                        else
                        {
                                $this->registry->getObject('template')->getPage()->addTag( 'nádsledující', "<a href='members/search-results/".$name."/" . $pagination->getCurrentPage() . "'>Další stránka</a>" );
                                $this->registry->getObject('template')->getPage()->addTag( 'předchozí', "<a href='members/search-results/".$name."/" . ( $pagination->getNumPages() - 1 ) . "'>Poslední stránka</a>" );
                        }
                }
        }

        private function formRelationships()
        {
                if( $this->registry->getObject('authenticate')->isLoggedIn() == true )
                {
                        require_once( FRAMEWORK_PATH . 'models/relationships.php');
                        $relationships = new Relationships( $this->registry );
                        $types = $relationships->getTypes( true );
                        $this->registry->getObject('template')->addTemplateBit( 'form_relationship', 'members/form_relationship.php');
                        $this->registry->getObject('template')->getPage()->addPPTag( 'relationship_types', array( 'SQL', $types ) );
                }
                else
                {
                        $this->registry->getObject('template')->getPage()->addTag( 'form_relationship', '' );
                }
        }
}

?>
Nahoru Odpovědět
10.3.2015 19:22
Jsem jaký jsem a na tom nic měnit nebudu.
Avatar
debeneesse
Člen
Avatar
Odpovídá na vanecek.karel
debeneesse:11.3.2015 0:10

No, když se tak dívám na tvůj kód, tak teda to si měl říct hned, že to máš určené pro nějakou architekturu, tím pádem je můj kód prakticky nepoužitelný, protože neznám její charakter/aspekty, třídy a metody... Ale něco mně říká, že pokud si jej neumíš poupravit tak, abys jej do ní dostal, tak to můžeš rovnou vzdát, přečíst si tu něco o MVC architektuře, příp. i zajít na https://www.youtube.com/watch?… pokud umíš anglicky a teprve až pochopíš její účel a to, jak pracuje, tak můžeš dále stažený framework rozvíjet...

Editováno 11.3.2015 0:11
 
Nahoru Odpovědět
11.3.2015 0:10
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.