Avatar billede zehrid Nybegynder
31. maj 2005 - 09:13 Der er 1 løsning

problemer med søgefunktion

Jeg har lavet en søgefunktion hvor man kan søge på følgende: (Master)tegning, komponent, instruktionstype og instruktion.

(Instruktion kan være af bestemt type og kan tilføres til en komponent på en mastertegning)

Resultatet af søgningen vises i en hierarkisk menu med fire "lag" hvr den første er ANLÆGSOMRÅDE, den anden er DELOMRÅDE, de tredje MASTERTEGNING og den fjerde er INSTRUKTION.

Når jeg så søger efter f.eks. instruktionstype får jeg kun vst en instruktion selv om der findes flere instruktioner med den valgte instruktionstype. Det samme sker når jeg søger på instruktionsnavn. Hver gang for jeg en enkelt resultat :( Hvad kan det skyldes?



<? php
if((isset($submit_soeg) && $submit_soeg != '') || $status == 1){
   
    $anlaegsomraader = array();
    $delomraader = array();
    $mastertegninger = array();

    if($soegmastertegning != '' || $soegkomponent != '' || $soeginstruktion !="" || $soeginstruktionstype !="") {     

            $sql = "SELECT * FROM anlaegsomraade";   
            $db->query($sql);

            for ($j = 0; $j < $db->num_rows(); $j++){
                $db->next_record();
                $anlaegsomraader[$j] = array('id'=>$db->f(id), 'navn'=>$db->f(navn));
            }
           
            for ($j = 0; $j < count($anlaegsomraader); $j++){
                $sql = "SELECT * FROM delomraade WHERE anlaegsomraadeid = ".$anlaegsomraader[$j]['id'];

                $delomraade_bag = array();
               
                $db->query($sql);
               
                $num_r = 0;
               
                while ($db->next_record()){

                    $mastertegning_bag = array();

                    $sql = "SELECT * FROM mastertegning WHERE mastertegning.delomraadeid = ".$db->f(id);
                   
                    if ($soegmastertegning != '')
                    $sql .= " AND mastertegning.id LIKE ".$soegmastertegning;
                    $sql .= " ORDER BY nummer";
                   
                    $db1->query($sql);
                   
                    while ($db1->next_record()){
                        $sql = "SELECT mastertegning.*, mastertegning_position.*, instruktion.*, instruktion.id AS instruktionsid, instruktion.navn AS instruktionsnavn FROM mastertegning, mastertegning_position, instruktion WHERE instruktion.komponentid = mastertegning_position.id AND mastertegning.id = mastertegning_position.mastertegning_id AND mastertegning.id =".$db1->f(id);
                       
                        if ($soeginstruktion != '')
                        $sql .= " AND instruktion.id LIKE '%".$soeginstruktion."%'";
                       
                        if ($soegkomponent != '')
                        $sql .= " AND mastertegning_position.lagervare_id LIKE '%".$soegkomponent."%'";

                        if ($soeginstruktionstype != '')
                        $sql .= " AND instruktion.instruktionstypeid LIKE '%".$soeginstruktionstype."%'";
                       
                        $db2->query($sql);
                       
                        while ($db2->next_record()){
                       
                            $instruktion = $db2->f(instruktionsid);

                            $db3->query("SELECT instruktion.*, mastertegning_position.*, lagervare.*, lagervare.id AS lagervareid FROM instruktion, mastertegning_position, lagervare WHERE instruktion.komponentid = mastertegning_position.id AND mastertegning_position.lagervare_id = lagervare.varenummer AND instruktion.id = ".$instruktion);
                            $db3->next_record();
                           
                            $db4->query("SELECT instruktion.*, mastertegning_position.*, ikke_lagervare.*, ikke_lagervare.id AS ikkelagervareid FROM instruktion, mastertegning_position, ikke_lagervare WHERE instruktion.komponentid = mastertegning_position.id AND mastertegning_position.lagervare_id = ikke_lagervare.varenummer AND instruktion.id = ".$instruktion);
                            $db4->next_record();

                            if ($db2->num_rows() != 0){
                                $mastertegning_bag = array ('id'=>$db1->f(id), 'nummer'=>$db1->f(nummer));
                                $instruktion_bag = array ('instruktionsid'=>$db2->f(instruktionsid), 'instruktionsnavn'=>$db2->f(instruktionsnavn), 'instruktionstype'=>$db2->f(instruktionstypeid), 'sikkerhedsforhold'=>$db2->f(sikkerhedsforhold), 'vaerktoej'=>$db2->f(vaerktoej), 'mastertegning'=>$db1->f(id), 'komponentnavn'=>$db3->f(betegnelse), 'ikomponentnavn'=>$db4->f(betegnelse), 'beskrivelse'=>$db2->f(beskrivelse), 'lagervare'=>$db3->f(lagervareid), 'ikkelagervare'=>$db4->f(ikkelagervareid));
                            }
                        }
                    }
                   
                    if (count($mastertegning_bag) == 0)
                        $delomraade_bag[] = array('id'=>$db->f(id), 'navn'=>$db->f(navn), 'nogentegning'=>0);
                    else{
                        $delomraade_bag[] = array('id'=>$db->f(id), 'navn'=>$db->f(navn), 'tegninger'=>$mastertegning_bag, 'instruktioner'=>$instruktion_bag, 'nogentegning'=>1);
                        $num_r++;
                    }
                }
               
                if ($db->num_rows() == 0)
                    $delomraader[$anlaegsomraader[$j]['id']] = -1;
                else if ($num_r == 0)
                    $delomraader[$anlaegsomraader[$j]['id']] = -2;
                else
                    $delomraader[$anlaegsomraader[$j]['id']] = $delomraade_bag;
        }
        $status = 1;
    }
    else
        $status = 0;
}


if ($status == 1){
    $print = 0;
   
    for ($j = 0; $j < count($anlaegsomraader); $j++){     
        if ($delomraader[$anlaegsomraader[$j]['id']] > 0){

              $print = 1;
            print '<tr><td>';
            if ($session_current != $anlaegsomraader[$j]['id']){
                print '<a href="'.$PHP_SELF.'?mcurrent='.$anlaegsomraader[$j]['id'].'&status=1">'.$anlaegsomraader[$j]['navn'].'</a>';
            }
            if ($session_current == $anlaegsomraader[$j]['id']){
                print '<a href="'.$PHP_SELF.'?mcurrent=-1'.$hrefparam.'&status=1">'.$anlaegsomraader[$j]['navn'].'</a>';
            print '</td></tr>';

                $a = $delomraader[$anlaegsomraader[$j]['id']];

                for ($k = 0; $k < count($a); $k++){
                    $atemp = $a[$k];
                   
                    if ($atemp['nogentegning'] == 1){
                           
                        print '<tr><td>';
                   
                        if ($session_current_sub !=  $atemp['id'] && $udfold != 1) {
                            print '<a href="'.$PHP_SELF.'?mcurrent='.$anlaegsomraader[$j]['id'].'&mcurrentsub='.$atemp['id'].$hrefparam.'&status=1">'.$atemp['navn'].'</a>';
                            }

                        if ($session_current_sub ==  $atemp['id'] || $udfold == 1){
                            print '<a href="'.$PHP_SELF.'?mcurrent='.$anlaegsomraader[$j]['id'].'&mcurrentsub=-1'.$hrefparam.'&status=1">'.$atemp['navn'].'</a>';
                        print '</td></tr>';

                            $sr = $atemp['tegninger'];
                               
                            print '<tr><td>';

                            if ($session_current_sub_sub !=  $sr['id'] && $udfold != 1) {
                                print '<a href="'.$PHP_SELF.'?mcurrent='.$anlaegsomraader[$j]['id'].'&mcurrentsub='.$atemp['id'].'&mcurrentsubsub='.$sr['id'].$hrefparam.'&status=1">'.$sr['nummer'].'</a>';
                            print '</td></tr>';
                            }

                            if ($session_current_sub_sub ==  $sr['id'] || $udfold == 1) {
                                print '<a href="'.$PHP_SELF.'?mcurrent='.$anlaegsomraader[$j]['id'].'&mcurrentsub='.$atemp['id'].'&mcurrentsubsub=-1'.$hrefparam.'&status=1">'.$sr['nummer'].'</a>';
                            print '</td></tr>';

                            $instruktion = $atemp['instruktioner'];

                                print '<tr><td>';
                                        print '<img src="../../gfx/blank.gif" border="0" width="30" height="5">';
                                        print '<a href="instruktion.php?instruktionsid='.$instruktion['instruktionsid'].'&instruktionsnavn='.$instruktion['instruktionsnavn'].'&mastertegning='.$instruktion['mastertegning'].'&lagervare='.$instruktion['lagervare'].'">';
                                        print '<img src="../../gfx/tree_branch.gif" border="0"> '.$instruktion['instruktionsnavn'].'</a>';
                                        $db->query("SELECT * FROM instruktionstype WHERE id = ".$instruktion['instruktionstype']);
                                        $db->next_record();
                                        print '<td align="left">'.$db->f(navn).'</td>';
                                        print '<td align="left">'.$instruktion['beskrivelse'].'</td>';
                                        print '<td align="left">'.$instruktion['komponentnavn'].'</td>';
                            print '<a href="mastertegning.php?mid='.$session_current_sub_sub.'">[ Opret ny arbejdsinstruktion ]</a>';
                            }
                        }
                    }
                }
            }
        }
    }
}
Avatar billede zehrid Nybegynder
23. juni 2005 - 15:03 #1
ingen svar... :(
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester