Avatar billede lsskaarup Nybegynder
22. december 2010 - 11:36 Der er 1 løsning

Fjerne element i array

Jeg har en side, hvor der dynamisk bliver lavet et antal rækker, hvor der i hver række er en rullemenu, der viser en specifik projektleder, men selvfølgelig samtidig giver muligheden for at vælge de andre projektleder.

Nu kunne jeg godt tænke mig at gøre, så brugeren ikke kan vælge den samme projektleder 2 gange i hver sin række. Så jeg tænkte at det måtte jeg kunne gøre med unset() på array-elementet, men det virker kun tildels.

Jeg kan se, at elementer bliver slettet, men rullemenuen er nu kun udfyldt med data i den første række, i de efterfølgende er den tom. Så et eller andet gør jeg galt, kan bare ikke se hvad?

Nedenstående kode håndtere at lave rækkerne. $ENTREPRISE er et array som f.eks. kan indeholde
Array([11820] => Array([navn] => Projektledernavn (initialer) [land] => Array([0] => DK)))


<?php               
                  $pm = "SELECT * FROM projektmedlemmer AS pm
                            LEFT JOIN stamdata ON pm.stamdataID = stamdata.unique_id
                            WHERE ordreID = '".$_GET['id']."'";
                    $pmsql = mysql_query("$pm") or die(mysql_error());
                    $counter = 1;
                    $antalPl = mysql_num_rows($pmsql);
                    if ($antalPl) {
                        while ($pmr = mysql_fetch_array($pmsql)) {?>
                            <tr>
                                <td><?php if ($counter == 1) { echo "Projektansvarlig:"; } else { echo "Deltager:"; }?>
                                </td>       
                                <td><?php
                                    /*                        echo "<pre>";
                                        print_r($ENTREPRISE);
                                        echo "</pre>";*/
                                ?>
                                    <!-- Skjult felt indeholdende id i projektmedlemstabellen -->
                                    <input type="hidden" readonly class="inputsmall" name="projektmedlem_<?php echo $counter; ?>_id" value="<?php echo $pmr['id']; ?>">
                                    <!-- Skjult felt indeholdende medarbejderens unikke id fra stamdata tabellen -->
                                    <input type="hidden" class="inputsmall" name="projektmedlem_<?php echo $counter; ?>_stamdataID" value="<?php echo $pmr['stamdataID']; ?>">
                                   
                                    <select name="projektmedlem_<?php echo $counter; ?>_pl" size="1" class="listform">
                                        <option value=""></option>
                                        <?php
                                       
                                        if ($counter == 1) {//For at være sikker på vi finder den rigtige ansvarlige, tjekker vi ved 1. række for kun ham
                                            $apl = "SELECT * FROM projektmedlemmer AS pm
                                                    LEFT JOIN stamdata ON pm.stamdataID = stamdata.unique_id
                                                    WHERE ordreID = '".$_GET['id']."' && ansvarlig = 1";
                                            $aplsql = mysql_query("$apl") or die(mysql_error());
                                            $aplr = mysql_fetch_array($aplsql);           
                                            reset($ENTREPRISE);
                                            while (list ($key, $val) = each ($ENTREPRISE)) {
                                                //echo $key;
                                                //echo $val['navn'];
                                                $select = '';
                                                if ($key == $aplr['employee']) $select = ' selected';
                                            ?>
                                                <option value="<?php echo $key; ?>"<?php echo $select; ?>><?php echo $val['navn']; ?></option>
                                            <?php //echo $ENTREPRISE[$key];
                                                unset($ENTREPRISE[$key]);
                                            }
                                        } else {//Alle andre
                                            reset($ENTREPRISE);
                                            while (list ($key, $val) = each ($ENTREPRISE)) {
                                                echo $val['navn'];
                                                $select = '';
                                                //if ($key == $res['r1']) $select = ' selected';
                                                if ($key == $pmr['employee']) $select = ' selected';
                                            ?>
                                                <option value="<?php echo $key; ?>"<?php echo $select; ?>><?php echo $val['navn']; ?></option>
                                            <?php
                                            }
                                        }
                                        ?>
                                    </select>           
                                </td>
                                <td>
                                    <input type="text" class="inputextrasmall" name="projektmedlem_<?php echo $counter; ?>_forv_start" value="<?php if ($counter == 1) {
                                echo sqltoalmdatetom($aplr['forv_start']);} else { echo sqltoalmdatetom($pmr['forv_start']); }?>">
                                </td>
                                <td>
                                    <input type="text" class="inputextrasmall" name="projektmedlem_<?php echo $counter; ?>_forv_slut" value="<?php if ($counter == 1) {
                                echo sqltoalmdatetom($aplr['forv_slut']);} else { echo sqltoalmdatetom($pmr['forv_slut']); }?>">
                                </td>
                                <td>
                                    <input type="text" class="inputextraextrasmall" name="projektmedlem_<?php echo $counter; ?>_procent" value="<?php if ($counter == 1) {
                                echo $aplr['procent'];} else { echo $pmr['procent']; }?>" /> %
                                </td>
                                <td>
                                <?php if ($counter > 1) { ?>
                                    <a href="/entreprise_ordre_init_process.php?pmid=<?php echo $pmr['id'];?>&ordreid=<?php echo $pmr['ordreID'];?>&thispage=1" name="slet">
                                        <img border="0" name="slet" src="/gfx/delete.gif" alt="Slet">
                                    </a>
                                <?php }?>
                                </td>
                            </tr>
             
                <?php        //}
                            $counter++;
                        }
                    }
                ?>


Hvad har jeg glemte eller overset?
Avatar billede lsskaarup Nybegynder
22. december 2010 - 11:43 #1
Flot, fandt så fejlen, og det var en dumhed.

Jeg havde sat så unset($ENTREPRISE[$key]); alle i arrayet, og ikke kun den valgte bruger. Så nu røg det ind i if-sætningen, istedet for at være udenfor.
while (list ($key, $val) = each ($ENTREPRISE)) {
                                                echo $val['navn'];
                                                $select = '';
                                                //if ($key == $res['r1']) $select = ' selected';
                                                if ($key == $pmr['employee']) {
                                                    $select = ' selected';
                                                    unset($ENTREPRISE[$key]);
                                                }
                                            ?>
                                                <option value="<?php echo $key; ?>"<?php echo $select; ?>><?php echo $val['navn']; ?></option>
                                            <?php
                                            }
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