Avatar billede Slettet bruger
06. oktober 2004 - 00:07 Der er 16 kommentarer og
1 løsning

Mangler hjælp til håbløs fejl

Jeg har fået en bekendt til at lave nedenstående (har ikke selv en pind forstand på php). Men den giver en fejlmelding i linie 185 - noget i stil med: Warning: Invalid argument supplied for foreach()
(jeg har markeret line 185 med en stribe Å'er)


<!-- Minus AutoDato -->
<META NAME="Generator" CONTENT="Stone's WebWriter 3.5">
<LINK REL="stylesheet" HREF="../css/sommer.css" TYPE="text/css">
<HTML><HEAD><TITLE>Ny</TITLE>
</HEAD>

<BODY  BACKGROUND="../pics/orange-1.gif" leftmargin="5" topmargin="4">



<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
  <TBODY>
  <TR>
    <TD width=13><A href="../index.htm"><IMG
      height=23 alt="" src="../pics/retur.gif" width=17 align=bottom
      border=0></A>&nbsp; <BR><IMG height=1 alt="" src="" width=19 align=bottom
      border=0> </TD>
    <TD vAlign=top noWrap align=left width="3%"><A
      href="../index.htm"><IMG height=19
      alt="" src="../pics/www.gif" width=143 align=bottom
      border=0></A>&nbsp;<BR></TD>
    <TD align=middle><IMG height=1 alt="" src="../pics/skub.gif" width=200
      align=bottom border=0> </TD></TR></TBODY></TABLE>


<CENTER>
<TABLE cellSpacing=0 cellPadding=0 width=700 border=0><TR><TD>
<IMG SRC="katbe-g.gif" BORDER="0" WIDTH="204" HEIGHT="29" ALIGN="bottom" ALT=""><BR>
<span class="txt">


<?php
if (count($_POST) > 0) {
    trimdata($_POST); //remove whitespace
    extract($_POST,EXTR_OVERWRITE); //overwrite existing vars with the posted vars
}

if ($submit) {
    //form validation
    $error = array();
    if (!$name) {
        $error[] = "Angiv venligst dit navn";
    }
    if (!$address) {
        $error[] = "Angiv venligst din adresse";
    }
    if (!$zipcode) {
        $error[] = "Angiv venligst dit postnr.";
    }
    if (!$city) {
        $error[] = "Angiv venligst bynavn";
    }
    if (!$checkbox0 && !$checkbox1) {
        $error[] = "Du bedes vælge mindst én af checkboksene";
    }
    if (count($opt2) == 0) {
        $error[] = "Du bedes foretage mindst ét valg under Opt. 2";
    }

    //only send mail if there's no errors
    if (count($error) == 0) {
        //give user a message depending on checkbox choice
        if ($checkbox0 && !$checkbox1) {
            $text_msg = 'Denne tekst vises hvis den ene checkbox er valgt (Tekst 1)';
        } elseif ($checkbox1 && !$checkbox0) {
            $text_msg = 'Denne tekst vises hvis den anden checkbox er valgt (Tekst 2)';
        } elseif ($checkbox0 && $checkbox1) {
            $text_msg = 'Denne tekst vises hvis begge checkboxe er valgt (Tekst 3)';
        }
        $message = "Navn: ".$name."\n";
        $message  .= "Adresse: ".$address."\n";
        $message .= "Postnummer og by: ".$zipcode." ".$city."\n";
        $message .= "\n";
        $message .= "Opt 1.: ".$text_msg."\n";
        $message .= "Opt 2.:\n".join("\n",$opt2)."\n";

        echo $text_msg;
        mail('ntg@mail.dk', 'Tilmeldings mail', $message);
        ;?>
        <p><a href="videre.html">Klik her for at komme videre</a></p>
        <?php
    //if errors, give user some info...
    } else {
        echo join("<br>",$error);
    }
}

//show the form, if it is not sent, or errors ocurred
if (!$submit || count($error) > 0) {
    $opt2_ary = array();
    $opt2_ary[1] = 'Tekst 1';
    $opt2_ary[2] = 'Tekst 2';
    $opt2_ary[3] = 'Tekst 3';
    $opt2_ary[4] = 'Tekst 4';
    $opt2_ary[5] = 'Tekst 5';
    $opt2_ary[6] = 'Tekst 6';
    $opt2_ary[7] = 'Tekst 7';
    $opt2_ary[8] = 'Tekst 8';
    $opt2_ary[9] = 'Tekst 9';
    $opt2_ary[10] = 'Tekst 10';
    $opt2_ary[11] = 'Tekst 11';
    ?>
    <form action="index.php" method="post">





<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="0"><TR><TD valign="top">



<TABLE WIDTH="200" BORDER="0" CELLSPACING="0" CELLPADDING="0">
<TR><TD><span class="txt">
Navn
</TD><TD>
<input type="text" name="name" value="<?= $name?>">
</TD></TR>

<TR><TD><span class="txt">
Gade
</TD><TD>
<input type="text" name="address" value="<?= $address?>">
</TD></TR>


<TR><TD><span class="txt">
Postnr&nbsp;&nbsp;
</TD><TD>
<input type="text" name="zipcode" value="<?= $zipcode;?>">
</TD></TR>


<TR><TD><span class="txt">
By
</TD><TD>
<input type="text" name="city" value="<?= $city?>">
</TD></TR>


</TABLE>

<BR><BR>
<span class="txt">
Vi vil bede dig...






</TD><TD width="150" align=center valign=top><span class="txt">
<IMG SRC="so.jpg" BORDER="0" WIDTH="150" HEIGHT="216" ALIGN="bottom" ALT=""><BR>
so<BR>
<input type="checkbox" name="checkbox0" value="checkbox0" <?php if ($checkbox0) print "checked";?>
</TD><TD width="40">
&nbsp;&nbsp;
</TD><TD width="150" align=center valign=top><span class="txt">
<IMG SRC="vi.jpg" BORDER="0" WIDTH="150" HEIGHT="216" ALIGN="bottom" ALT=""><BR>
vi<BR>
<input type="checkbox" name="checkbox1" value="checkbox1" <?php if ($checkbox1) print "checked";?>
</TD></TR></TABLE>




<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0"><TR>
<TD width=100%>





        <table border="0" cellpadding="0" cellspacing="0">
        <tr>
            <td>
                <table cellpadding="2" cellspacing="0" border="0">
                <?php
                foreach ($opt2_ary as $key => $value)
ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ - herunder
{
                    if ($opt2[$key] == $value) $checked = "checked";
                    print "<tr><td>".$value."</td><td><input type=\"checkbox\" name=\"opt2[$key]\" value=\"".$value."\" ".$checked."></td></tr>";
                    unset($checked);
                }
                ?>
                </table>
                </td>
            </tr>
            <tr>
                <td colspan="2" align="right"><BR><BR>
        <input type="submit" name="submit" value="Send"></td>
            </tr>
        </table>
    </form>
   

<?php
//this function trims whitespace from all posted values
function trimdr( &$r ){
  if(gettype($r) == "array" ){
      foreach($r as $key => $value){
          trimdr($r[$key]);
      }
  }
  else{
    $r=trim( (string) $r );
  }
}

function trimdata( &$d ){
    trimdr($d);
}
?>






</TD></TR></TABLE>
Avatar billede dennismp Nybegynder
06. oktober 2004 - 00:55 #1
Er det hele sourcen? Så vidt jeg kan se, mangler der da et } der matcher med følgende linje:
if (!$submit || count($error) > 0) {

Men koden er ærligtalt temmelig ulæselig - så det er svært at gennemskue. Jeg selv havde nok valgt at kode det om :)
Avatar billede hmortensen Nybegynder
06. oktober 2004 - 06:17 #2
Ser ud til der mangler noget, da html'en ikke er afsluttet
Avatar billede hmortensen Nybegynder
06. oktober 2004 - 06:26 #3
Så vidt jeg lige kan se, skal der være en } her (linie 198):
<?php
}
//this function trims whitespace from all posted values
function trimdr( &$r ){
Avatar billede bojo Nybegynder
06. oktober 2004 - 08:33 #4
linie 122 mangler }

//show the form, if it is not sent, or errors ocurred
if (!$submit || count($error) > 0) {
    $opt2_ary = array();
    $opt2_ary[1] = 'Tekst 1';
    $opt2_ary[2] = 'Tekst 2';
    $opt2_ary[3] = 'Tekst 3';
    $opt2_ary[4] = 'Tekst 4';
    $opt2_ary[5] = 'Tekst 5';
    $opt2_ary[6] = 'Tekst 6';
    $opt2_ary[7] = 'Tekst 7';
    $opt2_ary[8] = 'Tekst 8';
    $opt2_ary[9] = 'Tekst 9';
    $opt2_ary[10] = 'Tekst 10';
    $opt2_ary[11] = 'Tekst 11';
  }  // her --------------------------------------------------------------
    ?>
Avatar billede bojo Nybegynder
06. oktober 2004 - 08:35 #5
hov ikke 122 kun ca 102 - mine forsøg har rykket koden lidt
Avatar billede hmortensen Nybegynder
06. oktober 2004 - 08:36 #6
Ud fra denne kommentar:
//show the form, if it is not sent, or errors ocurred

vil jeg tro at den skal være hvor jeg har sat den
Avatar billede bojo Nybegynder
06. oktober 2004 - 08:40 #7
Det har du nok ret i - jeg så slet ikke dit svar :-)
Avatar billede hmortensen Nybegynder
06. oktober 2004 - 08:42 #8
Den gir ihvertfal ingen fejl så :)
Avatar billede Slettet bruger
06. oktober 2004 - 10:13 #9
Nu har jeg tilføjet }, men jeg får stadig fejl - efter at have sendt
Avatar billede Slettet bruger
06. oktober 2004 - 10:14 #10
Hvis hindu har en fejlfri udgave, gider du så ikke lægge den ind her
Avatar billede Slettet bruger
06. oktober 2004 - 10:15 #11
Fejlen er "Invalid argument supplied for each()" i den første linie herunder

                foreach ($opt2_ary as $key => $value) {
                    if ($opt2[$key] == $value) $checked = "checked";
                    print "<tr><td>".$value."</td><td><input type=\"checkbox\" name=\"opt2[$key]\" value=\"".$value."\" ".$checked."></td></tr>";
                    unset($checked);
Avatar billede hmortensen Nybegynder
06. oktober 2004 - 10:29 #12
Jeg fatter ikke helt hvad din kode skal gøre.

Når jeg submitter efter at ha valgt, fx. 'so', får jeg 'tekst 1', vælger jeg 'vi' = 'tekst 2' og begge = 'tekst 3'

Resultattet blir ikke påvirket af mine valg på de andre checkboxe (1-11)
Avatar billede Slettet bruger
06. oktober 2004 - 10:36 #13
Resultatet fra 1-11 bliver sendt pr. mail - sammen med 1-2. Og den del fungerer godt nok.
Men hvis du har den fejlfri kode, kan du så ikke sende den.
Avatar billede hmortensen Nybegynder
06. oktober 2004 - 10:39 #14
Jeg tror jeg har 'spammet' din mail lidt :P

Rettede til min egen mail, og det ser ud til at virke:

<!-- Minus AutoDato -->
<META NAME="Generator" CONTENT="Stone's WebWriter 3.5">
<LINK REL="stylesheet" HREF="../css/sommer.css" TYPE="text/css">
<HTML><HEAD><TITLE>Ny</TITLE>
</HEAD>

<BODY  BACKGROUND="../pics/orange-1.gif" leftmargin="5" topmargin="4">



<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
  <TBODY>
  <TR>
    <TD width=13><A href="../index.htm"><IMG
      height=23 alt="" src="../pics/retur.gif" width=17 align=bottom
      border=0></A>&nbsp; <BR><IMG height=1 alt="" src="" width=19 align=bottom
      border=0> </TD>
    <TD vAlign=top noWrap align=left width="3%"><A
      href="../index.htm"><IMG height=19
      alt="" src="../pics/www.gif" width=143 align=bottom
      border=0></A>&nbsp;<BR></TD>
    <TD align=middle><IMG height=1 alt="" src="../pics/skub.gif" width=200
      align=bottom border=0> </TD></TR></TBODY></TABLE>


<CENTER>
<TABLE cellSpacing=0 cellPadding=0 width=700 border=0><TR><TD>
<IMG SRC="katbe-g.gif" BORDER="0" WIDTH="204" HEIGHT="29" ALIGN="bottom" ALT=""><BR>
<span class="txt">


<?php
if (count($_POST) > 0) {
    trimdata($_POST); //remove whitespace
    extract($_POST,EXTR_OVERWRITE); //overwrite existing vars with the posted vars
}

if ($submit) {
    //form validation
    $error = array();
    if (!$name) {
        $error[] = "Angiv venligst dit navn";
    }
    if (!$address) {
        $error[] = "Angiv venligst din adresse";
    }
    if (!$zipcode) {
        $error[] = "Angiv venligst dit postnr.";
    }
    if (!$city) {
        $error[] = "Angiv venligst bynavn";
    }
    if (!$checkbox0 && !$checkbox1) {
        $error[] = "Du bedes vælge mindst én af checkboksene";
    }
    if (count($opt2) == 0) {
        $error[] = "Du bedes foretage mindst ét valg under Opt. 2";
    }

    //only send mail if there's no errors
    if (count($error) == 0) {
        //give user a message depending on checkbox choice
        if ($checkbox0 && !$checkbox1) {
            $text_msg = 'Denne tekst vises hvis den ene checkbox er valgt (Tekst 1)';
        } elseif ($checkbox1 && !$checkbox0) {
            $text_msg = 'Denne tekst vises hvis den anden checkbox er valgt (Tekst 2)';
        } elseif ($checkbox0 && $checkbox1) {
            $text_msg = 'Denne tekst vises hvis begge checkboxe er valgt (Tekst 3)';
        }
        $message = "Navn: ".$name."\n";
        $message  .= "Adresse: ".$address."\n";
        $message .= "Postnummer og by: ".$zipcode." ".$city."\n";
        $message .= "\n";
        $message .= "Opt 1.: ".$text_msg."\n";
        $message .= "Opt 2.:\n".join("\n",$opt2)."\n";

        echo $text_msg;
        mail('ntg@mail.dk', 'Tilmeldings mail', $message);
        ;?>
        <p><a href="videre.html">Klik her for at komme videre</a></p>
        <?php
    //if errors, give user some info...
    } else {
        echo join("<br>",$error);
    }
}

//show the form, if it is not sent, or errors ocurred
if (!$submit || count($error) > 0) {
    $opt2_ary = array();
    $opt2_ary[1] = 'Tekst 1';
    $opt2_ary[2] = 'Tekst 2';
    $opt2_ary[3] = 'Tekst 3';
    $opt2_ary[4] = 'Tekst 4';
    $opt2_ary[5] = 'Tekst 5';
    $opt2_ary[6] = 'Tekst 6';
    $opt2_ary[7] = 'Tekst 7';
    $opt2_ary[8] = 'Tekst 8';
    $opt2_ary[9] = 'Tekst 9';
    $opt2_ary[10] = 'Tekst 10';
    $opt2_ary[11] = 'Tekst 11';

    ?>
    <form action="1.php" method="post">





<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="0"><TR><TD valign="top">



<TABLE WIDTH="200" BORDER="0" CELLSPACING="0" CELLPADDING="0">
<TR><TD><span class="txt">
Navn
</TD><TD>
<input type="text" name="name" value="<?= $name?>">
</TD></TR>

<TR><TD><span class="txt">
Gade
</TD><TD>
<input type="text" name="address" value="<?= $address?>">
</TD></TR>


<TR><TD><span class="txt">
Postnr&nbsp;&nbsp;
</TD><TD>
<input type="text" name="zipcode" value="<?= $zipcode;?>">
</TD></TR>


<TR><TD><span class="txt">
By
</TD><TD>
<input type="text" name="city" value="<?= $city?>">
</TD></TR>


</TABLE>

<BR><BR>
<span class="txt">
Vi vil bede dig...






</TD><TD width="150" align=center valign=top><span class="txt">
<IMG SRC="so.jpg" BORDER="0" WIDTH="150" HEIGHT="216" ALIGN="bottom" ALT=""><BR>
so<BR>
<input type="checkbox" name="checkbox0" value="checkbox0" <?php if ($checkbox0) print "checked";?>
</TD><TD width="40">
&nbsp;&nbsp;
</TD><TD width="150" align=center valign=top><span class="txt">
<IMG SRC="vi.jpg" BORDER="0" WIDTH="150" HEIGHT="216" ALIGN="bottom" ALT=""><BR>
vi<BR>
<input type="checkbox" name="checkbox1" value="checkbox1" <?php if ($checkbox1) print "checked";?>
</TD></TR></TABLE>




<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0"><TR>
<TD width=100%>





        <table border="0" cellpadding="0" cellspacing="0">
        <tr>
            <td>
                <table cellpadding="2" cellspacing="0" border="0">
                <?php
                foreach ($opt2_ary as $key => $value)
{
                    if ($opt2[$key] == $value) $checked = "checked";
                    print "<tr><td>".$value."</td><td><input type=\"checkbox\" name=\"opt2[$key]\" value=\"".$value."\" ".$checked."></td></tr>";
                    unset($checked);
                }
                ?>
                </table>
                </td>
            </tr>
            <tr>
                <td colspan="2" align="right"><BR><BR>
        <input type="submit" name="submit" value="Send"></td>
            </tr>
        </table>
    </form>
   

<?php
}
//this function trims whitespace from all posted values
function trimdr( &$r ){
  if(gettype($r) == "array" ){
      foreach($r as $key => $value){
          trimdr($r[$key]);
      }
  }
  else{
    $r=trim( (string) $r );
  }
}

function trimdata( &$d ){
    trimdr($d);
}
?>

</TD></TR></TABLE>
Avatar billede Slettet bruger
06. oktober 2004 - 11:04 #15
Det er jo bare super! Tak skal du have.
Men jeg mangler et svar til points
vh
Avatar billede hmortensen Nybegynder
06. oktober 2004 - 11:08 #16
Det var så lidt

Ville lige være sikker på det virkede :)
Avatar billede Slettet bruger
06. oktober 2004 - 11:10 #17
Men jeg mangler lige en lille ting. Så den laver jeg et nyt spm. om - hvis du så vil svare på det.
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