Avatar billede compac Seniormester
19. februar 2007 - 17:22 Der er 6 kommentarer og
1 løsning

Jeg ælsker min foreach-løkke.

Hvorfor kan jeg ikke få denne foreach-løkke til at virke?
<!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">
<?php
    include("consurtest.php");
    $sql="select id,sn from $branch order by sn";
    $result=mysql_query($sql,$connection) or die(mysql_error());
    while(list($id,$sn) = mysql_fetch_array($result)) {
    $checked = ($sn=='yes')? 'checked' : '';
    echo '<input type="hidden" name="id['. $sn .']" value="" />';
    echo '<input type="checkbox" name="id['. $sn .']" value="1" ' . $checked . ' />' . $id . "<br />\n" ;
    }
?>
</form>
<?php
foreach($_POST['sn'] AS $id=>$checked) {
    $sn = $checked ? 'yes' : 'no';
    $query = "UPDATE aktiv SET sn='$sn' WHERE id=$id";
    $result = mysql_query($query) or die('query failed: ' . mysql_error());
}
?>
</body>
</html>
Den melder:
Warning: Invalid argument supplied for foreach()
Avatar billede mcgoat Nybegynder
19. februar 2007 - 17:58 #1
AS der skal stå med småt?
Avatar billede compac Seniormester
19. februar 2007 - 19:33 #2
Det ændrer intet, selvom jeg har lavet alle store bogstaver om til små (bortset fra $_POST).
Avatar billede showsource Seniormester
20. februar 2007 - 01:32 #3
Du har jo ikke noget post sn ? Kun id
Og hvorfor lave et hiddenfelt?
Avatar billede compac Seniormester
20. februar 2007 - 10:32 #4
Jeg skal nok have det ind med teskeer, hvad der skal rettes. Samtidig kan jeg lære noget måske. Vil du/I forklare mig det nærmere?
Avatar billede dkfire Nybegynder
21. februar 2007 - 17:16 #5
Som jeg kan se det kommer du aldrig til at have et input med name="sn[]".
Derfor vil $_POST['sn'] aldrig være sat og have nogen værdi.

Du behøver ikke den hidden input. Alt du behøver er:
echo '<input type="checkbox" name="sn['.$id.']" value="1" ' . $checked . ' />';
Det burde virke.

Men inden du lader php kører dine foreach løkke, så tjek lige om formen er indsend.
Avatar billede compac Seniormester
21. februar 2007 - 20:47 #6
Hvordan skal foreach-sætningen se ud?
Hvad mener du med din sidste sætning?
PS! jeg har indsat den manglende body i starten.
Avatar billede compac Seniormester
17. juni 2007 - 18:42 #7
lukker
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