moinsen zusammen-
ich habe mir eine erste kleine f_extension gebastelt mithile des form ext tutorials von marlies cohen - ein formular, dessen inhalt in 2 tabellen einer db geschrieben wird.
drin sind die daten in der db, nur jetzt möchte ich mir die daten anzeigen lassen.
leider- auch nach 2 tagen intensiven gehirnschmalz-bemühens ist nicht viel rum gekommen.
hab mir das photomarathon und etliche andere extensions reingezogen & dieses forum durchforstet- fruchtlos.
für alle konstruktiven beiträge bin ich mehr als dankbar!
grüße m
<?php
require_once(PATH_tslib."class.tslib_pibase.php");
class tx_projectForm_pi1 extends tslib_pibase {
var $prefixId = "tx_projectForm_pi1";
var $scriptRelPath = "pi1/class.tx_projectForm_pi1.php";
var $extKey = "projectForm";
var $columns;
/**
* [Put your description here]
*/
function main($content,$conf) {
$this->conf=$conf;
$this->pi_setPiVarDefaults();
$this->pi_loadLL();
debug($conf);
if(isset($this->piVars['submit_button'])){
//wenn inhalt eingefügt wurde
# t3lib_div::debug($this->piVars);
$query = 'INSERT INTO tx_projectForm_projects (projectname,projectdescription,pid)
VALUES("'.addslashes($this-> piVars['DATA'] ['projectname']).'",
"'.addslashes($this-> piVars['DATA'] ['projectdescription']).'",
"'.$GLOBALS['TSFE']->id.'")';
$res = mysql(TYPO3_db, $query);
echo mysql_error();
//mein versuch der nicht funzt - in $res wird nichts reingeschrieben..
$query = 'SELECT * FROM tx_projectForm_projects ';
$res = mysql(TYPO3_db, $query);
if (!$result) echo "scheisse";
$out=array();
while($row = @mysql_fetch_assoc($res)){
$out[]=$row;
}
return $out;
} else {
$content='
<h3>Hier könnnen Projekte eingetragen werden</h3>
<form action="'$this-> pi_getPageLink($GLOBALS["TSFE"]->id).'" method="POST">
<input type="hidden" name="no_cache" value="1">
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td align="right">Projektname </td>
<td><input type="text" name="'.$this->prefixId. '[DATA][projectname]" value=" " size="50"></td>
</tr>
<tr>
<td align="right" valign="top">Beschreibung</td>
<td><textarea name="'.$this->prefixId.'[DATA] [projectdescription]" cols="50" rows="10"> </textarea></td>
</tr>
<tr>
<td></td>
<td align="left"><input type="submit" name="'.$this->prefixId.'[submit_button]" value="abschicken"></td>
</tr>
</table>
</form>
';
}
// gebe erstellten content zurück
return $this->pi_wrapInBaseClass($content);
}
}
if (defined("TYPO3_MODE") && $TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/projectForm/pi1/class.tx_projectForm_pi1.php"]) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/projectForm/pi1/class.tx_projectForm_pi1.php"]);
}
?>
ps. ich möchte im 2ten schritt dynamisch seiten generieren, als content soll der inhalt der beiden tabellen dienen- ideen? sollte ich das fe_plugin mit einem be_modul verbinden?
Habe ein ähnliches Problem. Habe bisher keine elegante Lösung finden können. Wollte es mit einem Php-Script lösen.
<?php
$ergebnis=mysql_query("select * from tx_projectForm_projects where pid='xy'");
$eintrag=mysql_result($ergebnis,"0","feldname");
echo $eintrag;
?>
Wichtig ist die pid(findest du in der Datenbank) und der Feldname den du auslesen möchtest(zB:projektname,etc).
Hoffe das bringt dich irgendwie weiter
danke für die antwort. aber wie es scheint, gab es bei mir bei der pid keine probleme - alle einträge haben die selbe pid (die pid der seite, wo sich mein formular befindet, da sie dadurch erzeugt werden)
ich habe es in der zwischenzeit doch noch gelöst bekommen und zwar wie folgt:
anstatt dem return $out; kommt folgendes:
while(list($c,$row)=each($out)){
$content.="<table border=1><tr><td>".($row["projectname"])."</td></tr>";
$content.="<tr><td>".($row["projectdescription"])."</td></tr></table><br><br>";
}
dann bekomme ich nach dem drücken des "abschicken" buttons alle einträge meiner db jeweils in einer tabelle aufgelistet.
was mich jetzt brennend interessiert - hat jemand eine idee wie man neue seiten erzeugen kann mit diesem inhalt?
heißt- dem php-skript irgendwie sagen, daß eine neue seite angelegt werden soll mit dem inhalt ?
Hallo nach langem Suche, bin ich auf diesen Eintrag gestoßen und habe gemerkt, dass du dich mit der gleichen Sachen beschäftigt hast. Es ist zwar schon lange her, aber ich dachte vielleicht kann ich ja mal fragen.
Ich möchte auch die erstellte Beiträge als eine neue Seite mit entsprechenden Einträgen im Menü wiedergeben. Hast du inzwischen ein Lösung finden können?
Für die Hilfe wäre ich sehr dankbar, da ich auch ein typo3-Anfänger bin und im Moment ein wenig auf die Erfahrung andere angewiesen bin.
<?php
/***************************************************************
* Copyright notice
*
* (c) 2004 Robert Rez (robert.rez@inconet.de)
* 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 'Output' for the 'inc_ads' extension.
*
* @author Robert Rez <robert.rez@inconet.de>
*/
require_once(PATH_tslib."class.tslib_pibase.php");
class tx_incads_pi1 extends tslib_pibase {
var $prefixId = "tx_incads_pi1"; // Same as class name
var $scriptRelPath = "pi1/class.tx_incads_pi1.php"; // Path to this script relative to the extension dir.
var $extKey = "inc_ads"; // The extension key.
var $conf;
/**
* [Put your description here]
*/
function main($content,$conf) {
global $TSFE, $TYPO3_DB;
$TSFE->set_no_cache();
$this->conf = $conf;
$this->pi_loadLL();
if ($this->conf['datapage'] == false){
$content = $this->pi_getLL('error');
} else {
$content = '';
//$content.= t3lib_div::view_array($conf[1]);
$content.= '<table border="0" cellspacing="15">';
foreach($this->createDatabaseArray() as $value){
$link = explode(' ', $value['link']);
$showLink = explode('/', $link[0]);
$content.= '<tr><td><a href="http://'.$link[0].'" target="'.$link[1].'" class="ad_title">'.$value['title'].'</a><br />';
$content.= '<a href="http://'.$link[0].'" target="'.$link[1].'" class="ad_content">'.$value['content'].'</a><br />';
$content.= '<a href="http://'.$link[0].'" target="'.$link[1].'" class="ad_link">'.$showLink[0].'</a><br /></td></tr>';
}
$content.= '</table>';
}
return $content;
}
function createDatabaseArray(){
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('title, content, link', 'tx_incads_ads', 'pid='.$this->conf['datapage'].$this->cObj->enableFields('tx_incads_ads'));
$menuItems=array(); // Collect each element in this array
while($row = mysql_fetch_assoc($res)) {
$i++;
$menuItems[$i]['title']=$row['title'];
$menuItems[$i]['content']=$row['content'];
$menuItems[$i]['link']=$row['link'];
}
return $menuItems;
}
}
if (defined("TYPO3_MODE") && $TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/inc_ads/pi1/class.tx_incads_pi1.php"]) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/inc_ads/pi1/class.tx_incads_pi1.php"]);
}
?>
Schau mal ob Dir das hier weiter hilft.
Wenn nicht. gebe Bescheid.
Viele Grüße
$this->conf['datapage']
ist aus dem Setupfield vom Template. Ist die PID in welcher die Datensätze sich befinden. Kannst es auch wehre PID=$this->conf['datapage'] weglassen, dann werden alle Datensätze der Extension angezeigt.
Hallo thebigtony,
vielen Dank für die Antwort!!!! 😃
Es gibt doch noch eine Frage: ist es nun eine zweite Ext, die für die Ausgabe der Daten sorgt? Wie kann ich dann die beiden mit einander kombinieren?
Wenn diese Frage für dich nicht zu unverschämt erscheint, würde ich mich über die Antwort sehr freuen.
Grüße und vielen Dank