Aranjare Select din MySQL pe domenii

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Avatar utilizator
trif
Mesaje:500

Aranjare Select din MySQL pe domenii

salut, am si eu o problema si nu stiu cum sa o rezolv, am tot incercat dar nimic.
am in bd denumire disciplina, id_specializare, an_studiu, semestru, id_profesor
si vreau ca sa imi afiseze asta:
profesor Popescu

Cod: Selectaţi tot

Specializarea: calculatoare
An: 1
Semestru: 1
1. disciplina1
2. disciplina2
// in semestru 2 nu exista materii predate de acest profesor
An: 2
Semestru:2
1. disciplina3
Specializarea: retele
An 3:
Semestru: 1
1. disciplina4
2. disciplina5
Semestru: 2
1. disciplina6
... si tot asa.
nu stiu cum sa fac ca in functie de fiecare specializare sa imi afiseze in fiecare an si semestru a specializarii materiile care sunt, iar daca nu sunt sa nu imi afiseze. Astept raspuns. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje:4343
Salut
Din ce am inteles, se pare ca trebuie facut un Select cu Join in mai multe tabele, ca sa iei numele profesorului si specializarea. Nu stiu cum ar trebui acel Select, dar daca reusesti sa-l faci, ramane partea de aranjare a datelor returnate in PHP.
Ca idee, cred ca se poate obtine acea aranjare a datelor daca sunt intai stocate intr-un array multiplu, cu aceasta forma:

Cod: Selectaţi tot

$profs['profesor'] => array('specializare' => array('an_studiu' => array('semestru '=> array('disciplina1', 'disciplina2'))));
Ca sa adaugi si sa parcurgi /afisezi datele selectate din MySQL intr-un astfel de Array, bucla while() care parcurge datele selectate, si parcurgere array pt afisare, trebuie sa fie cam asa

Cod: Selectaţi tot

// Selectarea randurilor din tabelul MySQL
$sql = "SELECT ...";
$result = mysql_query($sql);
// adaugare date in array
$profs = array();
while($row = mysql_fetch_array($result)) {
  $prof[$row['col_profesor']][$row['col_specializare']][$row['an_studiu']][$row['semestru']][] = $row['disciplina'];
}

//parcurgere date si aranjare pt afisare
$re = '';
foreach($profs as $col_profesor => $col_specializare) {
  $re .=  'Profesor: '. $col_profesor.'<br>';
  foreach($col_specializare as $key_sp in $an_studiu) {
    $re .= 'Specializarea: '. $key_sp.'<br>';
    foreach($an_studiu as $key_an in $semestru) {
      $re .= 'An: '. $key_an.'<br>';
      foreach($semestru as $key_sm in $disciplina) {
        $re .= 'Semestru: '. $key_sm.'<br>';
        for($i=0; $i<count($disciplina); $i++) {
          $re .= ($i + 1). '. '. $disciplina[$i].'<br>';
        }
      }
    }
  }
}

echo $re;        // afisare
 
- Pare destul de complicat, asta daca reusesti sa aplici comanda Select potrivita care sa returneze acele date la fiecare profesor.
Doar cu atat am stiut sa incerc sa ajut.

Subiecte similare