derolli: Checkboxen

Hallo zusammen,

habe ein Problem. Habe ein Kontaktformular  erstellt, welches in der "Kontaktformularauswertung.php" ausgewertet wird. Dies klappte so lange,  bis ich die radio Button durch Checkboxen ersetzen wollte.
Die Ceckboxauswertung klappt ne:

hier das Formularscript:

<td valign="top">* Informationen zu: </td>
  <td><p>
    <label><input name="Informationen zu" type="checkbox" id="Informationen zu" value="Hoch- und Ausbau">
      Hoch- und Ausbau</label>
    <br>
    <label><input name="Informationen zu" type="checkbox" id="Informationen zu" value="Putz- und Trockenbau">
      Putz- und Trockenbau</label>
    <br>
    <label>
      <input name="Informationen zu" type="checkbox"  id="Informationen zu" value="Baureparaturen">
      Baureparaturen</label>
    <br>
    <label>
      <input name="Informationen zu" type="checkbox" id="Informationen zu" value="Geb&auml;udesanierung">
      Gebäudesanierung</label>
    <br>
    <label>
      <input name="Informationen zu" type="checkbox" id="Informationen zu" value="Terrassensanierung">
      Terrassensanierung</label>
    <br>
    <label>
      <input name="Informationen zu" type="checkbox" id="Informationen zu" value="Sonstiges">
      Sonstiges</label>
    <br>
  </p></td>

und hier das php Script:

<html>
<head>
<title>Kontakt zum Handwerksbetriebes Norbert
Neitsch - Hochbau, Ausbau, Putzbau, Trockenbau, Baureparaturen, Terrassensanierung</title>
<link rel="shortcut icon" href="Bilder/Neitsch_Logo.ico">
<link rel=stylesheet type="text/css" href="design.css">

<style type="text/css">
</style>

</head>
<body background="Bilder/Homepagehintergrund.jpg" style="background-image:url('Bilder/Homepagehintergrund.jpg')">
<?php

$Empfaenger = "E-Mail Adresse";

if($_REQUEST['Send'])
{
   if(empty($_REQUEST['Name']) || empty($_REQUEST['Telefon']) || empty($_REQUEST['Email']) || empty($_REQUEST['Nachricht']))
   {
      echo"Bitte gehen Sie <a href="javascript:history.back();"><b>>> zurück <<</b></a> und füllen Sie alle Pflichtfelder aus!";
   }
   else
   {
      $Mailnachricht = "Sie haben folgende Nachricht erhalten: \n\n";
      while(list($Formularfeld, $Wert)=each($_REQUEST))
      {
         if($Formularfeld!="Send")
         {
            $Mailnachricht .= $Formularfeld.": ".$Wert."\n";
         }
      }
      $Mailnachricht .= "\nDatum/Zeit: ";
      $Mailnachricht .= date("d.m.Y H:i:s");
      $Mailbetreff = "Kontakt: ";
      $Mailbetreff .= $_REQUEST['Betreff'];
      mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: ".$_REQUEST['Email']);
      echo"Vielen Dank für Ihre E-Mail.
<br>
<br>
Um weiter unsere Homepage zu besuchen, klicken Sie bitte <a href="Kontakt.html"><b>>> hier <<</b></a>.";
   }
}
else
{
   echo"Es ist ein Fehler aufgetreten. Bitte klicken Sie <a href="Kontakt.html"><b>>> hier <<</b></a>, um zum Kontaktformular zurückzukehren.";
}

?>
</body>
</html>

Ich habe schon einiges Probiet um in dieses Script die Checkboxauswertung einzubinden, jedoch erfolglos. Ich hoffe ihr könnt mir helfen.

Gruss olli

  1. hi,

    <input name="Informationen zu" type="checkbox" id="Informationen zu" value="Hoch- und Ausbau">

    Der Wert des ID-Attributes ist auf jeden Fall mal ungültig, und der des name-Attributes wenn schon nicht dieses - bin gerade zu faul, in der Spezifikation nachzuschauen - so doch zumindest relativ ungünstig für eine spätere serverseitige Auswertung.

    Abgesehen davon ist in deinem Code nicht mal eine Stelle zu entdecken, an der du einen Parameter mit dem Namen "Informationen zu" auszuwerten versuchen würdest.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. hi,

      das ist richtig. Ich habe den Code mit der Auswertung erst mal komplett rausgenommen um keinen sinnlosen Müll reinzustellen.

      Gruss Olli

  2. Hello,

    die checkboxen heißen alle genauso. Ob sie ein Leezeichen im Namen haben dürfen, geht mir momentan auch ab. Da halte ich es wie wahsaga. Ich bin jetzt zu faul, nachzulesen.

    Ich selber würde nämlich keines benutzen!

    Wenn der client alle Name-Value-Pärchen überträgt, dann werden am Server daraus die Variablen für PHP generiert.

    $_POST[--name--] = --value--;
      $_POST[--name--] = --value--;
      $_POST[--name--] = --value--;
      $_POST[--name--] = --value--;
      $_POST[--name--] = --value--;
      $_POST[--name--] = --value--;
      $_POST[--name--] = --value--;

    Was glaubst Du, was nachher in $_POST[--name--] drinsteht?

    Du kannst PHP aber auch mitteilen, dass es nicht _ein_einziges_ Element für die Check-Boxen anlegen soll, sondern ein Array con Checkboxen.

    <input name="informationen[]" type="checkbox"  id="Informationen zu" value="Baureparaturen">

    daraus entsteht dann:

    $_POST['informationen'][] = '--value--';
      $_POST['informationen'][] = '--value--';
      $_POST['informationen'][] = '--value--';
      $_POST['informationen'][] = '--value--';
      $_POST['informationen'][] = '--value--';
      $_POST['informationen'][] = '--value--';
      $_POST['informationen'][] = '--value--';

    Und das inspiriert PHP dazu, jeweils ein Array-Element hinzuzufügen.

    Besser wäre es aber, wenn man es gleich so macht:

    <input name="informationen[1]" type="checkbox"  id="Informationen01" value="Baureparaturen">
    <input name="Informationen[2]" type="checkbox"  id="Informationen02" value="Hoch- und Ausbau">
    <input name="Informationen[3]" type="checkbox"  id="Informationen03" value="PHP im Bauwesen">

    Dann legt PHP gleich die passenden Indexe an.
    Das ist besonders dann wichtig, wenn man später feststellen muss, welche Checkbox NICHT angehakt wurde. Das ist hier sicher unerheblich, in anderen Fällen aber relevant.
    Wie sollte man sonst einen "angekreuzten" Datensatz wieder "entmarkieren"?

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

    1. Hallo Tom,

      vielen Dank für deine schnelle Antwort.

      So ähnlich habe ich es auch schon versucht. Selbst mit unterschiedlichen Namen funktioniert es nicht wirklich.

      es hängt an der Auswertung der Checkboxen in der "Kontaktformularauwertung.php".

      Es soll ja so sein, dass man eine oder mehrere Checkboxen aktivieren kann (sonst würden ja Checkboxen aich kein Sinn machen), aber er soll eine Fehlermeldung kommen wenn der Kd kein Kästchen angehakt hat.

      Gruss Olli

    2. Hallo Tom,

      ich bin es nochmal. Habe es jetz nochmal getestetet, leider hab ich immer noch das Problem dass die php das nicht korrekt auswertet:

      Name: xxx
      Firma:
      Straße:
      PLZ,Ort:
      Telefon: xxx
      Fax:
      Email: xx
      Informationen: Array \<--- WARUM???
      Bemerkung_zu_Sonstiges:  \\<-- das soll ausgeblendet werden wenn
                                        sonstiges nicht angehakt ist
      Nachricht: xxxx

      Datum/Zeit: 13.05.2007 22:40:00

      1. Hello Olli,

        ich kann da im Moment leider nicht folgen. ;-)

        Was soll von wem wann ausgeblendet werden?
        Eine "Auswertung" kann ich auch nicht finden bisher.

        Auf Dein Mail-Formular bin ich auch noch nicht eingegangen.
        Das ist mMn noch noch extrem diskussionswürdig.
        Nimm es bitte aus dem netz, wenn Du nicht eines Tages als Mitstörer oder sogar als (Mit-)"Urheber" am Spamaufkommen verhaftet werden willst.

        Die juristischen Fachtermini weiß ich leider nicht, abe dass Dein Script gemeingefährlich werden kann, wenn der Richtige[tm] es aufspürt. Und das ist nicht unwahrscheinlich.

        Harzliche Grüße vom Berg
        http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau

        1. Hallo tom,

          wie kann ich das denn verstehen. Das Script habe ich selber geschrieben, Nix Klau oder so. Es funktioniert ja so wie es war auch fehlerfrei.

          Nun möchte ich dies aber auf den Wunsch eines Bekannten erweitern und Checkboxen einbinden.
          Die auswertun diesbezüglich klappt aber leider nicht.
          Aber ist auch egal....

          Wenn du es für angemessen hälst, nimm meinen Beitrag hier hgern raus...

          Gruss oliver

          1. Hello,

            wie kann ich das denn verstehen. Das Script habe ich selber geschrieben, Nix Klau oder so. Es funktioniert ja so wie es war auch fehlerfrei.

            $Mailbetreff .= $_REQUEST['Betreff'];
                  mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: ".$_REQUEST['Email']);

            Diese beiden Zeilen besagen, dass über $_REQUEST['Betreff'] alle möglichen Daten in mail() injeziert werden können, also auch ein eigenen Text, eine Empfängerliste usw.

            Du wirst Damit also zum potentiellen Verteiler für Spam-Mails

            Harzliche Grüße vom Berg
            http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau