Zum Inhalt springen

Problemchen mit Variablen....

Erstellt am 29. Januar 2004 · 11 Antworten · letzte Antwort am 11. Februar 2004

Tags: Frage

Unbekannter Benutzer ·

Hallo zusammen

Auf meiner Seite habe ich das Plugin PHP_Page_Content
eingefügt. Nun möchte ich auf einer Seite Typ PHP...
gerne ein Formular machen was die Eingabe Felder an
ein externes Script schickt. Dieses Script generiert dann
in einer weiteren Typo-Seite die Hidden-fields mit den ent-
sprechenden Werte.
Was allerdings nicht geht (sobald in Typo3) ist die echo
funktion um den Wert auch anzeigen zu lassen.

<?php echo field_forwarder(); ?> //legt die hidden fields mit value an
<p>Please fill in the following information</p>
Address: <?php echo $cust_address; ?><BR>
Phone: <?php echo $cust_phone; ?><BR>

Wenn ich das in eine eigene .php seite einbinde und teste
wird der Inhalt wunderbar angezeigt aber sobald ich das
in Typo3 einbinde kriege ich keine variablen anzeige.

Weiss da jemand wo der Bug ist....?

Danke und Gruss peay

maxhb ·

Hi!

peay schrieb

Was allerdings nicht geht (sobald in Typo3) ist die echo
funktion um den Wert auch anzeigen zu lassen.

Na Peay, wieder unterwegs in Sachen typo3?!😉
Dein Problem liegt daran begründet, dass Du nicht einfach Ausgaben per echo o.ä. machen solltest. Statt dessen einfach Deine Ausgabe als Rückgabewert deklarieren:

Statt:

echo "<input type="text" value="" . $myVar . "">";

Muss es folgendermassen lauten:

return"<input type="text" value="" . $myVar . "">";

Als am Besten alle Ausgaben einer Variablen zuweisen a la $content.=$newcontent und dann per return an Typo3 zurückgeben.

CU
maxhb

Unbekannter Benutzer ·

Hallo maxhb

Was heisst hier wiedermal unterwegs...
Bin in letzter Zeit nur mit Typo3 beschäftigt. 😃

Momentan versuche ich ein mehrseitiges Formular für
einen Kunden in ne Typo3 Seite einzubauen. Allerdings
mit recht viel mehr Gegenwind als ich zunächst erwartet
hatte. 🙁

Leider ist das Grundproblem , dass mehrseitige Formulare von Typo3 nicht direkt unterstützt wird.
Zitat - robert.meyer -

Nun versuche ich mittels nem hübschen Script was ich
gefunden habe =>see link
sowas einzubinden.
Wenn ich das ganze extern (ohne Typo) mache, klappt's
wunderbar... Sobald ich aber derselbe code in Typo ein-
binde werden zwar die Hidden Fields in der Seite generiert
aber ich kann diese Werte nicht echoen.... 🙁

Ich könnte das natürlich mit IFrame2 einbinden, aber
das wird ja nicht von allen Browsern unterstützt...
und ich fänd's auch besser wenn's richtig in Typo3 gemacht
werden könnte.
Seit ich in diesem Zusammenhang am Suchen/Posten bin
habe ich doch schon die eine oder andere Reaktion bekommen
Hey...das möcht ich auch

Was meinst du...kriegt man das mit diesem Script hin?
Ich find's nämlich echt gut

CU peay

Übrigens...müsste es nicht heissen:

Since light travels faster than sound,
people appear bright until you hear them speak.

maxhb ·
peay schrieb

Was heisst hier wiedermal unterwegs...
Bin in letzter Zeit nur mit Typo3 beschäftigt. 😃

I know!

peay schrieb

Was meinst du...kriegt man das mit diesem Script hin?
Ich find's nämlich echt gut

Werde ich mir mal anschauen, aber einfach so ein "normales" PHP-Script einbinden geht unter Typo3 meist nicht, da sind eigentlich immer Anpassungen notwendig, siehe echo --> return.

peay schrieb

Übrigens...müsste es nicht heissen:

Since light travels faster than sound,
people appear bright until you hear them speak.

Hmm, man soll nicht alles per Cut & Paste übernehmen, was man so findet 😉

CU
maxhb

Unbekannter Benutzer ·

ich weiss das es nicht so einfach ist bestehende scripts
zu übernehmen...aber der ansatz muss ja schon mal
gut sein wenn das script die Hidden Fields in der Seite
generieren kann.... 😉

Würde mich aber freuen wenn du dir das ganze mal
anschauen könntest und mir wieder nen feedback
wie's so ausschaut.

Vielen Dank erstmal
peay

maxhb ·
peay schrieb

Würde mich aber freuen wenn du dir das ganze mal
anschauen könntest und mir wieder nen feedback
wie's so ausschaut.

Werde ich auch gerne machen, allerdings weiss ich nicht, ob ich diese Woche noch dazu kommen werde, die Hütte brennt, soll heissen Kundentermin bis Samstag 😉

CU
maxbh

Unbekannter Benutzer ·

Hallo....

Ich hab's mal so quick and dirty mit einem externen
Formular gelöst.
d.h. Formular mit "include php script" ruft nächstes auf,
usw. bis komplett anzeige aller Felder kommt.
Und dieses Formular mittels IFRAME2 in Typo3 eingefügt.
Klappt....!

Wenn ich nun den Inhalt des Formulars (was ja ein PHP-
Script ist) direkt in Typo3 als Seitentyp PHP einfügen will,
klappt's nur begrenzt.
Heisst: die Tabellen werden aufgebaut, und die gemachten
Einträge in der nächsten Seite als Hidden Fields eingefügt.
Aber die Werte dieser Hidden Fields kann ich nicht anzeigen lassen.

Hier mal so ein Formular:

<?php
include ('fileadmin/euromobi/scripts/fieldforwarder.php');
echo"
<p>Bitte geben Sie uns einige Angaben über Ihre Person:</p>
<FORM METHOD="POST" ACTION="index.php?id=28">
";
echo field_forwarder();
echo "
<table width="500">
<tr>
<td width="100" colspan="3">
Name:
</td>
<td>
<INPUT TYPE="text" SIZE="30" name="kunde_name" value="$kunde_name"><BR>
</td>
</tr>
<tr>
<td colspan="3">
Vorname:
</td>
<td>
<INPUT TYPE="text" SIZE="30" name="kunde_vorname" value="$kunde_vorname"><BR>
</td>
</tr>
<tr>
<td colspan="3">
Firma:
</td>
<td>
<INPUT TYPE="text" SIZE="30" name="kunde_firma" value="$kunde_firma"><BR>
</td>
</tr>
<tr>
<td colspan="3">
Strasse:
</td>
<td>
<INPUT TYPE="text" SIZE="30" name="kunde_strasse" value="$kunde_strasse"><BR>
</td>
</tr>
/-----schnipp------/
.
.
/-----schnapp------/
<tr>
<td colspan="3">
</td>
<td>
";
echo "
<INPUT TYPE="submit" name="submit" value="Weiter">
</td>
</tr>
</table>
</FORM>
";
?>

und dann das Anzeige Formular:

<?php
include ('fileadmin/euromobi/scripts/fieldforwarder.php');
echo"
<FORM METHOD="POST" ACTION="index.php?id=22">
";
echo field_forwarder();
echo "
<table width="576" border="0" cellspacing="0" cellpadding="0">
<tr>
<td colspan="6" width="648">Bitte kontrollieren Sie Ihre Angaben:</td>
</tr>
<tr>
<td width="132">Name</td>
<td width="132"><input type="text" value="$kunde_name" size="20" border="0"></td>
<td width="60">Vorname</td>
<td width="132"><input type="text" value="$kunde_vorname" size="20" border="0"></td>
<td width="60">Firma</td>
<td width="132"><input type="text" value="$kunde_firma" size="20" border="0"></td>
</tr>
<tr>
<td width="132">Strasse</td>
<td width="132"><input type="text" value="$kunde_strasse" size="20" border="0"></td>
/-----schnipp------/
.
.
/-----schnapp------/
</tr>
<tr>
<td colspan="3" width="300">
<div align="center">
";
echo "
<input type="submit" name="submit" value="Korrigieren" border="0"></div>
</td>
<td colspan="3" width="300"></td>
</tr>
</table>
<hr>

Ich weiss, Ich weiss maxhb hat mir ja gesagt:

maxhb schrieb

Statt:
Code:
echo "<input type="text" value="" . $myVar . "">";

Muss es folgendermassen lauten:
Code:
return"<input type="text" value="" . $myVar . "">";

Aber wenn ich das so mit RETURN Anweisung
versuche einzubauen wird gar nichts angezeigt.

Irgend ne Idee.....?

Gruss peay

Unbekannter Benutzer · · Beste Antwort

Hat da echt niemand ne Idee wie dieses
Problem zu lösen ist.

Da die meisten Browser den IFRAME nicht unterstützen
wäre es echt toll wenn solche Funktionalitäten in Typo3
integriert werden könnten.

CU peay

seabear ·

Ich habe folgendes probiert und es funktioniert scheinbar auch: Ich übergebe die Variablen mit einem "HIDDEN" - Feld um sie bei zweiten Aufruf benutzen und wieder in ein solches Feld übergenen kann. Auf meiner Testinstallation zu hause habe ich die globals innerhalb der function main() definiert und es funktionierte, auf dem Server meines Providers musste ich dann die global-Festlegungen vor dem Aufruf von main() vornehmen.
Hier mein etwas abgespecktes php-Script:
function main($content,$conf){
$this->conf=$conf; //$conf besitzt den Wert 'Array'
$this->pi_setPiVarDefaults();
$this->pi_loadLL();

include("typo3conf/localconf.php");
$this->page_id=$GLOBALS["TSFE"]->id;
$this->pic_html_path="uploads/tx_ehemaligengallerie/";
echo $nextpage."jkg";
global $nextpage,$vorname,$nachname,$wohnort,$strasse,$memory; // vor oder nach der Definition der Funktion main(), ausprobieren !
if ($nextpage=="") {
$content="<form name="formular" action="".$this->pi_getPageLink($GLOBALS["TSFE"]->id)."&type=1" method="POST">
";
$content.="<P>Vorname: <INPUT TYPE="TEXT" NAME="vorname"></P>";
$content.="<P>Name:<INPUT TYPE="TEXT" NAME="nachname"></P>";
$content.="<INPUT TYPE="HIDDEN" name="nextpage" value="">";
$content.="<INPUT TYPE="SUBMIT" NAME="Submit1" VALUE="O.k." onClick="document.formular.nextpage.value='seite2'">
";
$content.="</form>";
}

if ($nextpage=="seite2") {
$daten=$vorname.",".$nachname;
$content="<form name="formular" action="".$this->pi_getPageLink($GLOBALS["TSFE"]->id)."&type=1" method="POST">
";
$content.="<P>Wohnort: <INPUT TYPE="TEXT" NAME="wohnort"></P>";
$content.="<P>Straße: <INPUT TYPE="TEXT" NAME="strasse"></P>";
$content.="<INPUT TYPE="HIDDEN" name="memory" value="".$daten."">"; //übergibt die Daten aus dem ersten Formular an die dritte Seite
$content.="<INPUT TYPE="HIDDEN" name="nextpage" value="">";
$content.="<INPUT TYPE="SUBMIT" NAME="Submit1" VALUE="O.k." onClick="document.formular.nextpage.value='seite3'">
";
$content.="</form>";
}

if ($nextpage=="seite3") {
$daten=$memory.",".$wohnort.",".$strasse;
/* hier kann man nun aus dem String ein Array erzeugen,
die einzelnen Daten in die Datenbank schreiben oder
im Browserfenster ausgeben ... */
$content="<form name="formular" action="".$this->pi_getPageLink($GLOBALS["TSFE"]->id)."&type=1" method="POST">
";
$content.="<p>".$daten."</p>";
$content.="<INPUT TYPE="HIDDEN" name="nextpage" value="">";
$content.="<INPUT TYPE="SUBMIT" NAME="Submit1" VALUE="Fertig" onClick="document.formular.nextpage.value=''">
";
$content.="</form>";
}
return $this->pi_wrapInBaseClass($content);
}

Hoffe es hilft! :o

seabear ·

Ich habe etwas vergessen:
1. ) Man muss den Seitencache deaktivieren
2.) Natürlich muss man die globals innerhalb von main() festlegen, sonst erhält man einen Fehler

Viel Glück, wenn's noch interessiert ! 😉

Unbekannter Benutzer ·

Hallo seabear

Vielen Dank für dein Tipp...

Leider krieg ich das nicht auf die Reihe.... 😢

Wenn ich dein Code als Seiten Typ "PHP Script" einbinde
erhalte ich ne leere Seite
und wenn ich das als ext. PHP Script einbinden will ebenfalls.

Kann mir da jemand einbisschen auf die Sprünge helfen?

Vielen dank peay