Avatar
vanecek.karel:

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 (ceskyDJ):

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

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

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 (ceskyDJ):

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 (ceskyDJ):

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 (ceskyDJ)
debeneesse:

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:

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:

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:

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:

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  -2 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:

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  +1 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.