Zum Inhalt springen

Formular-Daten anzeigen

Erstellt am 9. Februar 2006 · 7 Antworten · letzte Antwort am 10. Februar 2006

Tags: Frage

greenbanana ·

Hallo,

ich habe ein PHP-Script geschrieben mit dem man (per Formular-Eingabe) überprüfen kann, ob ein USER auf zwei verschiedenen Datenbanken bereits existiert. Je nach dem kann man sich dann anmelden oder einen neuen USER-NAME auswählen.

Das ganze funktioniert auch tip top ausserhalb von Typo3.

Wenn ich nun daraus eine Extension erstelle, erhalte ich zwar die Eingabemaske, es wird mir jedoch nach dem "submit" nichts angezeigt.

Bitte bitte kann mir jemand helfen.

Bein funktionierender Code ausserhalb von typo3:

<?php 
// Verwendete Variablen:
$bad_icon = "<img src="http://xxxx/bad.gif" alt="" />";
$ok_icon =  "<img src="http://xxxx/ok.gif" alt="" />";
// $anzeige = "Bitte geben Sie ihren Wunsch Blogname an";
// end Verwendete Variablen

switch ($wunschurl) {
case "myweblog":

	// Verbindung zur Datenbank
	$connect_myweblog = mysql_connect("localhost","xxx","xxx"); 
	mysql_select_db("myweblog_lifetype", $connect_myweblog);

	// Auswahl der Spalte "user"
	$result = mysql_query("SELECT user FROM
							lifetype_users", $connect_myweblog);
						
	while ($row = mysql_fetch_array($result))
	{
		// Überprüfen ob der Wunsch-User-Nanme nicht bereits registriert wurde
		if ($row[user] == $wunschuser) {
			$status = "vergeben";
		}
	}
	if ($status == "vergeben") {
	  	$res_anzeige = $bad_icon."<br />";
		$res_anzeige .= "Der Blog: $wunschuser.$wunschurl.ch ist bereits vergeben";
	} else {
	  	$res_anzeige = $ok_icon."<br />";
		$res_anzeige .= "Der Blog: $wunschuser.$wunschurl.ch ist noch frei"."<br />";
		$res_anzeige .= "
		<a href="http://xxxx">jetzt anmelden</a>
		";
	}
    break;

case "blogit":
    //blogit.ch - Verbindung zur Datenbank
	$connect_blogit = mysql_connect("localhost","xxx","xxx"); 
	mysql_select_db("blogit_lifetype", $connect_blogit);
	
	// Auswahl der Spalte "user"
	$result = mysql_query("SELECT user FROM
							blogit_lifetype_users", $connect_blogit);
						
	while ($row = mysql_fetch_array($result))
	{
		// Überprüfen ob der Wunsch-User-Nanme nicht bereits registriert wurde
		if ($row[user] == $wunschuser) {
			$status = "vergeben";
		}
	}
	if ($status == "vergeben") {
	  	$res_anzeige = $bad_icon."<br />";
		$res_anzeige .= "Der Blog: $wunschuser.$wunschurl.ch ist bereits vergeben";
	} else {
	  	$res_anzeige = $ok_icon."<br />";
		$res_anzeige .= "Der Blog: $wunschuser.$wunschurl.ch ist noch frei"."<br />";
		$res_anzeige .= "
		<a href="http://xxx">jetzt anmelden</a>
		";
	}
    break;
}		
?>	
				<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
					<input type="hidden" name="no_cache" value="1" />
					<input name="wunschuser" type="text" size="20" maxlength="70" />.
					<select name="wunschurl">
					  <option value="myweblog">myweblog.xxx</option>
					  <option value="blogit">blogit.xxx</option>
					</select>
					<input type="submit" value="check" />
					</form>
	
		<?php print  $res_anzeige; ?>

Und so habe ich das versucht umzusetzen:

<?php
require_once(PATH_tslib.'class.tslib_pibase.php');

class tx_kiddoglifetypeusercheck_pi1 extends tslib_pibase {
	var $prefixId = 'tx_kiddoglifetypeusercheck_pi1';		// Same as class name
	var $scriptRelPath = 'pi1/class.tx_kiddoglifetypeusercheck_pi1.php';	// Path to this script relative to the extension dir.
	var $extKey = 'kiddog_lifetype_user_check_';	// The extension key.
	var $pi_checkCHash = TRUE;
	
	/**
	 * [Put your description here]
	 */
	function main($content,$conf)	{
		$this->conf=$conf;
		$this->pi_setPiVarDefaults();
		$this->pi_loadLL();
		
// Verwendete Variablen:
$bad_icon = "<img src="http://xxxx/bad.gif" alt="" />";
$ok_icon =  "<img src="http://xxx/ok.gif" alt="" />";
// $anzeige = "Bitte geben Sie ihren Wunsch Blogname an";
// end Verwendete Variablen

switch ($wunschurl) {
case "myweblog":

	// Verbindung zur Datenbank
	$connect_myweblog = mysql_connect("localhost","xxx","xxx"); 
	mysql_select_db("myweblog_lifetype", $connect_myweblog);

	// Auswahl der Spalte "user"
	$result = mysql_query("SELECT user FROM
							lifetype_users", $connect_myweblog);
						
	while ($row = mysql_fetch_array($result))
	{
		// Überprüfen ob der Wunsch-User-Nanme nicht bereits registriert wurde
		if ($row[user] == $wunschuser) {
			$status = "vergeben";
		}
	}
	if ($status == "vergeben") {
	  	$res_anzeige = $bad_icon."<br />";
		$res_anzeige .= "Der Blog: $wunschuser.$wunschurl.ch ist bereits vergeben";
	} else {
	  	$res_anzeige = $ok_icon."<br />";
		$res_anzeige .= "Der Blog: $wunschuser.$wunschurl.ch ist noch frei"."<br />";
		$res_anzeige .= "
		<a href="http://xxx">jetzt anmelden</a>
		";
	}
    break;

case "blogit":
    //blogit.ch - Verbindung zur Datenbank
	$connect_blogit = mysql_connect("localhost","xxx","xxx"); 
	mysql_select_db("blogit_lifetype", $connect_blogit);
	
	// Auswahl der Spalte "user"
	$result = mysql_query("SELECT user FROM
							blogit_lifetype_users", $connect_blogit);
						
	while ($row = mysql_fetch_array($result))
	{
		// Überprüfen ob der Wunsch-User-Nanme nicht bereits registriert wurde
		if ($row[user] == $wunschuser) {
			$status = "vergeben";
		}
	}
	if ($status == "vergeben") {
	  	$res_anzeige = $bad_icon."<br />";
		$res_anzeige .= "Der Blog: $wunschuser.$wunschurl.ch ist bereits vergeben";
	} else {
	  	$res_anzeige = $ok_icon."<br />";
		$res_anzeige .= "Der Blog: $wunschuser.$wunschurl.ch ist noch frei"."<br />";
		$res_anzeige .= "
		<a href="http://xxx">jetzt anmelden</a>
		";
	}
    break;
}		
	
		$content='
				<form action="'.$this-">pi_getPageLink($GLOBALS['TSFE']->id).'" method="POST">
					<input type="hidden" name="no_cache" value="1" />
					<input name="wunschuser" type="text" size="20" maxlength="70" />.
					<select name="wunschurl">
					  <option value="myweblog">myweblog.ch</option>
					  <option value="blogit">blogit.ch</option>
					</select>
					<input type="submit" name="'.$this-" />prefixId.'[submit_button]" value="'.htmlspecialchars($this->pi_getLL('submit_button_label')).'">
					</form>
				';
		$content .= $res_anzeige;
	
		return $this->pi_wrapInBaseClass($content);
	}
}



if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/kiddog_lifetype_user_check_/pi1/class.tx_kiddoglifetypeusercheck_pi1.php'])	{
	include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/kiddog_lifetype_user_check_/pi1/class.tx_kiddoglifetypeusercheck_pi1.php']);
}

?>

Ich komme wirklich nicht mehr weiter... Und ich bin mir sicher, dass es sich um Kleinigkeiten handelt.

Besten Dank an all diejenigen welche mir Helfen!

Gruss
GreenBanana

steffenk ·

den Code habe ich jetzt nicht überprüft, aber Du sagst ja es läuft.

Der Knackpunkt ist das Cache. Wenn Du also das php-script einbindest, musst Du unbedingt es ohne Cache machen
(Ext als USER_INT, Script als PHP_SCRIPT_INT)
Sonst wird die Seite aus dem Cache geholt, und da sind die POST-Daten nicht vorhanden.

greenbanana ·

hallo steffenk,

vielen Dank erstmals für die rasche Antwort. Kannst Du mir auch noch einen kleinen Tipp geben, wo ich diese Einstellungen machen kann?

Wäre Dir äusserst dankbar!!!

Gruss
GreenBanana

[edit] Nach längerem Suchen, bin ich mir jetzt nicht mehr sicher, ob Du mich richtig verstanden hast. Ich habe eine Frontend-Extension erstellt in welche ich obigen Code verwende. Das soll also nicht ein Script sein, dass per MARKER eingebunden wird, sondern als Content-Element! Ändert das was?

steffenk ·

In der Extension kannst Du das hier machen:

t3lib_extMgm::addPItoST43($_EXTKEY,'pi1/class.tx_skpagecomments_pi1.php','_pi1','list_type',0);

(ext_localconf.php)

Die 0 steht für Objekttyp USER_INT, die 1 wäre USER

USER_INT heisst, das die Extension nicht gecachet wird, auch wenn der Rest der Seite aus dem Cache kommt.

Du kannst das auch mal vorher austesten, in dem Du die Ext im Setup folgendes eingibst:

plugin.tx_yourextension_pi1 = USER_INT

greenbanana ·
t3lib_extMgm::addPItoST43($_EXTKEY,'pi1/class.tx_kiddoglifetypeusercheck_pi1.php','_pi1','list_type',0);

Diesen Eintrag habe ich aber bereits... komisch...

Gruss
Jürg

greenbanana ·

#angry# #angry# #angry# Mannnnnn das kann doch nicht so kompliziert sein... #angry# #angry# #angry#

Ich will ja nichts mehr, als diesen Code:

<?php

// Verwendete Variablen:
$bad_icon = "<img src="http://myweblog.ch/home/fileadmin/images/icons/bad.gif" alt="" />";
$ok_icon =  "<img src="http://myweblog.ch/home/fileadmin/images/icons/ok.gif" alt="" />";
// $anzeige = "Bitte geben Sie ihren Wunsch Blogname an";
// end Verwendete Variablen

switch ($wunschurl) {
case "myweblog":

	// myweblog.ch - Verbindung zur Datenbank
	$connect_myweblog = mysql_connect("localhost","xxx","xxx"); 
	mysql_select_db("myweblog_lifetype", $connect_myweblog);

	// Auswahl der Spalte "user"
	$result = mysql_query("SELECT user FROM
							lifetype_users", $connect_myweblog);
						
	while ($row = mysql_fetch_array($result))
	{
		// Überprüfen ob der Wunsch-User-Nanme nicht bereits registriert wurde
		if ($row[user] == $wunschuser) {
			$status = "vergeben";
		}
	}
	if ($status == "vergeben") {
	  	$res_anzeige = $bad_icon."<br />";
		$res_anzeige .= "Der Blog: $wunschuser.$wunschurl.ch ist bereits vergeben";
	} else {
	  	$res_anzeige = $ok_icon."<br />";
		$res_anzeige .= "Der Blog: $wunschuser.$wunschurl.ch ist noch frei"."<br />";
		$res_anzeige .= "
		<a href="http://myweblog.ch/myweblog/summary.php?op=RegisterStep0">jetzt anmelden</a>
		";
	}
    break;

case "blogit":
    //blogit.ch - Verbindung zur Datenbank
	$connect_blogit = mysql_connect("localhost","xxx","xxx"); 
	mysql_select_db("blogit_lifetype", $connect_blogit);
	
	// Auswahl der Spalte "user"
	$result = mysql_query("SELECT user FROM
							blogit_lifetype_users", $connect_blogit);
						
	while ($row = mysql_fetch_array($result))
	{
		// Überprüfen ob der Wunsch-User-Nanme nicht bereits registriert wurde
		if ($row[user] == $wunschuser) {
			$status = "vergeben";
		}
	}
	if ($status == "vergeben") {
	  	$res_anzeige = $bad_icon."<br />";
		$res_anzeige .= "Der Blog: $wunschuser.$wunschurl.ch ist bereits vergeben";
	} else {
	  	$res_anzeige = $ok_icon."<br />";
		$res_anzeige .= "Der Blog: $wunschuser.$wunschurl.ch ist noch frei"."<br />";
		$res_anzeige .= "
		<a href="http://blogit.ch/blogit/summary.php?op=RegisterStep0">jetzt anmelden</a>
		";
	}
    break;
}		
	
		$content='
				<form action="" method="POST">
					<input type="hidden" name="no_cache" value="1" />
					<input name="wunschuser" type="text" size="20" maxlength="70" />.
					<select name="wunschurl">
					  <option value="myweblog">myweblog.ch</option>
					  <option value="blogit">blogit.ch</option>
					</select>
					<input type="submit" value="check" />
					</form>
				';
				
		$content .= "xxxxx Resultat ANFANG xxxxx<br />";
		$content .= $res_anzeige;
		$content .= "<br />xxxxx Resultat ENDE xxxxx<br />";
		
		print $content;
		
?>

in einer Frontend-Extension anzeigen lassen. Für das habe ich den Code folgendermasse geändert:

- Zeile 84: print $content; entfernt
- Zeile 69: action angepasst!

<?php
/***************************************************************
*  Copyright notice
*
*  (c) 2005 Jürg Langhard (tschuege@greenbanana.ch)
*  All rights reserved
*
*  This script is part of the TYPO3 project. The TYPO3 project is
*  free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
*
*  The GNU General Public License can be found at
*  http://www.gnu.org/copyleft/gpl.html.
*
*  This script is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
 * Plugin 'lifetype user check' for the 'kiddog_lifetype_user_check_' extension.
 *
 * @author	Jürg Langhard <tschuege@greenbanana.ch>
 */


require_once(PATH_tslib.'class.tslib_pibase.php');

class tx_kiddoglifetypeusercheck_pi1 extends tslib_pibase {
	var $prefixId = 'tx_kiddoglifetypeusercheck_pi1';		// Same as class name
	var $scriptRelPath = 'pi1/class.tx_kiddoglifetypeusercheck_pi1.php';	// Path to this script relative to the extension dir.
	var $extKey = 'kiddog_lifetype_user_check_';	// The extension key.
	
	/**
	 * [Put your description here]
	 */
	function main($content,$conf)	{
		$this->conf=$conf;
		$this->pi_setPiVarDefaults();
		$this->pi_loadLL();
	
// Verwendete Variablen:
$bad_icon = "<img src="http://myweblog.ch/home/fileadmin/images/icons/bad.gif" alt="" />";
$ok_icon =  "<img src="http://myweblog.ch/home/fileadmin/images/icons/ok.gif" alt="" />";
// $anzeige = "Bitte geben Sie ihren Wunsch Blogname an";
// end Verwendete Variablen

switch ($wunschurl) {
case "myweblog":

	// myweblog.ch - Verbindung zur Datenbank
	$connect_myweblog = mysql_connect("localhost","xxx","xxx"); 
	mysql_select_db("myweblog_lifetype", $connect_myweblog);

	// Auswahl der Spalte "user"
	$result = mysql_query("SELECT user FROM
							lifetype_users", $connect_myweblog);
						
	while ($row = mysql_fetch_array($result))
	{
		// Überprüfen ob der Wunsch-User-Nanme nicht bereits registriert wurde
		if ($row[user] == $wunschuser) {
			$status = "vergeben";
		}
	}
	if ($status == "vergeben") {
	  	$res_anzeige = $bad_icon."<br />";
		$res_anzeige .= "Der Blog: $wunschuser.$wunschurl.ch ist bereits vergeben";
	} else {
	  	$res_anzeige = $ok_icon."<br />";
		$res_anzeige .= "Der Blog: $wunschuser.$wunschurl.ch ist noch frei"."<br />";
		$res_anzeige .= "
		<a href="http://myweblog.ch/myweblog/summary.php?op=RegisterStep0">jetzt anmelden</a>
		";
	}
    break;

case "blogit":
    //blogit.ch - Verbindung zur Datenbank
	$connect_blogit = mysql_connect("localhost","xxx","xxx"); 
	mysql_select_db("blogit_lifetype", $connect_blogit);
	
	// Auswahl der Spalte "user"
	$result = mysql_query("SELECT user FROM
							blogit_lifetype_users", $connect_blogit);
						
	while ($row = mysql_fetch_array($result))
	{
		// Überprüfen ob der Wunsch-User-Nanme nicht bereits registriert wurde
		if ($row[user] == $wunschuser) {
			$status = "vergeben";
		}
	}
	if ($status == "vergeben") {
	  	$res_anzeige = $bad_icon."<br />";
		$res_anzeige .= "Der Blog: $wunschuser.$wunschurl.ch ist bereits vergeben";
	} else {
	  	$res_anzeige = $ok_icon."<br />";
		$res_anzeige .= "Der Blog: $wunschuser.$wunschurl.ch ist noch frei"."<br />";
		$res_anzeige .= "
		<a href="http://blogit.ch/blogit/summary.php?op=RegisterStep0">jetzt anmelden</a>
		";
	}
    break;
}		
	
		$content='
				<form action="'.$this-">pi_getPageLink($GLOBALS['TSFE']->id).'" method="POST">
					<input type="hidden" name="no_cache" value="1" />
					<input name="wunschuser" type="text" size="20" maxlength="70" />.
					<select name="wunschurl">
					  <option value="myweblog">myweblog.ch</option>
					  <option value="blogit">blogit.ch</option>
					</select>
					<input type="submit" name="'.$this-" />prefixId.'[submit_button]" value="'.htmlspecialchars($this->pi_getLL('submit_button_label')).'">
					</form>
				';
				
		$content .= "xxxxx Resultat ANFANG xxxxx<br />";
		$content .= $res_anzeige;
		$content .= "<br />xxxxx Resultat ENDE xxxxx<br />";
	

		return $this->pi_wrapInBaseClass($content);
	}
}



if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/kiddog_lifetype_user_check_/pi1/class.tx_kiddoglifetypeusercheck_pi1.php'])	{
	include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/kiddog_lifetype_user_check_/pi1/class.tx_kiddoglifetypeusercheck_pi1.php']);
}

?>

[edit]
Unter http://myweblog.ch/home/index.php?id=41 kann man sehen wie es aussehen sollte! Oberer Kasten ist die Extension, und der Untere ist ein iFrame der funktionierenden Datei.

Bitte keinen Unfug auf der Page betreiben. Es werden alle neuregistrierten Blogs wider gelöscht vor dem Start des Blog-Portals. DANKE

steffenk ·

okay, Du liest ja nicht die Post-Variablen aus, so steht in $wunschurl nie was drin!

$wunschurl=$_REQUEST['wunschurl']; wär die einfache Variante.

greenbanana ·

steffenk Du bist der Beste!!!

Manchmal liegt die Lösung ja soooo nahe... Ich wusste nicht, dass man übergebene Variablen noch explizit auslesen muss. Ich habe die Variablen nun so ausgelesen wie dus mir geraten hast:

//##########################################################	
// Übergebene Variablen:

$wunschurl=$_REQUEST['wunschurl'];
$wunschuser=$_REQUEST['wunschuser'];

Und siehe Da! ES FUNKTIONIERT!!!!

BESTEN DANK 🙂