Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pomoc oko ispisa iz baze u dve kolone-index pojmova

[es] :: PHP :: Pomoc oko ispisa iz baze u dve kolone-index pojmova

[ Pregleda: 2371 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

spezia

Član broj: 134818
Poruke: 355
*.ptt.rs.



+6 Profil

icon Pomoc oko ispisa iz baze u dve kolone-index pojmova31.03.2010. u 18:15 - pre 171 meseci
Pogledajte ovaj primer...
http://newyork.yankees.mlb.com/nyy/ballpark/guide.jsp
Pravim slican index pojmova ali u 2 kolone.
U svakom slucaju imam problema. Napravim podelu, ali samo za parne brojeve... Zatim kolone mi nisu jednake , ko u primeru jer recimo vrsim podelu po broju reci, pa ima recimo vise slova u drugoj koloni sto je izduzuje...
Znaci trebalo bi da kolone budu skoro jednake duzine, ali i da reci istog slova budu u jednoj koloni, a ne kao kod mene gde se reci slova I prebace i u drugoj koloni...
Mogu da napisem sta sam radio, mada nije dobro.. Napomena $all_record ranije cupa broj polja u tabeli i naravno $index_words kupi sadrzaj tabele i ispisuje..
Code:

<div class="index_word_all">
<?php 
     // values for half page
    
     $half_page=(int) (($all_record)/2);
         $counts=1;
     $letter='';

?>
   <div class="index_word">

      <?php foreach ($index_words as $word): 
       // In that place we monitor if Letter is same. If answer is Yes, print all words of that letter
                      if ($word->getLetter()!= $letter):?>
                          <a name="<?php echo $word->getLetter(); ?>" class="letter">
                                                       <?php echo $word->getLetter(); ?>
                                                    </a>
                          <?php  $letter =$word->getLetter();?>
               <?php endif;?>
                <a href="#<?php echo $word->getWord(); ?>"><?php echo $word->getWord(); ?></a><br/>
                        
                <?php if ((( ceil($all_record / ($counts) )) == 2 ) && ( $counts == $half_page)) :
                   echo '</div><!--end_first_half-->
                         <div class="index_word">';
       
                        endif;
                  $counts++;
                                
                  ?>
     <?php endforeach; ?>
  </div>

Tacnije bitan je ovaj uslov:
Code:

  <?php if ((( ceil($all_record / ($counts) )) == 2 ) && ( $counts == $half_page)) :
                   echo '</div><!--end_first_half-->
                         <div class="index_word">';
       
                        endif;

Jel ima neko ideju kako se resava primer sa gornjeg linka??
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-4.sezampro.rs.



+33 Profil

icon Re: Pomoc oko ispisa iz baze u dve kolone-index pojmova31.03.2010. u 22:20 - pre 171 meseci
Pa mislim da si na dobrom putu, jer ideja je, po mom mišljenju, da pamtiš ukupan broj izlistanih reči i trenutno "slovo", što ti i radiš sa promenljivama $letter i $count. E sad, da ti ne bi "prelomio" reči iz nekog indeksa, u tom glavnom uslovu bi trebao da ispitaš i da li se sledeće "slovo" razlikuje od trenutnog. Evo primer toga što sam ja zamislio:
Code:
     $letter = '';
     $wordsCount= 0;
     <?php foreach ($index_words as $key=>$word): //Tu sad imaš i ovaj $key.
       // In that place we monitor if Letter is same. If answer is Yes, print all words of that letter
                      if ($word->getLetter()!= $letter):?>
                          <a name="<?php echo $word->getLetter(); ?>" class="letter">
                                                       <?php echo $word->getLetter(); ?>
                                                    </a>
                          <?php  $letter =$word->getLetter();?>
               <?php endif;?>
                <a href="#<?php echo $word->getWord(); ?>"><?php echo $word->getWord(); ?></a><br/>
                        
                <?php if ($index_words[$key+1]->getLetter() != $letter && $wordsCount > 30) : 
                   echo '</div><!--end_first_half-->
                         <div class="index_word">';
       
                        endif;
                  $wordsCount++;
                                
                  ?>
     <?php endforeach; ?>

Kao što vidiš, u tom glavnom if-u, prvi uslov je da se sledeće slovo mora razlikovati od trenutnog, kako bi izbegao prelamanje istog indeksa, a za drugi sam stavio da je broj ispisanih reči mora da pređe taj neki limit od 30, mada bi to u tvom slučaju moglo da bude i to $half_page ako sam dobro razumeo. Obrati pažnju da sad u tom foreach-u imaš i taj $key, upravo zbog tog ispitivanja sledećeg slova.
 
Odgovor na temu

spezia

Član broj: 134818
Poruke: 355
*.ptt.rs.



+6 Profil

icon Re: Pomoc oko ispisa iz baze u dve kolone-index pojmova01.04.2010. u 13:10 - pre 171 meseci
Ma nije bas.. Ovaj tvoj uslov radi sledece: Recimo dodje do I, zavrsi slovo I i prelazi u sledecu kolonu, ali ce na K da kaze zavrsi sa K, a brojac je veci od 30 ili $half_page ( svejedno ) i opet gledaj da predjes u novu kolonu... Drugim recima uslov ce uvek da bude vazeci jer je $wordsCount > od necega. Resenje je da stavim ne > nego ==. E tada uslov samo jednom vazi, ali ovo je za parne brojeve. Kad imam neparne malo je problem jer ce deljenje sa 2 biti recimo 75,08, pa na sledecu 75,04, pa recimo 69,96 . ako zaokruzim vrednost sa funkciju ceil, dobicu vise vrednosti sa 75, a opet nije dobro.
Tacnije ovo je za slucaj sa 151 unosom. Za 150 vec postoji samo okruglo i jedino 75 za koji ispunjava uslov...
Razmisljao sam da stavim 3 uslova kroz IF, ali uvek mi se desi da bar jedan nije ispunjen, pa sve izbaci kroz jednu kolonu.
Gledajuci onaj primer, mislio da je vec neko radio i ima logicko resenje tog problema.
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-6.sezampro.rs.



+33 Profil

icon Re: Pomoc oko ispisa iz baze u dve kolone-index pojmova01.04.2010. u 16:51 - pre 171 meseci
Da, sad vidim da sam zaboravio jednu stvar, a to je reset-ovanje tog brojača $wordsCount svaki put kada se ispuni taj uslov, odnosno svaki put kada se pređe u novu kolonu. Probaj da dodaš i tu jednu liniju koda u taj if... I bilo bi dobro da u tom if-u pored ove dve stvari ispitaš i da li uopšte postoji sledeći red, kako se ne bi desilo da ti u nekom poslednjem redu bespotrebno doda još jedan zatvoren i otvoren div. Dakle, taj if bi trebao da izgleda ovako:
Code:
$limit = intval(count($index_words) / 2); //Definisanje limita na pocetku.

//... ostatak koda...

//i onda onaj if...
if (isset($index_words[$key+1]) && $index_words[$key+1]['letter'] != $letter && $wordsCount >= $limit) : 
    echo '
    </div><!--end_first_half-->
    <div class = "index_word">';
                            
    $wordsCount= 0;  //Resetovanje brojaca.
endif;

Ja mislim da je to ok.

Inače, sve ovo pišem iz glave, stvarno me mrzi da sad pravim na brzinu neki primer pa da isprobavam...
 
Odgovor na temu

spezia

Član broj: 134818
Poruke: 355
*.ptt.rs.



+6 Profil

icon Re: Pomoc oko ispisa iz baze u dve kolone-index pojmova02.04.2010. u 13:30 - pre 171 meseci
Da da, to je to. Ja sam ga malo modifikovao mojoj nameni.
Cela caka je bila u ovome..
Code:

 $wordsCount= 0;  //Resetovanje brojaca.

Sada je sve ostalo lako.
Tnx
 
Odgovor na temu

[es] :: PHP :: Pomoc oko ispisa iz baze u dve kolone-index pojmova

[ Pregleda: 2371 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.