PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
PHP-s aastate järgi sorteerimine, palun abi.
Postitaja: KaireKar 2014-04-17 23:38:43
Tere. Andmebaasis on iga lapse kohta sünniaeg. No näiteks 10-10-2008. Aga nüüd oleks vaja kuidagi teha nii, et saaks nimekirja, kus laste sünniajad aastate kaupa. Umbes, et:

+--------2008--------+
Malle
Kalle
Maire

+--------2009--------+
Tiina
Rainer
Mait

Mõtlesin kasutada kahekordset foreachi, et kõigepealt renderdab läbi array, kus aastad käsitsi pandud. Noh, et array('2007', '2008', '2009') kõigepealt ja siis leiab, kas sünniaasta on kellegil vastav või mitte. Kuid see tundub kuidagi rohmakas mõte olevat. Kas keegi teab, kuidas seda lahendada?
RE: PHP-s aastate järgi sorteerimine, palun abi.
Postitaja: geo__ 2014-04-18 11:00:51
TSITEERITUD:
Tere. Andmebaasis on iga lapse kohta sünniaeg. No näiteks 10-10-2008. Aga nüüd oleks vaja kuidagi teha nii, et saaks nimekirja, kus laste sünniajad aastate kaupa. Umbes, et:

+--------2008--------+
Malle
Kalle
Maire

+--------2009--------+
Tiina
Rainer
Mait

Mõtlesin kasutada kahekordset foreachi, et kõigepealt renderdab läbi array, kus aastad käsitsi pandud. Noh, et array('2007', '2008', '2009') kõigepealt ja siis leiab, kas sünniaasta on kellegil vastav või mitte. Kuid see tundub kuidagi rohmakas mõte olevat. Kas keegi teab, kuidas seda lahendada?


Variante on mitmeid,
kõige lihtsam on vist sql päringusse ORDER BY date
aga nii on visualiseerimisega veidi pusimist (kui ühtse pika listiga ei lepi)
, siis võib teha iga aast akohta oma päringu:
SELECT * FROM child_table WHERE YEAR(date) = 2008.
, midagi saaks ka nestedquery / subquery meetodil kokku.

RE: PHP-s aastate järgi sorteerimine, palun abi.
Postitaja: RLa 2014-04-18 11:19:20
Ega ei aita päring SELECT YEAR(synniaeg), * FROM lapsed ORDER BY synniaeg ASC.

Siin on aasta eraldi veeruna olemas ja renderdamisel vaatad, kui aasta muutub, siis paned eraldaja vahele.
RE: PHP-s aastate järgi sorteerimine, palun abi.
Postitaja: KaireKar 2014-04-18 17:07:58
See ongi nagu huvitav ülesanne, et idee on nii lihtne, aga lahendus paneb kõrvatagust sügama.

Asja muudab keeruliseks see, et kui teha selectimises või arrays aastad eraldi, peab pidevalt koodi muutma, kuna ei tee ju arrayd või selecti 100 aasta peale. Mõtlesin kuidagi, et kas enne leida sünniaegades max ja min aastad ja siis foreachida? Samas see foreach pole üldse nutikas lahendus asjale kindlasti. Selectimine vist ka? Kas asja peaks hoopis lahendama andmebaasist loetud andmete (array) sortimisel? et kuidagi:

foreach kordus (min aasta - max aasta)
foreach kordus (kõik kirjed)
if (kirje==aasta)
siis kirjuta tabelisse kirje



Sellel loogikal on aga see jama, et kui nii kasutada, siis peaks veel looma kolmanda foreachi korduse leidmaks, kas selles aastas on üldse kirjeid. Veel mõtteid?
RE: PHP-s aastate järgi sorteerimine, palun abi.
Postitaja: lk_ 2014-04-18 17:35:08

PHP kood:
 
$kp 
NULL// see on viimatine aasta

$q mysql_query('SELECT nimi, YEAR(synniaeg) AS aasta FROM `tabelinimi` ORDER BY aasta, nimi');
while(
$r mysql_fetch_row($q))
{
    
// siin võrreldakse viimatist synniaastat, kui erineb eelmisest
    // siis väljastatakse pealkirjana

    
if($kp != $r[1]) { $kp $r[1];  echo '<h1>'.$r[1].'</h1>';}
    echo 
$r[0].'<br>';
}


RE: PHP-s aastate järgi sorteerimine, palun abi.
Postitaja: RLa 2014-04-20 12:30:23
lk_ koodi saaks täiendada tsükliga, mis käib läbi kõik aastad, mis jäävad $kp ja $r[1] vahele (kui $kp pole NULL). Siis tulevad sinna ka aastad millel kirjeid pole.
RE: PHP-s aastate järgi sorteerimine, palun abi.
Postitaja: ise php 2014-04-20 12:56:06
Kas selline lahendus ei kõlba? Võid veel sort ka syaeg järgi panna ja saad kena järjestuse aastast 2008 Sinu tabel on vist valesti tehtud ka või kirjutasid siia valesti, DATA lahtrisse tehakse aeg aasta-kuu-päev sellises järjekorras vist.


PHP kood:
 
SELECT 
FROM `tabelNimiWHERE syaeg "2007-12-31" AND syaeg "2009-00-00"
RE: PHP-s aastate järgi sorteerimine, palun abi.
Postitaja: ise php 2014-04-20 12:57:14
RE: PHP-s aastate järgi sorteerimine, palun abi.
Postitaja: aksel 2014-04-22 13:58:44
RE: PHP-s aastate järgi sorteerimine, palun abi.
Postitaja: blaa 2014-04-22 23:18:00
Tegemist on lihtsa ülesandega ja lk_ on sellele ka lihtsa lahenduse andnud. Ma ei mõista, miks ülejäänud siin soovitavad asju, mis ei sobi teemasse ja ajavad lihtsa keeruliseks.
RE: PHP-s aastate järgi sorteerimine, palun abi.
Postitaja: Arvi V 2014-04-30 12:17:51
sql select year(synd) as aasta, nimi from tabel order by aasta

$output=array();

while tsükkils{
$output[$row[aasta]][]=$row[nimi];
}

Pärast kuvad
foreach ($output as $aasta=>$nimed){
echo $aasta;
foreach ($nimed as $nimi){
echo $nimi;
}
}
RE: PHP-s aastate järgi sorteerimine, palun abi.
Postitaja: Mitte php progeja 2014-05-24 02:04:17
Kasutaja lk_ vastus oli igati okei (võib-olla muutuja nimi kp võiks olla välja kirjutatud).

Arvi vastus on ka okei, aga andmete säilitamine massiivis omab mõtet siis kui kuskil templatei's tahetakse seda infot näidata või kui tahetakse mingisse objekti see koguda eesmärgiga sellega pärast midagi teha (kas jällegi vaates näitamiseks või mingite arvutuste tegemiseks).

Leheküljed: 1

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.082417011261