neues formularmodul :: w3concepts.form.v1

emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

Enigma hat geschrieben:geändert, da Contenido sonst dezent mit dem roten Pünktchen meckert (funktionieren tut's auch ohne die Änderung).
das ist leider ein bug in der 4.4.x serie und tritt in der 4.5.x oder höher nicht mehr auf...
siehe -> http://www.contenido.org/forum/viewtopi ... 1660#11660
*** make your own tools (wishlist :: thx)
RTZR
Beiträge: 16
Registriert: Di 24. Mai 2005, 08:55
Kontaktdaten:

Beitrag von RTZR »

Ich habe es gerade ausprobiert und kann nur Danke sagen: Alles klappt einwandfrei!! Bitte gebt mir aber noch einen Tipp wie ich am besten (und einfachsten) einen Submitbutton einbaue.

Vielen Dank schon mal im Voraus :wink:
Enigma
Beiträge: 50
Registriert: Mi 8. Jun 2005, 05:55
Wohnort: Kiel
Kontaktdaten:

Beitrag von Enigma »

RTZR hat geschrieben:Bitte gebt mir aber noch einen Tipp wie ich am besten (und einfachsten) einen Submitbutton einbaue.
Ganz einfach per Hand - guckst Du hier: http://www.contenido.org/forum/viewtopi ... c&start=19

Gruß,
Jan
This message has been ROT-13 encrypted twice for higher security.
sabsab
Beiträge: 35
Registriert: Mo 21. Feb 2005, 16:10
Wohnort: München
Kontaktdaten:

zeilenumbruch oder return

Beitrag von sabsab »

tach zusammen,

habe jetzt doch noch ein problem mit dem formular. beim ausfüllen (demovorlage von kummer, s. seite 1)
kann ich zb. im bemerkungsfeld keinen zeilenumbruch/return einbauen, denn bei der überprüfung wird diese als nicht gültig angegeben.

ist das nur eine einstellungssache der formulardaten oder steckt mehr dahinter?

gruß
sabsab
Enigma
Beiträge: 50
Registriert: Mi 8. Jun 2005, 05:55
Wohnort: Kiel
Kontaktdaten:

Re: zeilenumbruch oder return

Beitrag von Enigma »

sabsab hat geschrieben:beim ausfüllen (demovorlage von kummer, s. seite 1)
kann ich zb. im bemerkungsfeld keinen zeilenumbruch/return einbauen, denn bei der überprüfung wird diese als nicht gültig angegeben.
Hast Du den Validierungstyp textwithlinefeed verwendet, den ich in meinem Ausgangsposting erwähnt habe? Damit sollte es gehen (immer vorausgesetzt, Du verwendest meine Version).

Gruß,
Jan
This message has been ROT-13 encrypted twice for higher security.
sabsab
Beiträge: 35
Registriert: Mo 21. Feb 2005, 16:10
Wohnort: München
Kontaktdaten:

Beitrag von sabsab »

vielen dank,
hatte ich, held der arbeit :shock: , natürlich nicht gemacht. funktioniert!
(benutze deine version enigma)

aber habe dabei ein sehr spezielles problem:
lasse daten in eine txt-datei schreiben, um sie später mit excel o.ä. einzulesen.
wenn ich allerdings einen zeilenumbruch/return in ein feld setze, dann werden alle daten nach dem umbruch an den anfang der nächsten zeile der txt-datei übergeben und damit sind die daten nicht mehr korrekt zuzuordnen.

soll heißen, das trennungzeichen (in meinem fall ein &) wird hier nicht mehr beachtet, die daten auseinander gerissen.

in der übermittlung per mail steht allerdings alles fein säuberlich untereinander, wie es sein soll.

wie gesagt, ein spezielles problem.

gruß
sabsab
Enigma
Beiträge: 50
Registriert: Mi 8. Jun 2005, 05:55
Wohnort: Kiel
Kontaktdaten:

Beitrag von Enigma »

Wenn ich Dich richtig verstehe, müsste eine Änderung der Funktion write2LogFile() in

Code: Alles auswählen

    // PRIVATE
    function write2LogFile() {
      $logfile_path = 'logs/form_log.txt';
      $fopen_mode = 'ab';

      $this->logEntry = '';

      if ($this->aufgedroeselt) {
        $i = 0;
        foreach ($this->aufgedroeselt as $value) {
          $i++;
          if (1 != $i) {
            $this->logEntry .= '; ';
          }

          $value = str_replace("\r\n", ' ', $value);
          $value = str_replace("\n", ' ', $value);
          $value = str_replace("\r", ' ', $value);
          $this->logEntry .= $value;
        }

        $this->logEntry .= CCS_LF;
      }

      $status = $this->write2file($logfile_path, $this->logEntry, $fopen_mode);
      if ('ok' != substr($status, 0, 2)) {
        // Fehler beim Schreiben aufgetreten!
        echo 'FEHLER!';
      }
    }
helfen (ungetestet, sollte aber gehen).

Gruß,
Jan
This message has been ROT-13 encrypted twice for higher security.
sabsab
Beiträge: 35
Registriert: Mo 21. Feb 2005, 16:10
Wohnort: München
Kontaktdaten:

Beitrag von sabsab »

funktioniert wunderbar, großes lob und vielen dank aus regensburg!

sabsab
sabsab
Beiträge: 35
Registriert: Mo 21. Feb 2005, 16:10
Wohnort: München
Kontaktdaten:

validierung ergänzung

Beitrag von sabsab »

nur für jene, die wie ich es nicht sofort checken, sollten nicht vergessen bei der validierungen (bezug: version enigma) u.a. Ü Ä Ö / als erlaubte zeichen ebenfalls zu ergänzen.
werden doch auch häufiger in fließtexten gebraucht.
fällt dem ahnungslosen ausfüllern nicht auf, besonders beim copy/pasten von viel text... sonst wird schnell aufgegeben, das formular auszufüllen.
vielleicht nutze es ja jemanden.

gruß
sabsab
Enigma
Beiträge: 50
Registriert: Mi 8. Jun 2005, 05:55
Wohnort: Kiel
Kontaktdaten:

Beitrag von Enigma »

Stimmt - es wird zwar case-insensitive verglichen (Funktion eregi()), aber das dürfte wohl nur für die Buchstaben A bis Z gelten. Da hab' ich nicht aufgepasst... ;)

Danke für den Hinweis!

Gruß,
Jan
This message has been ROT-13 encrypted twice for higher security.
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

ähm jetzt mal ganz auf die schnelle

hab das bei einer php5.0.3 am laufen und erhalte im errorlog.txt nun immer folgende meldungen(die betroffen zeilen schreib ich gleich mal dazu):

Code: Alles auswählen

        $formulardaten = $this->formInterpretation(&$formular);
[13-Jul-2005 10:30:46] PHP Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /srv/www/httpd/htdocs/domain.com/includes/functions.mod.php(191) : eval()'d code on line 119

Code: Alles auswählen

        if ($sent && !$this->formFieldValidator(&$attribute)) {...
[13-Jul-2005 10:30:46] PHP Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /srv/www/httpd/htdocs/domain.com/includes/functions.mod.php(191) : eval()'d code on line 136

Code: Alles auswählen

        $felder = $this->formInterpretation(&$formular);
[13-Jul-2005 10:30:46] PHP Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /srv/www/httpd/htdocs/domain.com/includes/functions.mod.php(191) : eval()'d code on line 239

Code: Alles auswählen

            if (!$this->formFieldValidator(&$feld)) return false;
[13-Jul-2005 10:30:46] PHP Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /srv/www/httpd/htdocs/domain.com/includes/functions.mod.php(191) : eval()'d code on line 242

man kann das ganze ja mittels php.ini eintrag
allow_call_time_pass_reference = true; ausschalten, aber ich dachte ich melde dir das mal...
*** make your own tools (wishlist :: thx)
Enigma
Beiträge: 50
Registriert: Mi 8. Jun 2005, 05:55
Wohnort: Kiel
Kontaktdaten:

Beitrag von Enigma »

Das stammt noch von meinem Vorgänger... :wink:

Sorry für die späte Antwort; ich war zwei Wochen im Urlaub. Bei Gelegenheit werde ich's mal umbauen - im Moment fehlt mir leider die Zeit.

Vielen Dank jedenfalls für den Hinweis!

Gruß,
Jan
This message has been ROT-13 encrypted twice for higher security.
rapma
Beiträge: 10
Registriert: So 8. Aug 2004, 10:07
Kontaktdaten:

Beitrag von rapma »

Hallo,

das neue Formular mit den erweiterungen funktioniert ganz wunderbar :D und erfüllt alle Funktionen die ich mir gewünscht habe bis auf eins:

Ist es möglich noch einen Fehlerzusatz an den Anfang des Formulars zu stellen, wie z.B. Achtung! Sie haben leider nicht alle Pflichtfelder ausgefüllt.

Da mein Formular sehr lang ist könnte man davon ausgehen, dass der User nicht unbedingt mitbekommt das er was nicht richtig gemacht hat, wenn das fehlerhafte Feld außerhalb seines Sichtbereichs liegt.

Wo genau müsste ich die Änderung denn vornehmen, damit das denn gleich an den Anfang gesetzt wird.

Vielen Dank schon mal vorab und einen schönen Tag wünscht

Manuela
Enigma
Beiträge: 50
Registriert: Mi 8. Jun 2005, 05:55
Wohnort: Kiel
Kontaktdaten:

Beitrag von Enigma »

Hallo Manuela,

da Du mich per PN so nett gebeten hast, habe ich mir das Skript noch einmal angeschaut. :)
rapma hat geschrieben:Ist es möglich noch einen Fehlerzusatz an den Anfang des Formulars zu stellen, wie z.B. Achtung! Sie haben leider nicht alle Pflichtfelder ausgefüllt.

Da mein Formular sehr lang ist könnte man davon ausgehen, dass der User nicht unbedingt mitbekommt das er was nicht richtig gemacht hat, wenn das fehlerhafte Feld außerhalb seines Sichtbereichs liegt.

Wo genau müsste ich die Änderung denn vornehmen, damit das denn gleich an den Anfang gesetzt wird.
Ich hab's nicht getestet, aber eigentlich sollte es genügen, die Funktion formularAusgabe() folgendermaßen zu ändern:

Code: Alles auswählen

    // PRIVATE
    function formularAusgabe($sent = false) {
      // Ausgabe-Pufferung einschalten
      ob_start();

      echo '<form action="" method="post">';
      echo '<input type="hidden" name="sent" value="true" />';
      $formular      = $this->form['form'];
      $formulardaten = $this->formularInterpretation(&$formular);
      $formular      = split('###', $formular);

      foreach ($formular as $formularteil) {
        if (!empty($formulardaten["{$formularteil}"])) {
          $this->formularFeld($formulardaten["{$formularteil}"], $sent);
        } else {
          echo $formularteil;
        }
      }

      echo '</form>';

      // Ausgabepuffer in Variable einlesen
      $ccs_form_data = ob_get_contents();
      // Pufferung beenden und Puffer löschen
      ob_end_clean();
      // wenn ein Fehler im Formular aufgetreten ist,
      // Fehlermeldung über dem Formular ausgeben
      if (!$this->formularVollstaendig()) {
        echo '<p style="color: #FF0000">Bei der Formularverarbeitung ist ein Fehler aufgetreten. Bitte &uuml;berpr&uuml;fen Sie Ihre Eingaben!</p>'.CCS_LF;
      }
      // Formular ausgeben
      echo $ccs_form_data;
    }
Ich habe die nötigen Schritte entsprechend kommentiert. Sollte es nicht funktionieren, melde Dich einfach noch mal.

Gruß,
Jan
This message has been ROT-13 encrypted twice for higher security.
rapma
Beiträge: 10
Registriert: So 8. Aug 2004, 10:07
Kontaktdaten:

Beitrag von rapma »

Hallo Jan,

vielen vielen Dank :D erstmal für deine Mühe, die Fehlermeldung wird an genau der richtigen Stelle ausgewiesen, nur :( leider auch schon bevor der User irgendwas eingegeben hat, also ist es jetzt Bestandteil des Formulars.
Fällt dir dazu noch was ein?

Vielen lieben Dank

Manuela
Gesperrt