Datenschutz Impressum

NOF-Schule | Forum

zur Schule NOF-NetObjects-Tutorials von Tommy Herrmann


Formulargenerator von Werner123
Du wolltest das doch sofort in den Datumsfeldern angepasst haben und nicht erst nach dem Senden, was bei PHP passieren würde.

Beide Felder werden doch geprüft. Z.B. das erste ab heute (auch das könnte man ändern) und bis zum Tag des 2. Feldes, der errechnet wurde. Also in unserem Beispiel waren das dann immer 30 Tage ab heute.

... leider kann ich Dir da nun auch nicht mehr weiter helfen. Gucke Dir alle Beiträge und Beispiele nochmals an.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Hier mal ein Beispiel wie ich das in ein vom Generator erzeugtes Script eingebunden habe.
Im Formular mussten noch zwei Attribute:  id='abholung' und id='rueckgabe' hinzugefügt werden.
Außerdem habe ich im Beispiel, zur Kontrolle ob die Daten übermittelt wurden, eine Checkbox hinzugefügt.

Folgendes noch geändert (rot markiert)
$abholung = isset($_POST["abholung"]) ? $_POST["abholung"] : ''; // Abholung
$rueckgabe = isset($_POST["rueckgabe"]) ? $_POST["rueckgabe"] : ''; // Rückgabe

Damit das Datum nicht vorbelegt ist.

PHP-Code:
<!DOCTYPE html>
<
html lang="de">
 <
head>
  <meta charset="UTF-8">
  <title></title>

  <style>
  body {
   font-familyVerdanaSans-Serif;
   font-size1rem;
  }

  span.pflichtfeld {
   font-size0.90rem;
   colorRed;
  }
  </style>

 </
head>
<
body>

<?
php
/*
   Aktion: Formulardaten nicht speichern.
   Formular - PHP 5.4+, Zeichenkodierung: UTF-8
   Siehe: https://werner-zenk.de/tipps/schriftzeichen_richtig_darstellen.php

   Erstellt mit dem Formular Generator (01.08.2020) - 
   https://werner-zenk.de/tools/formulargenerator.php

   Bitte testen Sie das Formular ausführlich und
   beachten Sie die Hinweise im Quelltext!
*/

// PHP Fehlermeldungen (1 um das Formular zu testen) anzeigen.
error_reporting(1); // (0/1)

$min date("Y-m-d"); // Minimale Datumsangabe
$max date("Y-m-d"strtotime("+60 days")); // Maximale Datumsangabe

$abholung = isset($_POST["abholung"]) ? $_POST["abholung"] : ''// Abholung
$rueckgabe = isset($_POST["rueckgabe"]) ? $_POST["rueckgabe"] : ''// Rückgabe
$abgelehnt = isset($_POST["abgelehnt"]) ? trim($_POST["abgelehnt"]) : ""// Abgelehnt
$abgelehntCk = isset($_POST["abgelehnt"]) ? " checked='checked'" null;

// Benutzereingaben überprüfen
// Die Meldungen müssen hier eventuell angepasst werden.
$Fehler = ["abholung"=>"""rueckgabe"=>"""abgelehnt"=>""];
if (isset(
$_POST["submit"])) {
 
$Fehler["abholung"] = strlen($_POST["abholung"]) < " Bitte füllen Sie dieses Feld aus!" "";
 
$Fehler["rueckgabe"] = strlen($_POST["rueckgabe"]) < " Bitte füllen Sie dieses Feld aus!" "";
 
$Fehler["abgelehnt"] = !isset($_POST["abgelehnt"]) ? " Hier fehlt die Bestätigung!" "";
}

// Formular erstellen
$Formular "
<form action='" 
$_SERVER["SCRIPT_NAME"] . "' method='post'>

<p>
 <label> Abholung:
<span class='pflichtfeld'>✲ " 
$Fehler["abholung"] . "</span><br>
  <input type='date' name='abholung' id='abholung' value='" 
$abholung "' min='" $min "' max='" $max "' size='35' required='required' tabindex='1'>
 </label>
</p>

<p>
 <label> Rückgabe:
<span class='pflichtfeld'>✲ " 
$Fehler["rueckgabe"] . "</span><br>
  <input type='date' name='rueckgabe' id='rueckgabe' value='" 
$rueckgabe "' size='35' required='required' tabindex='2'>
 </label>
</p>

<p>
 <input type='checkbox' name='abgelehnt' value='Ja' " 
$abgelehntCk " id='c2' tabindex='3'>
 <label for='c2'>Abgelehnt</label>
 <span class='pflichtfeld'>✲ " 
$Fehler["abgelehnt"] . "</span>
</p>

<p>
 <br>
 <input type='submit' name='submit' value='Formular absenden' tabindex='4'>
</p>

</form>
"
;

// Formular abgesendet
if (isset($_POST["submit"])) {

 
// Sind keine Benutzer-Eingabefehler vorhanden
 
if (implode(""$Fehler) == "") {

  // Datum (ISO) ins deutsche Format umwandeln
  if (substr_count($abholung"-") == 2) {
   list($jahr$monat$tag) = explode("-"$abholung);
   if (strlen($jahr) == 4) {
    $abholung "$tag.$monat.$jahr";
   }
  }

  // Datum (ISO) ins deutsche Format umwandeln
  if (substr_count($rueckgabe"-") == 2) {
   list($jahr$monat$tag) = explode("-"$rueckgabe);
   if (strlen($jahr) == 4) {
    $rueckgabe "$tag.$monat.$jahr";
   }
  }

  echo "<p>Die Daten wurden übertragen.</p>";

  // Liste der Variablen für die weitere Verarbeitung.
  echo '<p>' $abholung '</p>'// Abholung
  echo '<p>' $rueckgabe '</p>'// Rückgabe

 
}
 else {

  // Formular und Benutzer-Eingabefehler ausgeben
  echo $Formular;
 }
}
else {

 
// Formular ausgeben
 
echo $Formular;
}
?>

<script>
// Die Rückgabe innerhalb eines Zeitraums von 30 Tagen

if (document.getElementById("rueckgabe")) {
 document.getElementById("abholung").addEventListener("change", function () {
 
  var x = event.target.value;
  var p = new Date(new Date(x).setDate(new Date(x).getDate() + 30));
  var iso = new Date(p).toISOString();
  var n = iso.split("T");
  document.getElementById("rueckgabe").value = x;
  document.getElementById("rueckgabe").setAttribute("max", n[0]);
  document.getElementById("rueckgabe").setAttribute("min", x);
 });
}
</script>

</body>
</html> 
Bleibt Gesund!
Werner
https://werner-zenk.de - Webseiten erstellen, optimieren und aufpeppen

Benutze zum arbeiten: Win10 (Windows Insider) - Mozilla Firefox, Microsoft Edge - EmEditor, Visual Studio Code - XAMPP/WAMP,  FileZilla, paint.net und Gimp.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Ja, das stimmt. Das ist auch alles super geworden. Wir hatten ja nur bereits die Bedingungen für die Abholung in php festgelegt: Anklickbar sollte hier für den Abholtag frühestens der aktuelle Tag sein und spätenstens ein definierter Tag, sagen wir zum Test 60 Tage im Voraus. Gilt alles nur für die Abholung!
Das haben wir ja noch nicht drin (Rückgabe alles super!!!). Es ist richtig: beginnen soll der Abholtag mit dem heutigen Datum, oder als tt.mm.jjjj (das tut er jetzt und das ist richtig), aber man sollte keinen Abholtag für in bspw. 5 Jahren eingeben können, deshalb auch bei der Abholung eine "Klickbeschränkung" nach unten und nach oben. Die hatte ich ja ursprünglich mit den php-Variablen schon erhalten. Wenn ich die nicht kombinieren kann mit Java, dann müsste ich das, was wir für die Rückgabe erreicht haben, auch für die Abholung in Java herrichten - und daran bin ich gestern Abend gescheitert. :confused: 

Grüße, vr6.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Hey Werner, meine Antwort (mit Korrekturzeit) war jetzt parallel zu deinem Post. Ich probiere das aus. Danke und Grüße, vr6.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Wozu ist denn die Bestätigung "Abgelehnt" anzuhaken? Huh
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Zitat:Außerdem habe ich im Beispiel, zur Kontrolle ob die Daten übermittelt wurden, eine Checkbox hinzugefügt.

Habe im Script gerade noch ein minimales Datum hinzugefügt.
Bleibt Gesund!
Werner
https://werner-zenk.de - Webseiten erstellen, optimieren und aufpeppen

Benutze zum arbeiten: Win10 (Windows Insider) - Mozilla Firefox, Microsoft Edge - EmEditor, Visual Studio Code - XAMPP/WAMP,  FileZilla, paint.net und Gimp.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Dann würde mir ja nur noch die Abholbeschränkung nach oben fehlen. Bspw. Abholungen nur anklickbar im Bereich von 60 Tagen. Die Tage könnte ich später dann im Script noch erhöhen, indem ich die Zahl 60 ändern würde.

Ich habe das mit dem Anhaken immer noch nicht drauf. Aus Nutzersicht gesehen, würde dieser ein "Abgelehnt" anhaken?  :confused:
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
So, das habe ich jetzt hinbekommen. Habe dies ergänzt, und es funktioniert. Smiling Smiling 

$max = date("Y-m-d", strtotime("+60 days"));


und dies erweitert:

<p>
<label> Abholung:
<span class='pflichtfeld'>✲ " . $Fehler["abholung"] . "</span><br>
  <input type='date' name='abholung' id='abholung' value='" . $abholung . "' min='" . $min . "' max='" . $max . "' size='35' required='required' tabindex='1'>
</label>
</p>



Vielen Dank. Jetzt schaue ich mal, ob ich das Ganze im Kontext mit meinen restlichen Formularkomponenten ans Laufen bekomme. Grüße, vr6.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Hey Werner,
wozu ist denn die Checkbox aus Nutzersicht da? Was passiert da genau? Wenn ich die nicht anklicke, zeigt mein Formular zwar die Vorschau, es wird aber nicht ohne "Haken dran" gesendet. Was bewirkt der Haken denn genau?

Von dem Anwender her gesehen: Ich musste noch nie etwas anklicken, was so etwas wie eine Checkbox war, wenn ich ein Formular im Netz ausfülle. Mich würde es als Nutzer irritieren.

Daher würde ich gerne die Wichtigkeit einschätzen können, um zu entscheiden, ob ich so etwas wirklich brauche.

Grüße, vr6.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Gibt es eine Ergänzung für diese schönen Dropdownfelder:


.png  3Geburtstagsdropdownlisten.png (Größe: 49,11 KB / Downloads: 7)


Ich würde sie gerne beim Geburtstag beibehalten und nicht auf das andere Format (wie bei $abholung) gehen wollen, weil die Eingabe zeitlich so weit zurück einfach schneller geschehen kann. Gibt es eine Code-Ergänzung, so dass diese Dropdownfelder schon bei der Auswahl eine "0" (vor einstelligen Ziffern) voran gestellt bekommen können?

Grüße, vr6.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Hey, noch mal ich.
Bei einer Artikelauswahl mittels Checkbox stehen im Formular alle Artikel, die man anwählen kann, schön untereinander. Zur besseren Übersicht wäre das super, wenn dies auch in der Vorschau und in der Email nachher so schön untereinander stehen könnte. Ich müsste daher irgendwie hinter jedem Artikel einen Umbruch hin bekommen. Interessant, dass es aber für´s Formular schon so geht. Nur in Vorschau und Email noch nicht.

Ich weiss, es ist Samstag Abend und ihr seid bestimmt anderswo. Kommende Tage ist ja auch noch Zeit.

Tommy, alles Gute für übermorgen. thumbs up

Grüße, vr6.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Dieser Punkt ist gelöst, es hatte sich doch noch ein tabindex versteckt. Smiling

Und noch ein kosmetisches Thema:
Ich dachte, ich hätte kein "tabindex" mehr drin. Die TAB-Reihenfolge geht durch den php Bereich normal durch, springt dann in die Browserleiste, und dann erst in den 3 neuen kreierten Jayascript-Abfragen (abholung, rückgabe, abgelehnt). Kann man das ändern? Grüße, vr6.

Dieser Punkt ist gelöst, es hatte sich doch noch ein tabindex versteckt. Smiling
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Die Vorschau ist doch nur eine normale HTML-Blockquote
Mit CSS kannst du diese formatieren wie du möchtest.

<style>
h4 {
margin: 10px;
}

blockquote {
width: 350px;
margin-left: 0px;
padding: 10px;
background: Whitesmoke;
}
</style>

<blockquote>

<h4>Vorschau</h4>
<b>Name:</b> $name <br>
<b>E-Mail:</b> $email <br>
<b>Betreff:</b> $betreff <br>
<b>Nachricht:</b> <br>$nachricht
</blockquote>

So ähnlich wie hier im Forum, wenn man jemanden zitiert.

Zitat:Hey, noch mal ich.
Bei einer Artikelauswahl mittels Checkbox stehen im Formular alle Artikel, die man anwählen kann, schön untereinander. Zur besseren Übersicht wäre das super, wenn dies auch in der Vorschau und in der Email nachher so schön untereinander stehen könnte. Ich müsste daher irgendwie hinter jedem Artikel einen Umbruch hin bekommen. Interessant, dass es aber für´s Formular schon so geht. Nur in Vorschau und Email noch nicht.

Oder mache aus dem Tag  blockquote ein div

Ich glaube das Problem hatten wir schon einmal ...

Zitat:Hey Werner,
wozu ist denn die Checkbox aus Nutzersicht da? Was passiert da genau? Wenn ich die nicht anklicke, zeigt mein Formular zwar die Vorschau, es wird aber nicht ohne "Haken dran" gesendet. Was bewirkt der Haken denn genau?

Von dem Anwender her gesehen: Ich musste noch nie etwas anklicken, was so etwas wie eine Checkbox war, wenn ich ein Formular im Netz ausfülle. Mich würde es als Nutzer irritieren.

Ich mag diese Checkbox die man anklicken muss auch nicht.

[x] Mit Setzen des Hakens erkläre ich mich einverstanden, dass
die von mir eingegebenen Daten für die Bearbeitung meiner Anfrage
elektronisch erhoben und gespeichert werden. Diese Einwilligung kann
jederzeit mit einer Nachricht an uns widerrufen werden.
Weitere Informationen entnehmen Sie der Datenschutzerklärung ...

Oder:

[x]  Ich bin mit den DSGVO einverstanden.

Jeder wollte das damals haben und ich wurde gefragt (und genervt) warum es das nicht im Generator gibt blabla ...
Also habe ich es eingebaut Wink Zu finden ist das auf Seite 2 im Formulartyp und "Checkbox (Eine Auswahlmöglichkeit)"
Bleibt Gesund!
Werner
https://werner-zenk.de - Webseiten erstellen, optimieren und aufpeppen

Benutze zum arbeiten: Win10 (Windows Insider) - Mozilla Firefox, Microsoft Edge - EmEditor, Visual Studio Code - XAMPP/WAMP,  FileZilla, paint.net und Gimp.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Hey Werner, danke für deine Antwort.
Jetzt begreife ich deine Checkbox. Hatte mich vom Begriff "Abgelehnt" völlig irritieren lassen.


Artikelauswahl in Vorschau und Mails.
Die Stelle habe ich gefunden, das Problem taucht aber in der Variablen selbst auf. Die Variable wurde mit Werten aus bspw. 10 Checkboxen gefüllt (Liste aus der Arraybildung). In der Vorschau und für die Mails wird diese Variable (siehe Schriftfarbe rot) dann genutzt. Das, was der Nutzer sich ausgesucht hat, wird in Variable $artikelauswahl nicht untereinander, sondern leider nebeneinander dargestellt. Nun habe ich versucht, das untereinander darstellbar zu machen. An irgendeiner Stelle müsste ich der Variabeln "$artikelauswahl" sagen können, dass der Inhalt (jeweils am Komma des Arrays getrennt) mit Umbrüchen ausgegeben werden soll.
Grüße, vr6.

<blockquote>

<h4>Vorschau</h4>
<b>Name:</b> $name <br>
<b>E-Mail:</b> $email <br>
<b>Betreff:</b> $betreff <br>
<b>Artikelauswahl:</b> $artikelauswahl <br>
<b>Nachricht:</b> <br>$nachricht
</blockquote>
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Du solltest oben eine Schleife haben und da kannst Du dann ein $artikelsend einfügen und das bei der Ausgabe dann verwenden.

PHP-Code:
$artikelCG "";
$artikelsend="";
foreach (
$array as $key => $value) {
 
$artikelCG .= "<input type='checkbox' name='artikel[" $key "]' value='" $value "' id='cg3" $key "'";
  if (isset(
$_POST["artikel"][$key])) {
  if (
$_POST["artikel"][$key] == $value) {
   
$artikelsend .= $_POST["artikel"][$key] . "\n";
   
$artikelCG .= " checked='checked'";
  }
 }
 
$artikelCG .= " tabindex='4'> <label for='cg3" $key "'>" $value "</label> &nbsp;\n ";

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren




Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste
nach oben An den Anfang der Seite scrollen
NetObjects Fusion Infos, Downloads und Updates Diese Website wird durch Bot-Trap vor Spam geschützt!