Avatar billede expnet Seniormester
25. januar 2006 - 05:11 Der er 12 kommentarer og
1 løsning

Checked gemtet poster?

hej exp'er

Jeg vil høre om der nogle der kan fortælle hvad jeg gør forkert her da den gerne skulle sætte et hak i dem som der er tilføjt til database

de kommer ud som en array() og den hedder billeder

håber I forstår hvad det er jeg gerne vil have den skal gøre



------------- kode --------------------------

<?
$out = "<table width='100%' border='0' cellspacing='0' cellpadding='0'>\n";
$out .= "";
$dir = "../billeder/";

$odir = opendir($dir);
    $filer = readdir($odir);
    $exp_img = explode("|",$rs[billeder]);
    $i = 0;
    $img_b = count($exp_img)-1;
    while ($filer = readdir($odir)){
    if($filer != ".." AND $filer != "."){
    if ($i%12 == 0) $out .= "<tr>";
    if(file_exists($dir.$exp_img[$i])){
    $checked = "checked";
    }   
    $out .= "<td style=\"padding-left:3px; border-left:1px solid #000000;\"><label onmouseover=\"showimgOVER('simg','".$dir."".$filer."')\" onmouseout=\"showimgOUT('simg')\">";
    $out .= "<input name='billeder[]' checked='$checked' type='checkbox' value='$filer'>". substr(strtolower($filer),0,-4) ."</label></td>";

            $i++;
    if ($i%12 == 0) $out .= "</tr>\n";
    }
    }
    if ($i%12 != 0) $out .= "</tr>\n";
    $out .= "</table>";
    echo $out;

?>

//expnet
Avatar billede nielle Nybegynder
25. januar 2006 - 08:44 #1
Du tæller både arrayet af $filer og $exp_img op på samme tid. Der er dog ingen garanti for at de vil passe på samme tid. I stedet skal du have en ydre løkke hvor du tæller filer op. Inden i den skal du have en indre (doh!) løkke som løber hele $exp_img igennem for hver fil-værdi i den ydre. Det kunne laves over følgende skabelon:

$exp_img = explode("|", $rs[billeder]);

odir = opendir($dir);
while ($fil = readdir($odir))
{
    if ($fil != "." && $fil != "..")
    {
        $checked = "";
        for ($i=0; $i<count($exp_img); $i++)
        {
            if ($dir . $exp_img[$i] == $fil)
            {
                $checked = "checked";
                break;
            }
        }

        // Og så din udskrift her, samt den logik,
        // som tæller op med 12 filer pr. række.
    }
}


PS: Hvad er pointen med sådan noget som:

$out .= "";

- og:

... $dir."".$filer ...

Den eneste effekt er at du bruger CPU-ressourcer på ingenting.
Avatar billede expnet Seniormester
25. januar 2006 - 17:37 #2
nielle -> jeg synes ikke det vil som jeg gerne vil have det til...
hvad er det lige jeg gør forkert

<?
$out = "<table width='100%' border='0' cellspacing='0' cellpadding='0'>\n";

$exp_img = explode("|", $rs[billeder]);
$dir = "../billeder/";
$odir = opendir($dir);
while ($fil = readdir($odir))
{
    if ($fil != "." && $fil != "..")
    {
        $checked = "";
        for ($i=0; $i<count($exp_img); $i++)
        {
            if ($dir . $exp_img[$i] == $fil)
            {
                $checked = "checked";
                break;
            }
        }

    if ($i%12 == 0) $out .= "<tr>";
 
    $out .= "<td style=\"padding-left:3px; border-left:1px solid #000000;\"><label onmouseover=\"showimgOVER('simg','".$dir."".$fil."')\" onmouseout=\"showimgOUT('simg')\">";
    $out .= "<input name='billeder[]' checked='$checked' type='checkbox' value='$fil'>". substr(strtolower($fil),0,-4) ."</label></td>";

    if ($i%12 == 0) $out .= "</tr>\n";
    }
}
$out .= "</table>";
echo $out;
?>
Avatar billede nielle Nybegynder
25. januar 2006 - 18:38 #3
Hvad får du udskrevet?
Avatar billede expnet Seniormester
26. januar 2006 - 15:44 #4
alle samme checked
Avatar billede nielle Nybegynder
26. januar 2006 - 17:33 #5
Atributten checked='$checked' skal helt udelades for de checkbox'e som ikke skal være afkrydset.
Avatar billede expnet Seniormester
26. januar 2006 - 20:24 #6
<select name="billeder[]" multiple="multiple" size="1" style="height:175;">
<?
$exp_img = explode("|", $rs[billeder]);
$dir = "../billeder/";
$odir = opendir($dir);
while ($fil = readdir($odir))
{
    if ($fil != "." && $fil != "..")
    {
        $checked = "";
        for ($i=0; $i<count($exp_img); $i++)
        {
            if ($exp_img[$i] == $fil)
            {
?>
<option selected="selected" value="<?=$fil?>">[<?=$i?>] <?=$fil?></option>
<?
                break;
            }
        }
?>
<option value="<?=$fil?>">[<?=$i?>] <?=$fil?></option>
<?
}
}
?>
</select>

har prøve lave den sådaner her men det ikke virke...

kan du ikke hjælpe mig har snart rodet med den i 3uger
Avatar billede nielle Nybegynder
26. januar 2006 - 20:38 #7
Hvis du bruger en oprtion i stedet for ... så er det atributten selected="selected" som simpelæthen skal "mangle" på de options som ikke skal være selected.
Avatar billede nielle Nybegynder
26. januar 2006 - 20:47 #8
Måske noget i denne stil?

<select name="billeder[]" multiple="multiple" size="1" style="height:175;">
<?
$exp_img = explode("|", $rs[billeder]);

$dir = "../billeder/";
$odir = opendir($dir);
while ($fil = readdir($odir))
{
    if ($fil != "." && $fil != "..")
    {
        $selected = false;
        for ($i=0; $i<count($exp_img); $i++)
        {
            if ($exp_img[$i] == $fil)
            {
                $selected = true;
                break;
            }
        }

        echo "<option" . (($selected) ? " selected='selected'" : "") . " value='" . $fil . "'>[" . $i . "] " . $fil . "</option>";
    }
}
?>
</select>
Avatar billede nielle Nybegynder
06. februar 2006 - 18:22 #9
Har du fået kigget på det?
Avatar billede expnet Seniormester
16. februar 2006 - 15:29 #10
nielle undskylder jeg har ikke være så meget ved pc'en men hvis du ligger et svar så er der nogle point på vej
Avatar billede nielle Nybegynder
16. februar 2006 - 22:15 #11
Skulle du få problemer med det, så spørger du bare igen her i dette spørgsmål. :^)

... og et svar :^)
Avatar billede nielle Nybegynder
27. februar 2006 - 18:52 #12
Så mangler du bare at acceptere svaret :^)
Avatar billede nielle Nybegynder
05. maj 2006 - 19:03 #13
Tak for point :^)
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