Jump to content
php.lv forumi

Ģenerēt tabulu


metal-0-1

Recommended Posts

  • Replies 30
  • Created
  • Last Reply

Top Posters In This Topic

Galvenais izštukot, kā tikt galā ar tukšajām stundām kādai klasei tā, lai varētu visām klasēm izkverijot pareizi, piemēram, 5. stundu, un lai nebūtu nobīdes pa kreisi, ja kādai klasei nenotiek piektā stunda.

Bet visādi citādi ar prepared statementiem vajadzētu būt diezgan vienkārši.

Bez multi-dimensiju masīviem, IMHO, iztikt nevar, ja vien nekverijo katras dienas katras klases katru stundu atsevišķi, bet tas būtu bik debīli.

 

var vienkārši šādi:

$lessons = array(

day => array(

class => array(

1.stunda => latviešu valoda,

2.stunda => latviešu valoda,

3.stunda => latviešu valoda,

4.stunda => latviešu valoda,

5.stunda => latviešu valoda,

6.stunda => null,

7.stunda => null,

8.stunda => null,

)

)

)

 

savāc tur datus, tad lūpo cauri pa dienai un pa stundai un drukā ārā.

Link to comment
Share on other sites

Tur taču ar visu uztaisīt selektojot uzreiz visus datus.

Vienkāršakais variants uztaisam masīvu, kurā glabājam rindu pēc tās dienas, laika un klases, ko izveido kā kompozītu atslēgu.

Tālak selektojam visas rindas, sametam pēc kompozītās atslēgas masivā.

Ejam cauri visām dienām, laikiem un klasēm un skatamies pēc tās pašas atslēgas, vai dati ir, vai nav. Ja ir, izdrukājam priekšmetu, ja nav, izdrukājam tukšumu.

Skelets izskatās šādi:

http://codepad.org/GyOLWu2x

<?php

$rows=array(
    array("diena" => 1, "plkst" => "8:00", "klase" => "10a", "pr" => "Matemātika"),
    array("diena" => 1, "plkst" => "9:00", "klase" => "10a", "pr" => "Matemātika"),
    array("diena" => 2, "plkst" => "8:00", "klase" => "10a", "pr" => "Fizika...."),
    array("diena" => 1, "plkst" => "8:00", "klase" => "9a", "pr" => "Matemātika"),
    array("diena" => 2, "plkst" => "9:45", "klase" => "9a", "pr" => "sports....")
);

$data=array();

function k($d,$pl, $kl){ return $d."-".$pl."-".$kl; }


foreach($rows as $row){
  $data[k($row['diena'],$row['plkst'],$row['klase'])] = $row;
}

$dienas=array(1,2,3);
$klases=array("9a","10a");
$laiki=array("8:00","9:00","9:45");

foreach($dienas as $diena){
  echo "Diena: ".$diena."\n";
  foreach($laiki as $laiks){
    echo $laiks." ";
    foreach($klases as $klase){
      $key=k($diena,$laiks,$klase);
      if (isset($data[$key])){
        echo $data[$key]['pr']." ";
      } else {
        echo ".......... ";
      }
    }
  echo "\n";
  }
echo "\n";
}

Edited by codez
Link to comment
Share on other sites

$rows=array(
    array("diena" => 1, "plkst" => "8:00", "klase" => "10a", "pr" => "Matemātika"),
    array("diena" => 1, "plkst" => "9:00", "klase" => "10a", "pr" => "Matemātika"),
    array("diena" => 2, "plkst" => "8:00", "klase" => "10a", "pr" => "Fizika...."),
    array("diena" => 1, "plkst" => "8:00", "klase" => "9a", "pr" => "Matemātika"),
    array("diena" => 2, "plkst" => "9:45", "klase" => "9a", "pr" => "sports....")
);
Būtu loģiskāk vākt tos datus no db, nevis hardkodēt kodā.

 

P.S. kādam nepatīk atstarpes ap operatoriem/komatiem?

Link to comment
Share on other sites

Kādas kompozītās atslēgas un citi murgi?

 

Pietiek uztaisīt tukšu masīvu, kur jau ir visas stundas, tikai tukšas. SELECT * FROM un met iekšā, kur pienākas. Gatavs.

 

Pārējais te piedāvātais ir kaitēkļu apkarošana ar taktiskajām kodolgalviņām.

Link to comment
Share on other sites

Kādas kompozītās atslēgas un citi murgi?

 

Pietiek uztaisīt tukšu masīvu, kur jau ir visas stundas, tikai tukšas. SELECT * FROM un met iekšā, kur pienākas. Gatavs.

 

Pārējais te piedāvātais ir kaitēkļu apkarošana ar taktiskajām kodolgalviņām.

 

Emm.

Codez risinājumā:

Ir masīvs, kurā samet visas stundas ar SELECT *. (Tā kā tu iesaki, ja saprotu pareizi)

Sākumā masīvs ir tukšs un tiek dinamiski izveidotas visas stundas ar kompozītatslēgu.

 

Kāda velna pēc hardkodēt (tā kā tu iesaki) šī masīva atslēgas, ja tās var izveidot dinamiski? Laikam neuztvēru tavu spožo domu. Dinamiskumam ir lielas priekšrocības.

Edited by metal-0-1
Link to comment
Share on other sites

Hah, nezināju, ka php var izveidot masīvu, kura elements ir masīvs, kura elements ir masīva, norādot tikai vairākas atslēgas un php pats izveidos apakšmasīvus:

http://codepad.org/mNZxBJHR

 

Tas nedaudz atvieglo iepriekšējo risinājumu un kompozitās atslēgas vietā varam lietot uzreiz 3 masīva atslēgas un neuztraukties par apakšmasīvu neesamību:

http://codepad.org/RGQVIjWm

<?php

$rows=array(
    array("diena" => 1, "plkst" => "8:00", "klase" => "10a", "pr" => "Matemātika"),
    array("diena" => 1, "plkst" => "9:00", "klase" => "10a", "pr" => "Matemātika"),
    array("diena" => 2, "plkst" => "8:00", "klase" => "10a", "pr" => "Fizika...."),
    array("diena" => 1, "plkst" => "8:00", "klase" => "9a", "pr" => "Matemātika"),
    array("diena" => 2, "plkst" => "9:45", "klase" => "9a", "pr" => "sports....")
);

$data=array();
foreach($rows as $row){
  $data[$row['diena']][$row['plkst']][$row['klase']] = $row;
}

$dienas=array(1,2,3);
$klases=array("9a","10a");
$laiki=array("8:00","9:00","9:45");

foreach($dienas as $diena){
  echo "Diena: ".$diena."\n";
  foreach($laiki as $laiks){
    echo $laiks." ";
    foreach($klases as $klase){
      if (isset($data[$diena][$laiks][$klase])){
        echo $data[$diena][$laiks][$klase]['pr']." ";
      } else {
        echo ".......... ";
      }
    }
  echo "\n";
  }
echo "\n";
}
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...