Seite 13 von 24
Verfasst: Mi 29. Jun 2005, 09:29
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
Verfasst: Mi 29. Jun 2005, 10:16
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

Verfasst: Mi 29. Jun 2005, 10:36
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
zeilenumbruch oder return
Verfasst: Do 30. Jun 2005, 09:58
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
Re: zeilenumbruch oder return
Verfasst: Do 30. Jun 2005, 10:11
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
Verfasst: Do 30. Jun 2005, 10:57
von sabsab
vielen dank,
hatte ich, held der arbeit

, 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
Verfasst: Do 30. Jun 2005, 18:57
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
Verfasst: Do 30. Jun 2005, 21:43
von sabsab
funktioniert wunderbar, großes lob und vielen dank aus regensburg!
sabsab
validierung ergänzung
Verfasst: Fr 1. Jul 2005, 11:02
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
Verfasst: Fr 1. Jul 2005, 12:43
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
Verfasst: Mi 13. Jul 2005, 09:43
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
[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...
Verfasst: Mi 20. Jul 2005, 01:09
von Enigma
Das stammt noch von meinem Vorgänger...
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
Verfasst: Fr 5. Aug 2005, 09:47
von rapma
Hallo,
das neue Formular mit den erweiterungen funktioniert ganz wunderbar

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
Verfasst: Di 9. Aug 2005, 21:39
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 überprü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
Verfasst: Di 9. Aug 2005, 22:34
von rapma
Hallo Jan,
vielen vielen Dank

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