Avatar billede compac Seniormester
12. februar 2007 - 16:01 Der er 10 kommentarer og
1 løsning

Opdater felter i db efter markering i checkbox

Jeg har en formular hvor jeg der er en checkbox ud for hver post.
Jeg kunne tænke mig at sætte kryds i een checkbox og derefter trykke på een opdaterknap - som natuligvis aktiverer den checkbox der er afkrydset.


<table>
<tr>
           
            <td><strong>Branch Name </strong></td>
            <td><strong>Short Name </strong></td>
            <td><strong>Update</strong></td>
          </tr>
          <?
          $sql="select sn,branchname,shortname from $branch order by sn";
          $result=mysql_query($sql,$connection) or die(mysql_error());
          while($row=mysql_fetch_array($result)) {
          ?>
          <tr>
            <td><input name="<? echo $row['sn']; ?>" type="checkbox" class="check"></td>
            <td><? echo $row['branchname']; ?></td>
            <td><? echo $row['shortname']; ?></td>
            <td><a href="<? echo "form.php?sn=".$row['sn']."&mode=update"; ?>">Update</a></td>
          </tr>
        <? } ?>

        </table>
Avatar billede jakobdo Ekspert
12. februar 2007 - 17:37 #1
Til at starte med synes jeg du skal navngive dine checkboxe på denne måde:

name="update['.$row['id'].']"

Så kan du nemlig se hvilke checkboxe der er checket via:

foreach($_POST['update'] AS $check)
{
echo $check . ' skal opdateres<br />';
}
Avatar billede compac Seniormester
12. februar 2007 - 20:38 #2
Den melder fejl i foreach-sløjfen:
Warning: Invalid argument supplied for foreach()
Avatar billede jakobdo Ekspert
12. februar 2007 - 20:50 #3
Har du husket at rette i din form?
Så du rettede:
<td><input name="<? echo $row['sn']; ?>" type="checkbox" class="check"></td>
til:
<td><input name="update['<?=$row['id'];?>']" type="checkbox" class="check"></td>
Avatar billede compac Seniormester
12. februar 2007 - 21:41 #4
Nej der er stadig fejl i foreach-sætningen.
Skal der ikke være <? ?>  i input-sætningen sådan?
<input name="<? echo update['.$row['sn'].'];?>" type="checkbox" class="check">
Avatar billede jakobdo Ekspert
13. februar 2007 - 07:46 #5
Nej, prøv at lad "sætningen" se sådan ud:

<input name="update['<? echo $row['sn']; ?>']" type="checkbox" class="check">
Avatar billede compac Seniormester
13. februar 2007 - 15:03 #6
Det virker stadig ikke. Nu prøver jeg at fjerne alt overflødig kode og lave det efter et helt andet princip:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Branch</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<form action="" method="post" name="" id="">
<?php
    include("conn.php");
    $sql="select sn,branchname,shortname from $branch order by sn";
    $result=mysql_query($sql,$connection) or die(mysql_error());
    while(list($sn, $active) = mysql_fetch_row($result)) {
    $checked = $active=='yes' : 'checked' : '';
    echo '<input type="hidden" name="active[' . $sn . ']" value="" />';
    echo '<input type="checkbox" name="active[' . $sn . ']" value="1" ' . $checked . ' />' . $sn . "<br />\n" ;
    }
    ?>
    </form>
</body>
</html>


Med denne opstilling kommer der en fejl i linien med
$checked = $active=='yes' : 'checked' : '';
som siger:
Parse error: parse error, unexpected ':'
Avatar billede jakobdo Ekspert
13. februar 2007 - 15:59 #7
Dette kode er da også forkert:
$checked = $active=='yes' : 'checked' : '';
Det skal vel være:
$checked = ($active=='yes')?'checked':'';
Avatar billede michael_stim Ekspert
13. februar 2007 - 16:04 #8
eller:

$checked = ($active=='yes' ? 'checked' : '');
Avatar billede compac Seniormester
13. februar 2007 - 16:27 #9
Så er den endelig hjemme, Tak for hjælpen- og læg nogle svar
Avatar billede jakobdo Ekspert
13. februar 2007 - 16:37 #10
Svar!
Avatar billede jakobdo Ekspert
15. februar 2007 - 10:58 #11
Takker 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