praegune kellaaeg 21.06.2025 11:28:19
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
poroloon
HV kasutaja

liitunud: 25.07.2010
|
25.05.2011 10:45:37
php abi vaja: array jagamine gruppideks |
|
|
Ühe scripti lingisüsteem topib andmed sessiooni (iga kasutaja jaoks eraldi) ja sealt tuleb päris korralik koodirägastik (vähemalt mu jaoks),
siin on print_r($_SESSION['shv_links']) väljund:
Array
(
[8] => Array
(
[link_id] => 8
[link_url] => http://www.niisama.bla/
[link_title] => Test
[time] => 2011-05-23 10:46:16
[group_id] => 1
)
[9] => Array
(
[link_id] => 9
[link_url] => http://www.niisama2.bla/
[link_title] => Video
[time] => 2011-05-23 10:46:04
[group_id] => 1
)
[11] => Array
(
[link_id] => 11
[link_url] => http://www.niisama3.bla/
[link_title] => Test 3
[time] => 2011-05-23 10:48:43
[group_id] => 2
)
) |
Kahjuks mina ei oska muud kui sellist väljundit:
<ul>
<li>Test</li>
<li>Video</li>
<li>Test 3</li>
</ul> |
Seda tegin nii:
php:
|
<ul> <?php foreach($_SESSION['shv_links'] as $link_id => $link){ ?> <li><a href="<?=$link['link_url']?>"><?=$link['link_title']?></a></li> <?php } ?> </ul>
|
Vaja oleks nii, et php sorteeriks lingid [group_id] järgi, eristaks nad, paigutaks gruppidesse:
<ul>
<li><!-- siin võtan db-st grupi nime grupi id (hetkel siis 1) järgi ja kuvan nime siia. -->
<ul>
<li>Test</li>
<li>Video</li>
</ul>
</li><!-- 1. grupi lõpp -->
<li><!-- db-st grupi nimi grupi id (2), kuvan nime. -->
<ul>
<li>Test 3</li>
</ul>
</li>
</ul> |
...ja nii edasi, gruppe ja linke tuleb palju rohkem. Lisaks oleks mõnus, kui oskaksin neid sorteerida, id või aja vms. järgi, aga see pole nii tähtis.
Oskab keegi aidata?
|
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
25.05.2011 11:26:10
|
|
|
Saada nad siis group id järgi erinevatesse array'desse?
Tekitad uue array kus esmaseks dimensiooniks on group id ja siis link id.
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
matis
HV kasutaja

liitunud: 12.04.2004
|
25.05.2011 11:32:32
|
|
|
Kasuta usort funktsiooni: http://ee.php.net/manual/en/function.usort.php
php:
|
//defineeri sorteerimisfuntksioon, see funktsioon ütleb kuidas ära tunda, milline array element on väiksem kui teine. function sortGroupId($a, $b) { if ($a['group_sort'] == $b['group_sort']) { return 0; } return ($a['group_sort'] < $b['group_sort']) ? -1 : 1; } //sorteeri, teiseks parameetriks annad siis funktsiooni nime, mis enne defineerisid. Kui sorteerimisfunktsioon asub klassi sees, siis oleks teine parameeter nii: array('Klassinimi', 'funktsioonimi') usort($_SESSION['shv_links'], "sortGroupId")
|
_________________ https://www.e-abi.ee/ - Pangalingid, Smartposti, Post24 moodulid, Järelmaksumoodulid. Magento, Prestahop, Wordpress. Aktsepteerin Bitcoini!
Soovid lisada oma tooteid HinnaVaatlusesse? https://www.e-abi.ee/magento/kasulikud/product-exporter-and-multi-product-feed-generator-hinnavaatlus.html |
|
Kommentaarid: 64 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
1 :: |
60 |
|
tagasi üles |
|
 |
poroloon
HV kasutaja

liitunud: 25.07.2010
|
25.05.2011 11:54:30
|
|
|
ee... ikkagi mul pole halli aimugi, kuidas kuvada seda asja html-i nii nagu ma esimeses postituses kirjeldasin.
Praegu ma sain ainult samasuguse array väljundi, kuid ainult teises järjestuses, välja kuvada ma seda ikka ei oska. {juhe koos}
|
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
25.05.2011 12:34:17
|
|
|
Lihtsalt sorti puhul tuleb vast keerulisem tiba kood et ära eraldada neid eri gruppe. Kui kahte dimensiooni panna, siis teed sinna praeguse <ul> ümber veel ühe foreach, mis käib iga selle grupi ka läbi.
Ehk siis array oleks stiilis:
Näiteks:
grupp 1
element 1
element 2
grupp 2
element 3 |
Ja foreachiga siis iga grupi kohta väljastad oma ul elemendid ja nende vahel siis teine foreach, mis käib iga grupi id sisu läbi.
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
matis
HV kasutaja

liitunud: 12.04.2004
|
25.05.2011 12:40:49
|
|
|
php:
|
<?php $prevGroup = false; ?> <ul> <?php foreach($_SESSION['shv_links'] as $link_id => $link){ ?> <?php if (!$prevGroup) { $prevGroup = $link['group_id']; ?> <li><?php echo $link['group_id']; ?> <ul> <?php } if ($prevGroup != $link['group_id']) { ?> <!-- sulge eelmine grupp --> </ul> </li> <!-- ava uus grupp --> <li><?php echo $link['group_id']; ?> <ul> <?php } ?> <li><a href="<?=$link['link_url']?>"><?=$link['link_title']?></a></li> <?php $prevGroup = $link['group_id']; ?> <?php } ?> <!--tsykkel läbi, sulge kõik --> </ul> </li> </ul>
|
Proovi midagi sellist, see ei kuva grupi nime aga kuvab grupi id.
Mõistlik on teha array, kuhu sisse saadakse kõik grupi id-d
php:
|
'1' => 'esimene grupp', '2' => 'teine grupp', ); //siis saab pärast reference teha echo $groupNames[$link['group_id']];
|
_________________ https://www.e-abi.ee/ - Pangalingid, Smartposti, Post24 moodulid, Järelmaksumoodulid. Magento, Prestahop, Wordpress. Aktsepteerin Bitcoini!
Soovid lisada oma tooteid HinnaVaatlusesse? https://www.e-abi.ee/magento/kasulikud/product-exporter-and-multi-product-feed-generator-hinnavaatlus.html |
|
Kommentaarid: 64 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
1 :: |
60 |
|
tagasi üles |
|
 |
poroloon
HV kasutaja

liitunud: 25.07.2010
|
22.06.2011 11:52:35
|
|
|
Sama asjaga tekkis uus mure, pärast mõningast testimist. Lingid on suvalises järjekorras, kuigi lisasin sinna [link_ordering] numbri igale lingile. Ma ei oska selle järgi sorteerida nii, et grupid ka jääksid alles. Kui saan järjestuse õigeks, siis on grupid sassis (kuvatakse mitu korda sama gruppi millegipärast) ja kui grupid on korras, siis on lingid suvalt sassis.
Näiteks nii on vaja
grupp 1
element 1
element 2
element 3
grupp 2
element 1
element 2
element 3
element 4
element 5 |
Kuid kuvab nii:
grupp 1
element 2
element 3
element 1
grupp 2
element 1
element 5
element 4
element 2
element 3 |
Siis, kui elementide jrk. saan õigeks, kuvab nii (valesti muidugi):
grupp 1
element 1
element 2
grupp 2
element 1
element 2
element 3
grupp 1
element 3
grupp 2
element 4
element 5 |
Mul pole aimugi, mida teha. Olen netis ringi tuulutanud ja katsetanud, tulemused on samad.
Muide, elementide link_ordering väärtus võib ühtida igas grupis. Ühes grupis on 0,1,2,3,4,5 ja teises pole mitte 6,7,8, vaid ka 0,1,2.
|
|
tagasi üles |
|
 |
matis
HV kasutaja

liitunud: 12.04.2004
|
22.06.2011 15:51:57
|
|
|
Muuda funktsioon sortGroupId selliseks ja ülejäänud kood jäta samaks, siis peaks nagu toimima.
php:
|
function sortGroupId($a, $b) { if ($a['group_sort'] == $b['group_sort']) { //siin group sort on sama, võta arvesse ka link ordering if ($a['link_ordering'] == $b['link_ordering']) { return 0; } return ($a['link_ordering'] < $b['link_ordering']) ? -1 : 1; } //siin group sort pole sama, tagasta nende erinevus return ($a['group_sort'] < $b['group_sort']) ? -1 : 1; }
|
_________________ https://www.e-abi.ee/ - Pangalingid, Smartposti, Post24 moodulid, Järelmaksumoodulid. Magento, Prestahop, Wordpress. Aktsepteerin Bitcoini!
Soovid lisada oma tooteid HinnaVaatlusesse? https://www.e-abi.ee/magento/kasulikud/product-exporter-and-multi-product-feed-generator-hinnavaatlus.html |
|
Kommentaarid: 64 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
1 :: |
60 |
|
tagasi üles |
|
 |
poroloon
HV kasutaja

liitunud: 25.07.2010
|
23.06.2011 00:13:44
|
|
|
Targad inimesed siin ikka Tänud jällegi!
|
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|