# checkbox auswerten und per email versenden



## chekov (16. Januar 2012)

hallo leute,

ich habe 9 tabellen mit jeweils einer checkbox
und am ende einen "absenden" button

nun möchte ich eine oder mehrere checkboxen aktivieren und auf den button klicken um ne mail zu verschicken mit dem inhalt: name der tabelle und 1 das die checkbox aktiviert wurde.

nur hab ich keine ahnung wie ich das mit php machen kann...

bin ziemlich neu auf dem gebiet und versuchs mir selbst beizubringen..

hab schon bisschen rumprobiert aber so richtig funktionieren wills nicht

hier mein php code:


```
<?php

if (isset($_POST['button'])) // wenn das formular abgesendet wurde...
{  
    $err = array();  // array worin fehler gespeichert werden
    
    if (!isset($_POST['mark']))  // wenn keine checkbox selektiert wurde...
    {  
        array_push($err, "Bitte mindestens eine Checkbox auswählen!");    
    } 
    else 
    {   
        $selektiert = ""; // anlegen des strings der nach der nachfolgenden schleife die ausgewählten values/werte enthält
        
        // $_POST['mark'] ist ein array, daher schleife(foreach)
        foreach ($_POST['mark'] as $checkbox) // für jeden wert im array wird folgendes gemacht...
        {  
            $selektiert .= $checkbox . ", "; // der wert wird dem string $selektiert hinzugefügt
        }    
        
        // mail absenden
        $empfaenger = "beispiel@gmx.de"; 
        $betreff = "Feedback";
        $mailtext = $sender hat folgende Angebote angekreuzt: $selektiert;
        
        if (!mail($empfaenger, $betreff, $mailtext))  // wenn mail nicht versendet wurde...
        {  
            array_push($err, "e-Mail konnte nicht versendet werden!"); 
        }
        else(mail($empfaenger, $betreff, $mailtext))  // wenn mail gesendet wurde... 
        { 
          echo ("Mail wurde versendet!");
        } 
    }
    
    // fehler array ausgeben wenn fehler vorhanden
    if (!empty($err))  // wenn array nicht leer ist...
    {  
        foreach ($err as $report) // in einer schleife die fehlermeldungen ausgeben...
        {  
            echo ($report);
        }                                   
    }     
}                       

?>
```


----------



## H4ckHunt3r (16. Januar 2012)

Hi,
die folgende Zeile ist falsch!

```
$mailtext = $sender hat folgende Angebote angekreuzt: $selektiert;
```
Text wird in Anführungszeichen geschrieben. 


```
$mailtext = $sender." hat folgende Angebote angekreuzt: ".$selektiert;
```


----------



## chekov (17. Januar 2012)

sonnst noch irgendetwas?


----------



## Maniac (17. Januar 2012)

Wenn du uns verrätst was denn GENAU nicht funktioniert, können wir dir besser helfen.
Irgendwelche Debug-Infos? Test-Ausgaben gemacht?


Der 2. Aufruf der Mail ist unnötig, hier wird die Mail 2x versendet

```
// 1. mal
if (!mail($empfaenger, $betreff, $mailtext))  // wenn mail nicht versendet wurde...
        {  
            array_push($err, "e-Mail konnte nicht versendet werden!"); 
        }
// 2.mal
        else(mail($empfaenger, $betreff, $mailtext))  // wenn mail gesendet wurde... 
        { 
          echo ("Mail wurde versendet!");
        }
```


----------



## chekov (17. Januar 2012)

ja wenn ich den button betätige dann kommt einfach ne leere seite.
ne mail wird auch ned verschickt...


```
$mail_ok = mail($empfaenger, $betreff, $mailtext);

        if (!$mail_ok) 
        {   
            // kein mail versendet...
            array_push($err, "e-Mail konnte nicht versendet werden!");
        } 
        else 
        {  
            // mail gesendet...  
            echo ("Mail wurde versendet!"); 
        }
```

habs jetzt so gemacht mit den mails geht das auch?


----------



## Maniac (17. Januar 2012)

chekov hat gesagt.:


> ja wenn ich den button betätige dann kommt einfach ne leere seite.
> ne mail wird auch ned verschickt...
> 
> 
> ...



Genau, so ist es richtig.
Wenn du eine leere Seite erhältst, deutet das auf einen Fehler hin.
Schreibe am Anfang deines Scriptes:


```
error_reporting(E_ALL);
ini_set('display_errors', 1);
```

Dann sollten auch die Fehler angezeigt erden.


Dieses hier:

```
foreach ($_POST['mark'] as $checkbox) // für jeden wert im array wird folgendes gemacht...
        {  
            $selektiert .= $checkbox . ", "; // der wert wird dem string $selektiert hinzugefügt
        }
```
könntest du auch verkürzen:


```
$selektiert = implode(',', $_POST['mark']);
```


----------



## chekov (17. Januar 2012)

jetzt wird angezeigt wenn ich den button drücke: "Fehler: Datei nicht gefunden".


----------



## Maniac (17. Januar 2012)

Zeig mal bitte dein Formular und den ganzen Code.


----------



## chekov (17. Januar 2012)

php code


```
^<?php

error_reporting(E_ALL);  // alle fehler melden
ini_set('display_errors', 1);  // fehler ausgeben 

if (isset($_POST['button'])) // wenn das formular abgesendet wurde...
{  
    $err = array();  // array worin fehler gespeichert werden
    
    if (!isset($_POST['mark']))  // wenn keine checkbox selektiert wurde...
    {  
        array_push($err, "Bitte mindestens eine Checkbox auswählen!");    
    } 
    else 
    {   
        $selektiert = ""; // anlegen des strings der nach der nachfolgenden schleife die ausgewählten values/werte enthält
        
        // $_POST['mark'] ist ein array, daher schleife(foreach)
        //foreach ($_POST['mark'] as $checkbox) // für jeden wert im array wird folgendes gemacht...
        //{  
            //$selektiert .= $checkbox . ", "; // der wert wird dem string $selektiert hinzugefügt
        //}
        $selektiert = implode(',', $_POST['mark']);
             
        // mail absenden
        $empfaenger = "beispiel@gmx.de"; 
        $betreff = "Feedback";
        $mailtext = $sender. "hat folgende Angebote angekreuzt:" .$selektiert;
        $mail_ok = mail($empfaenger, $betreff, $mailtext);

        if (!$mail_ok) 
        {   
            // kein mail versendet...
            array_push($err, "e-Mail konnte nicht versendet werden!");
        } 
        else 
        {  
            // mail gesendet...  
            echo ("Mail wurde versendet!"); 
        }  
    }
    
    // fehler array ausgeben wenn fehler vorhanden
    if (!empty($err))  // wenn array nicht leer ist...
    {  
        foreach ($err as $report) // in einer schleife die fehlermeldungen ausgeben...
        {  
            echo ($report);
        }                                   
    }     
}                       

?>
```


html code


```
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title></title>
  </head>
  <body>
  
  <!-- Beginn Tabellen-->
  <table cellspacing="10" cellpadding="20">
   
  <tr>
<td>
 <!--Tabelle1-->
 <div align="right">
 <table border="1" rules="groups" bordercolor="black">
  <thead>
  <tr>
  <td align="center"><input type="checkbox" name="mark[]" value="beispiel1"><i><h1>Beispiel</h1></i></td>
  </tr>
  </thead>
  <tfoot>
  <tr>
  <td>Beispieltext</td>
  </tr>
  </table>
  </td>
  
  
<td>
 <!--Tabelle2-->
 <div align="right">
 <table border="1" rules="groups" bordercolor="black">
  <thead>
  <tr>
  <td align="center"><input type="checkbox" name="mark[]" value="beispiel2"><i><h1>Beispiel</h1></i></td>
  </tr>
  </thead>
  <tfoot>
  <tr>
  <td>Beispieltext</td>
  </tr>
  </table>
  </td>
  
  
<td>
 <!--Tabelle3-->
 <div align="right">
 <table border="1" rules="groups" bordercolor="black">
  <thead>
  <tr>
  <td align="center"><input type="checkbox" name="mark[]" value="beispiel3"><i><h1>Beispiel</h1></i></td>
  </tr>
  </thead>
  <tfoot>
  <tr>
  <td>Beispieltext</td>
  </tr>
  </table>
  </td>
 </tr> 
 
 
 
 <tr>
<td>
 <!--Tabelle4-->
 <div align="right">
 <table border="1" rules="groups" bordercolor="black">
  <thead>
  <tr>
  <td align="center"><input type="checkbox" name="mark[]" value="beispiel4"><i><h1>Beispiel</h1></i></td>
  </tr>
  </thead>
  <tfoot>
  <tr>
  <td>Beispieltext</td>
  </tr>
  </table>
  </td>
  
  
<td>
 <!--Tabelle5-->
 <div align="right">
 <table border="1" rules="groups" bordercolor="black">
  <thead>
  <tr>
  <td align="center"><input type="checkbox" name="mark[]" value="beispiel5"><i><h1>Beispiel</h1></i></td>
  </tr>
  </thead>
  <tfoot>
  <tr>
  <td>Beispieltext</td>
  </tr>
  </table>
</td>  
  
<td>
 <!--Tabelle6-->
 <div align="right">
 <table border="1" rules="groups" bordercolor="black">
  <thead>
  <tr>
  <td align="center"><input type="checkbox" name="mark[]" value="beispiel6"><i><h1>Beispiel</h1></i></td>
  </tr>
  </thead>
  <tfoot>
  <tr>
  <td>Beispieltext</td>
  </tr>
  </table>
  </td>
 </tr> 
 
 <tr> 
 <td>
 <!--Tabelle7-->
 <div align="right">
 <table border="1" rules="groups" bordercolor="black">
  <thead>
  <tr>
  <td align="center"><input type="checkbox" name="mark[]" value="beispiel7"><i><h1>Beispiel</h1></i></td>
  </tr>
  </thead>
  <tfoot>
  <tr>
  <td>Beispieltext</td>
  </tr>
  </table>
  </td>
  
  
<td>
 <!--Tabelle8-->
 <div align="right">
 <table border="1" rules="groups" bordercolor="black">
  <thead>
  <tr>
  <td align="center"><input type="checkbox" name="mark[]" value="beispiel8"><i><h1>Beispiel</h1></i></td>
  </tr>
  </thead>
  <tfoot>
  <tr>
  <td>Beispieltext</td>
  </tr>
  </table>
  </td>
  
<td>
 <!--Tabelle9-->
 <div align="right">
 <table border="1" rules="groups" bordercolor="black">
  <thead>
  <tr>
  <td align="center"><input type="checkbox" name="mark[]" value="beispiel9"><i><h1>Beispiel</h1></i></td>
  </tr>
  </thead>
  <tfoot>
  <tr>
  <td>Beispieltext</td>
  </tr>
  </table>
  </td>
  </tr>

 

<form action="newsletter_10.01.2012.php" method=post>
<input type=submit name=button value="Feedback abschicken"/>


</table>
  </body>
</html>
```

ich hab den ihnhalt der tabellen mal rausgenommen damits bisschen übersichtlicher ist!


----------



## Maniac (17. Januar 2012)

Und wo is das Formular? Du hast nur die Input-Felder hier gezeigt.
Wichtig ist der <form ....> Tag.


----------



## chekov (17. Januar 2012)

hab ich doch


```
<form action="newsletter_10.01.2012.php" method=post>
<input type=submit name=button value="Feedback abschicken"/>
```


----------



## Maniac (17. Januar 2012)

Den hab ich nicht gesehen weil ich dachte du hast die korrekte HTML-Syntax.

existiert denn die Datei und ist selbem Verzeichnis wie das Formular?: newsletter_10.01.2012.php

Wie ein Formular auszusehen hat weist du anscheinend nicht...

Die Input-Felder müssen innerhalb des Form-Tags gesetzt werden:


```
<form action="test.php" method="post">

<input type="checkbox" name="mark[]" value="1" />

<input type="checkbox" name="mark[]" value="2" />

<input type="checkbox" name="mark[]" value="3" />

<input type="submit" name="button" value="absenden" />

</form>
```


----------



## chekov (17. Januar 2012)

ich hab jetzt alles geändert aber geht noch nich..


----------



## Maniac (17. Januar 2012)

chekov hat gesagt.:


> ich hab jetzt alles geändert aber geht noch nich..



Mit dieser Aussage kann leider kein Mensch was anfangen. kompletten Code zeigen, genaue Fehlerbeschreibung....


----------



## chekov (17. Januar 2012)

ich habe das form jetzt über die input felder!
sonnst hat sich am code nix geändert.

wenn ich auf den button klicken kommt nur ne weiße seite...


----------



## Maniac (17. Januar 2012)

Und warum postest du dann nicht den Code damit man nachsehen kann?

Ausserdem ´hast du eine fRage von mir nicht beantwortet:



> existiert denn die Datei und ist selbem Verzeichnis wie das Formular?: newsletter_10.01.2012.php



Und wenn nur eine weiße Seite kommt hab ich dir vorhin schon geschrieben...


----------



## chekov (17. Januar 2012)

ja ist im selben verzeichnis


```
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title></title>
  </head>
  <body>
  
  <form action="newsletter_10.01.2012.php" method=post>
  
  <!-- Beginn Tabellen-->
  <table cellspacing="10" cellpadding="20">
   
  <tr>
<td>
 <!--Tabelle1-->
 <div align="right">
 <table border="1" rules="groups" bordercolor="black">
  <thead>
  <tr>
  <td align="center"><input type="checkbox" name="mark[]" value="beispiel1"><i><h1>Beispiel</h1></i></td>
  </tr>
  </thead>
  <tfoot>
  <tr>
  <td>Beispieltext</td>
  </tr>
  </table>
  </td>
  
  
<td>
 <!--Tabelle2-->
 <div align="right">
 <table border="1" rules="groups" bordercolor="black">
  <thead>
  <tr>
  <td align="center"><input type="checkbox" name="mark[]" value="beispiel2"><i><h1>Beispiel</h1></i></td>
  </tr>
  </thead>
  <tfoot>
  <tr>
  <td>Beispieltext</td>
  </tr>
  </table>
  </td>
  
  
<td>
 <!--Tabelle3-->
 <div align="right">
 <table border="1" rules="groups" bordercolor="black">
  <thead>
  <tr>
  <td align="center"><input type="checkbox" name="mark[]" value="beispiel3"><i><h1>Beispiel</h1></i></td>
  </tr>
  </thead>
  <tfoot>
  <tr>
  <td>Beispieltext</td>
  </tr>
  </table>
  </td>
 </tr> 
 
 
 
 <tr>
<td>
 <!--Tabelle4-->
 <div align="right">
 <table border="1" rules="groups" bordercolor="black">
  <thead>
  <tr>
  <td align="center"><input type="checkbox" name="mark[]" value="beispiel4"><i><h1>Beispiel</h1></i></td>
  </tr>
  </thead>
  <tfoot>
  <tr>
  <td>Beispieltext</td>
  </tr>
  </table>
  </td>
  
  
<td>
 <!--Tabelle5-->
 <div align="right">
 <table border="1" rules="groups" bordercolor="black">
  <thead>
  <tr>
  <td align="center"><input type="checkbox" name="mark[]" value="beispiel5"><i><h1>Beispiel</h1></i></td>
  </tr>
  </thead>
  <tfoot>
  <tr>
  <td>Beispieltext</td>
  </tr>
  </table>
</td>  
  
<td>
 <!--Tabelle6-->
 <div align="right">
 <table border="1" rules="groups" bordercolor="black">
  <thead>
  <tr>
  <td align="center"><input type="checkbox" name="mark[]" value="beispiel6"><i><h1>Beispiel</h1></i></td>
  </tr>
  </thead>
  <tfoot>
  <tr>
  <td>Beispieltext</td>
  </tr>
  </table>
  </td>
 </tr> 
 
 <tr> 
 <td>
 <!--Tabelle7-->
 <div align="right">
 <table border="1" rules="groups" bordercolor="black">
  <thead>
  <tr>
  <td align="center"><input type="checkbox" name="mark[]" value="beispiel7"><i><h1>Beispiel</h1></i></td>
  </tr>
  </thead>
  <tfoot>
  <tr>
  <td>Beispieltext</td>
  </tr>
  </table>
  </td>
  
  
<td>
 <!--Tabelle8-->
 <div align="right">
 <table border="1" rules="groups" bordercolor="black">
  <thead>
  <tr>
  <td align="center"><input type="checkbox" name="mark[]" value="beispiel8"><i><h1>Beispiel</h1></i></td>
  </tr>
  </thead>
  <tfoot>
  <tr>
  <td>Beispieltext</td>
  </tr>
  </table>
  </td>
  
<td>
 <!--Tabelle9-->
 <div align="right">
 <table border="1" rules="groups" bordercolor="black">
  <thead>
  <tr>
  <td align="center"><input type="checkbox" name="mark[]" value="beispiel9"><i><h1>Beispiel</h1></i></td>
  </tr>
  </thead>
  <tfoot>
  <tr>
  <td>Beispieltext</td>
  </tr>
  </table>
  </td>
  </tr>

 


<input type=submit name=button value="Feedback abschicken"/>


</table>
</form>
  </body>
</html>
```



```
<?php

error_reporting(E_ALL);  // alle fehler melden
ini_set('display_errors', 1);  // fehler ausgeben 

if (isset($_POST['button'])) // wenn das formular abgesendet wurde...
{  
    $err = array();  // array worin fehler gespeichert werden
    
    if (!isset($_POST['mark']))  // wenn keine checkbox selektiert wurde...
    {  
        array_push($err, "Bitte mindestens eine Checkbox auswählen!");    
    } 
    else 
    {   
        $selektiert = ""; // anlegen des strings der nach der nachfolgenden schleife die ausgewählten values/werte enthält
        
        // $_POST['mark'] ist ein array, daher schleife(foreach)
        //foreach ($_POST['mark'] as $checkbox) // für jeden wert im array wird folgendes gemacht...
        //{  
            //$selektiert .= $checkbox . ", "; // der wert wird dem string $selektiert hinzugefügt
        //}
        $selektiert = implode(',', $_POST['mark']);
             
        // mail absenden
        $empfaenger = "waeschta@gmx.de"; 
        $betreff = "Feedback";
        $mailtext = $sender. "hat folgende Angebote angekreuzt:" .$selektiert;
        $mail_ok = mail($empfaenger, $betreff, $mailtext);

        if (!$mail_ok) 
        {   
            // kein mail versendet...
            array_push($err, "e-Mail konnte nicht versendet werden!");
        } 
        else 
        {  
            // mail gesendet...  
            echo ("Mail wurde versendet!"); 
        }  
    }
    
    // fehler array ausgeben wenn fehler vorhanden
    if (!empty($err))  // wenn array nicht leer ist...
    {  
        foreach ($err as $report) // in einer schleife die fehlermeldungen ausgeben...
        {  
            echo ($report);
        }                                   
    }     
}                       

?>
```


----------



## chekov (18. Januar 2012)

```
error_reporting(E_ALL); 
ini_set('display_errors', 1);
```

des hab ich ja schon drine in meim .php
aber er zeigt keinen fehler an..


----------

