mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Mi 08.10.2008 07:01 Benutzername: Passwort: Auto-Login

Thema: [php] checkbox vom 21.02.2008

Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [php] checkbox
Seite: Zurück  1, 2, 3  Weiter
Autor Nachricht
escaPe
Threadersteller

Dabei seit: 10.09.2007
Ort: Bonn
Alter: 22
Geschlecht: Männlich
Verfasst Do 21.02.2008 15:25
Titel

Antworten mit Zitat Zum Seitenanfang

test.php5

Code:
<?php

include 'test.class.php5.inc';

try {
   $fpeForm = new fpeForm;
   $fpeForm->sendPerMail('mail@irgendwohin.de');

   echo $fpeForm->htmlOutput();
} catch(Exception $e) {
   echo '<div style="border: 2px solid red">';
   echo "Folgender Ausnahmefehler ist aufgetreten: <br/><b>". $e->getMessage()."</b>";
   echo "<br/>in Datei {$e->getFile()}:{$e->getLine()}";
   echo '</div>';
}

?>


und test.class.php5.inc

Code:
<?php

/**
 * Anwendung:
 *  1. Skripte ins DocRoot der Domain legen
 *  2. action im <form/>-Tag auf das skript ändern
 *  3. hiddden-input hinzufügen: name=_vti_form mit Pfad
 *
 * @author Alexander Weiher
 *
 */




class fpeForm {
   // die restliche FTP-Config
   private $fpeConfig = array();
   private $fpeConfig2 = array();
   private $form = false;
   private $web_path = false;
   private $storageFile = true;
   private $webbotInsertHere = '<!--webbot BOT="FormInsertHere" -->';
   private $labelFields = true;
   private $reverseChronology = false;



   const CSV_COMMA = 1;
   const CSV_TABSTOP = 2;
   const CSV_SPACE = 3;

   function __construct() {
      $this->loadConfig();
      $this->storageFile = $_SERVER['DOCUMENT_ROOT'] .'/'.dirname($this->form).'/'. $this->fpeConfig['u-file'];
      if( !is_file($this->storageFile) || !is_writeable($this->storageFile)) {
         throw new Exception("StorageFile {$this->storageFile} existiert nicht (mehr) oder ist nicht beschreibbar. ");
      }

      $this->labelFields = $this->fpeConfig['s-label-fields'];
      $this->reverseChronology = $this->fpeConfig['b-reverse-chronology'];
      $this->datum = $this->fpeConfig['s-date-format'];
       $this->uhrzeit = $this->fpeConfig['s-time-format'];

      switch($this->fpeConfig['s-format']) {
         case 'HTML/BR':
            // html speichern
            $this->saveAsHtmlBr();
            break;
         case 'HTML/DL':
            // html deflist
            $this->saveAsHtmlDl();
            break;
         case 'HTML/UL':
            // html list
            $this->saveAsHtmlUl();
            break;
         case 'HTML/PRE':
            // html preformat text
            $this->saveAsHtmlPre();
            break;
         case 'TEXT/PRE':
            $this->saveAsTextPre();
            break;
         case 'TEXT/TSV':
            $this->saveAsCSV(self::CSV_TABSTOP);
            break;
         case 'TEXT/SSV':
            $this->saveAsCSV(self::CSV_SPACE);
            break;
         case 'TEXT/CSV':
            $this->saveAsCSV(self::CSV_COMMA);
            break;
         default:
            throw new Exception("unknown format: {$this->fpeConfig['s-format']}");
      }

      if($this->fpeConfig2['u-file']) {
         $this->storageFile = $_SERVER['DOCUMENT_ROOT'] .'/'.dirname($this->form).'/'. $this->fpeConfig2['u-file'];
         if( !is_file($this->storageFile) || !is_writeable($this->storageFile)) {
            throw new Exception("StorageFile {$this->storageFile} existiert nicht (mehr) oder ist nicht beschreibbar. ");
         }

         $this->labelFields = $this->fpeConfig2['s-label-fields'];
         $this->reverseChronology = $this->fpeConfig2['b-reverse-chronology'];
         $this->datum = $this->fpeConfig2['s-date-format'];
          $this->uhrzeit = $this->fpeConfig2['s-time-format'];

         switch($this->fpeConfig2['s-format']) {
            case 'HTML/BR':
               // html speichern
               $this->saveAsHtmlBr();
               break;
            case 'HTML/DL':
               // html deflist
               $this->saveAsHtmlDl();
               break;
            case 'HTML/UL':
               // html list
               $this->saveAsHtmlUl();
               break;
            case 'HTML/PRE':
               // html preformat text
               $this->saveAsHtmlPre();
               break;
            case 'TEXT/PRE':
               $this->saveAsTextPre();
               break;
            case 'TEXT/TSV':
               $this->saveAsCSV(self::CSV_TABSTOP);
               break;
            case 'TEXT/SSV':
               $this->saveAsCSV(self::CSV_SPACE);
               break;
            case 'TEXT/CSV':
               $this->saveAsCSV(self::CSV_COMMA);
               break;
            default:
               throw new Exception("unknown format: {$this->fpeConfig2['s-format']}");
         }
      }
   }


   public function sendPerMail($mailAdress) {
      $mailText = "*******************************************************************************\n\n";

                 foreach($_REQUEST as $key => $val) {
         $mailText .= "  * {$key}: {$val}\n";
      }
      mail($mailAdress, 'MailBetreffblablub' , $mailText);
   }

   public function htmlOutput() {
      $output = '<h1>Formularbest&auml;tigung</h1>';
      $output .= '<p>Vielen Dank f&uuml;r das Einsenden der folgenden Informationen:</p>';
      $output .= '<p>';
      foreach($_REQUEST as $key => $val) {
         $output .= "<b>{$key}</b> {$val} <br/>";
      }
      $output .= '</p>';
      $output .= "<p><a href='/{$this->form}'>Zur&uuml;ck zum Formular</a></p>";

      $full_path = $_SERVER['DOCUMENT_ROOT'] .'/'. $this->form;
      if( is_readable($full_path)) {
         $results = array();
         //$result = preg_replace( '/<form([^form]*?)<\/form>/s', $output, file_get_contents($full_path));
         $result = preg_replace('/<!--(.*?)-->/s', '', file_get_contents($full_path));

         $result = preg_replace( '%<(form).*<\/form>%is', $output, $result);
         return $result;
      } else {
         return $output;
      }
   }

   private function loadConfig() {
      // ja, der Referer ist unzuverlässig .. aber wir brauchen trotzdem den dateinamen der letzen Seite ..
      #$referer_form =  parse_url($_SERVER['HTTP REFERER'], PHP_URL_PATH);
      $this->form = $_REQUEST['_vti_form'];
      $this->parseForm();
      unset($_REQUEST['VTI-GROUP']);
      unset($_REQUEST['_vti_form']);
   }

   private function saveAsCSV($divider) {
      switch($divider) {
         case self::CSV_COMMA:
            $divider = ',';
            break;
         case self::CSV_SPACE:
            $divider = ' ';
            break;
         case self::CSV_TABSTOP:
            $divider = "\t";
            break;
         default:
            throw new Execption('unknown divider defined');
      }

      $rvals = array();
      foreach($_REQUEST as $rkey => $rval) {
         $rvals[$rkey] = '"'.$rval.'"';
      }

                 $csvString = implode($divider, $rvals)."\n";

      $csvHandle = fopen($this->storageFile, 'a');
      if(!$csvHandle) {
         throw new Exception("Konnte Datei '{$this->storageFile}' nicht zum schreiben &ouml;ffnen");
      }

      fputs($csvHandle,$csvString);
      fclose($csvHandle);
   }

   private function saveAsHtmlBr() {
         $values = '<p>';
         foreach($_REQUEST as $rkey => $rval) {
            $rkey = htmlentities($rkey);
            $rval = htmlentities($rval);
            if($this->labelFields == 'FALSE') {
               $values .= "<b></b>{$rval}<br>";
            } else {
               $values .= "<b>{$rkey}</b>{$rval}<br>";
            }
         }
         $values .= '</p><hr>';

         if($this->reverseChronology == 'TRUE') {
            // umgekehrte Reihenfolge ..
            $output = $this->webbotInsertHere . $values;
         } else {
            $output = $values . $this->webbotInsertHere;
         }

         $this->_replaceWebbotTag($output);
   }

   private function saveAsHtmlDl() {
         $values = '<hr><dl>';
         foreach($_REQUEST as $rkey => $rval) {
            $rkey = htmlentities($rkey);
            $rval = htmlentities($rval);
            if($this->labelFields == 'FALSE') {
               $values .= "<dt><b></b></dt><dd>{$rval}</dd>";
            } else {
               $values .= "<dt><b>{$rkey}</b></dt><dd>{$rval}</dd>";
            }
         }
         $values .= '</dl>';

         if($this->reverseChronology == 'TRUE') {
            // umgekehrte Reihenfolge ..
            $output = $this->webbotInsertHere . $values;
         } else {
            $output = $values . $this->webbotInsertHere;
         }

         $this->_replaceWebbotTag($output);
   }

   private function saveAsHtmlUl() {
         $values = '<hr><ul>';
         foreach($_REQUEST as $rkey => $rval) {
            $rkey = htmlentities($rkey);
            $rval = htmlentities($rval);
            if($this->labelFields == 'FALSE') {
               $values .= "<li><b></b>{$rval}</li>";
            } else {
               $values .= "<li><b>{$rkey}</b>{$rval}</li>";
            }
         }
         $values .= '</ul>';

         if($this->reverseChronology == 'TRUE') {
            // umgekehrte Reihenfolge ..
            $output = $this->webbotInsertHere . $values;
         } else {
            $output = $values . $this->webbotInsertHere;
         }

         $this->_replaceWebbotTag($output);
   }

   private function saveAsHtmlPre() {
         $values = "<hr><pre>";
         foreach($_REQUEST as $rkey => $rval) {
            $rkey = htmlentities($rkey);
            $rval = htmlentities($rval);
            if($this->labelFields == 'FALSE') {
               $values .= "{$rval}\n";
            } else {
               $values .= "{$rkey}: {$rval}\n";
            }
         }
         $values .= "</pre>";

         if($this->reverseChronology == 'TRUE') {
            // umgekehrte Reihenfolge ..
            $output = $this->webbotInsertHere . $values;
         } else {
            $output = $values . $this->webbotInsertHere;
         }

         $this->_replaceWebbotTag($output);
   }

   private function saveAsTextPre() {
         $values = str_pad('*', 79)."\n";
         foreach($_REQUEST as $rkey => $rval) {
            if($this->labelFields == 'FALSE') {
               $values .= "{$rval}\n";
            } else {
               $values .= "{$rkey}: {$rval}\n";
            }
         }

         $this->_replaceWebbotTag( $values . $this->webbotInsertHere);
   }


   private function _replaceWebbotTag($output) {
      $content = file_get_contents($this->storageFile);

      $content = str_replace($this->webbotInsertHere, $output, $content);

      file_put_contents($this->storageFile, $content);
   }

   /**
    * parse das Formular im Frontpage-Style *urx*
    *  - alle kommentare ..
    *  - .. die mit webbot anfangen ..
    */
   private function parseForm() {
      $full_path = $_SERVER['DOCUMENT_ROOT'] .'/'. $this->form;
      if( is_readable($full_path)) {
         $results = array();
         $results_count = preg_match_all( '/<!--(.*?)-->/s', file_get_contents($full_path), $results);
         if($results_count) {
            foreach($results[1] as $res) {
               if(substr($res,0,6) == 'webbot') {
                  $options = substr($res,7);
                  foreach(explode(' ', $options) as $tok) {
                     list($key, $value) = explode('=', $tok);
                     $key = strtolower($key);
                     if(array_key_exists($key, $this->fpeConfig)) {
                        $this->fpeConfig2[$key] = substr($value,1,-1);
                     } else {
                        $this->fpeConfig[$key] = substr($value,1,-1);
                     }

                  }
               }
            }
            return true;
         } else {
            throw new Exception("Es wurden keine FPE-Metainformationen in der Formular-datei ({$full_path}) gefunden .. ");
         }
      }

      throw new Exception("Konnte Formular {$full_path} nicht lesen.");
   }

}

?>


um mal licht ins dunkle zu bringen was das alles soll:

Firma hat Jahre lang frontpage mit dazugehörigen extensions benutzt. Server hat diese nun
abgestellt und nun muss ich daraus irgendwie was gescheites in php zusammenbaun..

klappt auch soweit ausser das halt die checkboxen in der .txt datei beim "nicht markiertem"
status keine werte in die txt eintragen, und somit alle nachkommenden Wert um eine, oder bei mehr
checkboxen, mehrer spalten nach vorne rutscht.


Zuletzt bearbeitet von escaPe am Do 21.02.2008 15:30, insgesamt 3-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
escaPe
Threadersteller

Dabei seit: 10.09.2007
Ort: Bonn
Alter: 22
Geschlecht: Männlich
Verfasst Do 21.02.2008 18:22
Titel

Antworten mit Zitat Zum Seitenanfang

kann mir keiner helfen und sagen wo ich diesen codeschnipsel eintragen muss?
vielleicht verlang ich aber auch nur zuviel.. trotzdem danke für die hilfe...

greatz escaPe
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Fido67
Account gelöscht


Ort: -

Verfasst Fr 22.02.2008 09:50
Titel

Antworten mit Zitat Zum Seitenanfang

überleg doch mal was der Code von Pixelpole macht, dann weist du auch wo der hin muss.

Code:
if(!isset($_POST['test'])) { //Wenn die Variable $_Post['test'] keinen Wert hat
    $_POST['test'] = 'NEIN'; // dann ist der Wert der Variablen "NEIN"
}


Das muss natürlich vor der Funktion eingesetzt werden die den Wert der Variablen $_POST['test'] in deine .txt-Datei speichert oder sonst wie ausgibt Lächel
 
escaPe
Threadersteller

Dabei seit: 10.09.2007
Ort: Bonn
Alter: 22
Geschlecht: Männlich
Verfasst Fr 22.02.2008 12:35
Titel

Antworten mit Zitat Zum Seitenanfang

ich würd sagen das der nach dem include in der test.php5 rein müsste
hat aber nicht geklappt. Vielleicht steh ich aber auch nur einfach afu dem Schlauch.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Fido67
Account gelöscht


Ort: -

Verfasst Fr 22.02.2008 12:40
Titel

Antworten mit Zitat Zum Seitenanfang

naja, wenn dann wohl eher davor, sonst können die includierten funktionen ja nicht auf die Variable zugreifen.
 
escaPe
Threadersteller

Dabei seit: 10.09.2007
Ort: Bonn
Alter: 22
Geschlecht: Männlich
Verfasst Fr 22.02.2008 12:57
Titel

Antworten mit Zitat Zum Seitenanfang

klappt leider nicht...
Code:

<?php

if(!isset($_POST['test']))
{
$_POST['test'] = 'NEIN';
};

include 'fpeForm.class.php5.inc';

try {
   $fpeForm = new fpeForm;
   $fpeForm->sendPerMail('mail@mailadresse.de');

   echo $fpeForm->htmlOutput();
} catch(Exception $e) {
   echo '<div style="border: 2px solid red">';
   echo "Folgender Ausnahmefehler ist aufgetreten: <br/><b>". $e->getMessage()."</b>";
   echo "<br/>in Datei {$e->getFile()}:{$e->getLine()}";
   echo '</div>';
}

?>


Zuletzt bearbeitet von escaPe am Fr 22.02.2008 12:58, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Fido67
Account gelöscht


Ort: -

Verfasst Fr 22.02.2008 13:03
Titel

Antworten mit Zitat Zum Seitenanfang

mit welcher Methode schickst du dein Formular ab?
 
escaPe
Threadersteller

Dabei seit: 10.09.2007
Ort: Bonn
Alter: 22
Geschlecht: Männlich
Verfasst Fr 22.02.2008 13:11
Titel

Antworten mit Zitat Zum Seitenanfang

Code:
<form method="POST" action="_vti_form/shtml.php5" onsubmit="return FrontPage_Form1_Validator(this)" language="JavaScript" name="FrontPage_Form1" webbot-action="--WEBBOT-SELF--">     
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen Formular - Checkbox Abfrage in PHP
radio-button und checkbox => PHP-Abfrage
[php] mehrere Werte per checkbox übergeben
[php) "checkbox abfrage" wer kann helfen
input.checkbox
Checkbox die wegspringt ...
Neues Thema eröffnen   Neue Antwort erstellen Seite: Zurück  1, 2, 3  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.