Mehrstufige Formulare im Frontend

Hier können Sie Fragen bezüglich der Kundenverwaltung stellen.
staeubli

Mehrstufige Formulare im Frontend

Beitragvon staeubli » Do 29. Jun 2006, 18:09

Hallo zusammen, wiedermal stehe ich vor einem hoffentlich nur kleinen Rätsel. Ich möchte einem registrerten Benutzer über das Frontend die Möglichkeit geben, Objekte, also Datensätze, zu erfassen. In einem ersten Schritt (Seite1) nach der erfolgreichen Registration soll der Benutzer einen neuen Datensatz anlegen können. Dies klappt soweit! Nun ist es ja so, dass im Formular die Ziel ID die Seite mit dem we:write Tag ist:

<we:form type="object" id="hier die ID der Seite mit we:write" method="post" classid="4">

Dies ist soweit kein Problem und die Datensätze werden korrekt erstellt. Nun möchte ich aber, dass auf der nächsten Seite weitere Eingabefelder folgen, die der Benutzer erfassen kann. Mein Problem ist nun, dass der Datensatz mit we:write erstellt wurde und nun über we:a edit="object" angesprochen werden muss, da sonst ein weiterer Datensatz angelegt wird. Dies ist doch richtig so, oder?

<we:sessionStart/>
<we:write type="object" publish="true" classid="4" userid="kundenid"/>
<we:ifWritten type="object">
und hier folgen dann die weiteren Felder...

Da der Datensatz nun bereits erstellt worden ist, müsste ich jetzt mit we:a edit="object" auf den Datensatz zugreifen. Ich möchte jedoch nicht, dass der Benutzer nochmals auf einen Link klicken muss, damit er die weiteren Eingaben machen kann da dieser Tag ja nur einen Link auf die Eingabeseite ausgibt, sondern dass die weiteren Felder direkt nach we:write angezeigt und ausgefüllt werden können. Natürlich sind diese Felder in der Klasse vorhanden und zu diesem Zeitpunkt leer. Ich hoffe, dass meine Ausführungen verständlich sind und freue mich über jeglichen Input. Besten Dank.

staeubli

Beitragvon staeubli » Fr 30. Jun 2006, 14:15

Hallo? Bin ich der Einzige in diesem Forum?

ThomasGoebe

Beitragvon ThomasGoebe » Fr 30. Jun 2006, 15:41

Nein, Ich bin auch hier!

fresh
Junior Member
Beiträge: 21
Registriert: Mo 31. Jan 2005, 12:02

Beitragvon fresh » Sa 1. Jul 2006, 14:08

Hallo TgO, solche Leute wie du sind ein echte Bereicherung und Hilfe für dieses Forum....

ThomasGoebe

Beitragvon ThomasGoebe » Sa 1. Jul 2006, 21:10

Hallo Fresh!

Danke! Ich gebe mir immer Mühe, die Fragen, die ich hier beantworten kann auch zu beantworten.

Christoph Lütjen

Beitragvon Christoph Lütjen » So 2. Jul 2006, 19:06

Hallo,

eine Funktion für genau dieses Verhalten gibt es leider nicht. Damit sehe ich spontan zwei Möglichkeiten hier einfach zum Ziel zu kommen:

a) Am einfachsten: Auf einer HTML Seite bleiben und die einzelnen Steps per DIV + JavaScript abbilden. Wenn Js auf einem Client deaktiviert ist, würden die einzelnen Schritte dann eben untereinander angezeigt werden - dies dürfte aber eher selten der Fall sein.

b) Mit einem Redirect arbeiten, d.h. den Datensatz speichern und anschließend den Link, wie ihn we:a erzeugen würde (ein Blick in den Quelltext hilft hier weiter) per JavaScript / HTM Meta / PHP aufrufen.

fresh
Junior Member
Beiträge: 21
Registriert: Mo 31. Jan 2005, 12:02

Beitragvon fresh » Di 4. Jul 2006, 01:07

Hallo zusammen, das Ganze funktioniert bis jetzt nicht schlecht. Ein Problem habe ich jedoch und ich kann mir dies einfach nicht erklären. Ich habe eine erste Datei newad01.php, diese enthält den folgenden Quelltext:

Code: Alles auswählen

<we:sessionStart/>
<!-- Variable fuer Submit01 -->
<we:setVar to="document" nameto="submit01" />
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <we:title></we:title>
  <we:description/>
  <we:keywords/>
  <we:charset defined="ISO-8859-1">ISO-8859-1</we:charset>
</head>
<body>
**************************************************

<!-- Include Login wenn nicht registriert -->
<we:include id="249"/>

<!-- Beginn User-Bereich wenn registriert -->
<we:ifRegisteredUser>
<p>Hallo <we:sessionField name="Forename" type="print"/> <we:sessionField name="Surname" type="print"/>, Sie sind nun eingeloggt.




kunden id: <?php echo $_SESSION['webuser']['ID']; ?>
<?php $kundenidx = $_SESSION['webuser']['ID']; ?>



<!-- Fehlermeldungen wenn Formulare nicht korrekt ausgefuellt -->
<we:ifVarSet name="submit01" type="request" doc="document">
	<we:ifUserInputEmpty match="inseratetitel" formname="eingabe01">
		Bitte geben Sie einen Inseratetitel ein!

	</we:ifUserInputEmpty>
	<we:ifUserInputEmpty match="objektbeschreibung" formname="eingabe01">
		Bitte geben Sie eine Objektbeschreibung ein!

	</we:ifUserInputEmpty>
	<we:ifUserInputEmpty match="objektart" formname="eingabe01">
		Bitte waehlen Sie eine Objektart aus!

	</we:ifUserInputEmpty>
</we:ifVarSet>

<!-- Formulareingabe -->
<we:form type="object" id="self" method="post" classid="4" name="eingabe01">
<input type="hidden" name="we_ui_we_global_form[kundenid]" value="<?php echo $kundenidx;?>">
    <p>
      Inseratetitel*:

      <we:userInput name="inseratetitel" type="textinput" size="46"/>
    </p>
    <p>
      Objektbeschreibung*:

      <we:userInput type="textarea" name="objektbeschreibung" width="300px" height="200px" wysiwyg="false" />
    </p>
    <p>
      Objektart*:


      Zu vermieten:

      <input type="radio" name="we_ui_eingabe01[objektart]" value="M_Wohnung" <?php if ($we_ui_eingabe01[objektart] == "M_Wohnung") { print "checked"; } ?> > Wohnung

      <input type="radio" name="we_ui_eingabe01[objektart]" value="M_Haus" <?php if ($we_ui_eingabe01[objektart] == "M_Haus") { print "checked"; } ?> > Haus

      <input type="radio" name="we_ui_eingabe01[objektart]" value="M_Moebliertes_Wohnobjekt" <?php if ($we_ui_eingabe01[objektart] == "M_Moebliertes_Wohnobjekt") { print "checked"; } ?> > Möbliertes Wohnobjekt

      <input type="radio" name="we_ui_eingabe01[objektart]" value="M_Parkplatz_Garage" <?php if ($we_ui_eingabe01[objektart] == "M_Parkplatz_Garage") { print "checked"; } ?> > Parkplatz, Garage

      <input type="radio" name="we_ui_eingabe01[objektart]" value="M_Gewerbeobjekt" <?php if ($we_ui_eingabe01[objektart] == "M_Gewerbeobjekt") { print "checked"; } ?> > Gewerbeobjekt


      
       Zu verkaufen:

      <input type="radio" name="we_ui_eingabe01[objektart]" value="K_Wohnung" <?php if ($we_ui_eingabe01[objektart] == "K_Wohnung") { print "checked"; } ?> > Wohnung

      <input type="radio" name="we_ui_eingabe01[objektart]" value="K_Haus" <?php if ($we_ui_eingabe01[objektart] == "K_Haus") { print "checked"; } ?> > Haus

      <input type="radio" name="we_ui_eingabe01[objektart]" value="K_Mehrfamilienhaus" <?php if ($we_ui_eingabe01[objektart] == "K_Mehrfamilienhaus") { print "checked"; } ?> > Mehrfamilienhaus

      <input type="radio" name="we_ui_eingabe01[objektart]" value="K_Gewerbeobjekt" <?php if ($we_ui_eingabe01[objektart] == "K_Gewerbeobjekt") { print "checked"; } ?> > Gewerbeobjekt

      <input type="radio" name="we_ui_eingabe01[objektart]" value="K_Grundstueck" <?php if ($we_ui_eingabe01[objektart] == "K_Grundstueck") { print "checked"; } ?> > Grundstück


    <p>
      <input type="submit" name="submit01" value="eintragen">
    </p>
 </we:form>

<!-- Beginn Bereich Schreiben neuer Datensatz wenn keine Fehlermeldung -->
<we:setVar to="global" nameto="formerror" value="0" />

<we:ifUserInputEmpty match="inseratetitel" formname="eingabe01">
  <we:setVar to="global" nameto="formerror" value="1" />
</we:ifUserInputEmpty>
<we:ifUserInputEmpty match="objektbeschreibung" formname="eingabe01">
  <we:setVar to="global" nameto="formerror" value="1" />
</we:ifUserInputEmpty>
<we:ifUserInputEmpty match="objektart" formname="eingabe01">
  <we:setVar to="global" nameto="formerror" value="1" />
</we:ifUserInputEmpty>

<we:ifVar type="global" name="formerror" match="0">
	<we:write type="object" formname="eingabe01" publish="true" userid="kundenid" classid="4" />
    	<we:ifWritten type="object">
    		<!-- Ermitteln ObjektID fuer Edit-Weiterleitung zur naechsten Seite -->
			<?php
				/* Redirect auf naechste Seite im aktuell angeforderten Verzeichnis */
				$host  = $_SERVER['HTTP_HOST'];
				$uri  = rtrim(dirname($_SERVER['PHP_SELF']), '/\');
				$extra = 'newad02.php';
				$objektidx = $GLOBALS["we_object"]["eingabe01"]->ObjectID;
				header("Location: http://$host$uri/$extra?we_editObject_ID=$objektidx");
				exit;
			?>
			<!-- <?php p_r($GLOBALS); ?>
 -->
    	</we:ifWritten>
	<we:ifNotWritten type="object">
		Fehler!
	</we:ifNotWritten>
</we:ifVar>



<we:sessionLogout id="self">schliessen</we:sessionLogout></p>
</we:ifRegisteredUser>
**************************************************
</body>
</html>
Das Eintragen eines neuen Datensatzes funktioniert und dieser wird auch erstellt. Das Problem ist jedoch, dass auf der nachfolgenden Seite die mittels header("Location: http://$host$uri/$extra?we_editObject_ID=$objektidx"); aufgerufen wird, immer eine ID angezeigt wird, welche um 2 höher ist als die, die soeben erstellt wurde, also wenn die erstellte ID 125 ist, dann wird in der Adresszeile ...?we_editObjectID=127 angezeigt???? Ich kann mir dies einfach nicht erklären? Wenn ich die ID dann in der Adresszeile manuell ändere, also 2 weniger, dann funktioniert das Ganze und die Daten können vervollständigt werden. Der Quelltext der Seite 2 sieht sieht so aus:

Code: Alles auswählen

<we:sessionStart/>
<!-- Variable fuer Submit02 -->
<we:setVar to="document" nameto="submit02" />
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <we:title></we:title>
  <we:description/>
  <we:keywords/>
  <we:charset defined="ISO-8859-1">ISO-8859-1</we:charset>
</head>
<body>
**************************************************

<!-- Include Login wenn nicht registriert -->
<we:include id="249"/>

<!-- Beginn User-Bereich wenn registriert -->
<we:ifRegisteredUser>
<p>Hallo <we:sessionField name="Forename" type="print"/> <we:sessionField name="Surname" type="print"/>, Sie sind nun eingeloggt.




kunden id: <?php echo $_SESSION['webuser']['ID']; ?>
<?php $kundenidx = $_SESSION['webuser']['ID']; ?>



<!-- Fehlermeldungen wenn Formulare nicht korrekt ausgefuellt -->
<we:ifVarSet name="submit02" type="request" doc="document">
	<we:ifUserInputEmpty match="plzort" formname="eingabe01">
		Bitte waehlen Sie einen Ort aus!

	</we:ifUserInputEmpty>
</we:ifVarSet>

<!-- Formulareingabe -->
<we:form type="object" id="252" method="post" classid="4" name="eingabe01">
<input type="hidden" name="we_ui_we_global_form[kundenid]" value="<?php echo $kundenidx;?>">
    <p>
      Adresse, Nr. (zur Anzeige des Lageplans):

      <we:userInput name="adresse" type="textinput" size="46"/>
    </p>
    <p>
      Ort, PLZ*:

      <we:userInput name="plzort" type="textinput" size="46"/>
    </p>
    <p>
      Anzahl Raeume:

      <we:userInput name="anzahlzimmer" type="textinput" size="46"/>
    </p>
    <p>
      Verfuegbar ab:

      <we:userInput name="verfuegbarab" type="textinput" size="46"/>
    </p>
    <p>
      Baujahr:

      <we:userInput name="baujahr" type="textinput" size="46"/>
    </p>
    <p>
      Etage:

      <we:userInput name="etage" type="textinput" size="46"/>
    </p>
    <p>
      Wohnflaeche:

      <we:userInput name="wohnflaeche" type="textinput" size="46"/>
    </p>
    <p>
      Grundstueckflaeche:

      <we:userInput name="grundstueckflaeche" type="textinput" size="46"/>
    </p>
    <p>
      <input type="submit" name="submit02" value="eintragen">
    </p>
 </we:form>

<!-- Beginn Bereich Schreiben neuer Datensatz wenn keine Fehlermeldung -->
<we:setVar to="global" nameto="formerror" value="0" />

<we:ifUserInputEmpty match="plzort" formname="eingabe01">
  <we:setVar to="global" nameto="formerror" value="1" />
</we:ifUserInputEmpty>

<we:ifVar type="global" name="formerror" match="0">
	<we:write type="object" formname="eingabe01" publish="true" userid="kundenid" classid="4" />
    	<we:ifWritten type="object">
    		<!-- Ermitteln ObjektID fuer Edit-Weiterleitung zur naechsten Seite -->
			<?php
				/* Redirect auf naechste Seite im aktuell angeforderten Verzeichnis */
				$host  = $_SERVER['HTTP_HOST'];
				$uri  = rtrim(dirname($_SERVER['PHP_SELF']), '/\');
				$extra = 'newad01.php';
				$objektidx = $GLOBALS["we_object"]["eingabe01"]->ObjectID:
				/* header("Location: http://$host$uri/$extra?we_editObject_ID=$objektidx"); */
				header("Location: http://$host$uri/$extra");
				exit;
			?>
			<!-- <?php p_r($GLOBALS); ?>
 -->
    	</we:ifWritten>
	<we:ifNotWritten type="object">
		Fehler!
	</we:ifNotWritten>
</we:ifVar>



<we:sessionLogout id="self">schliessen</we:sessionLogout></p>
</we:ifRegisteredUser>
**************************************************
</body>
</html></li>
Hat jemand eine Ahnung, was hier die Ursachen sein könnten. Vielen Dank.

staeubli

Beitragvon staeubli » Di 4. Jul 2006, 11:38

Hallo, per Zufall bin ich auf die Lösung gestossen

$objektidx = $GLOBALS["we_object"]["eingabe01"]->ObjectID;

muss richtig heissen:

$objektidx = $GLOBALS["we_object"]["eingabe01"]->ID;

Was ist denn der Unterschied zwischen ObjectID und ID?
MfG Daniel


Zurück zu „Kundenverwaltung“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste