Hallo zusammen,
hab grad echt ein Problem. Daten aus einer Form sollen per AJAX in die Datenbank reingeschrieben werden. Verwendet wird hier jQuery.
Problem:
Wenn meine ajax.php aufgerufen wird mit folgendem Inhalt:
<?php
$fields_arr = Array(
'playsince'=>$_POST['playsince'],
'lesson'=>$_POST['lesson'],
'openfor'=>$_POST['openfor'],
'creativity'=>$_POST['creativity'],
);
$GLOBALS['TYPO3_DB']->INSERTquery(
'tx_sfwsfmitglieder_instruments',
$fields_arr
);
Hab so das Gefühl, dass die ajax.php komplett leer aufgerufen wird, also ohne die ganzen TYPO3-Funktionen. Jetzt natürlich meine Frage, was muss ich VOR diesen ganzen Daten eintragen, damit mein Script auch funktioniert.
Einfach include(class.t3lib_db.php)...wird ja nicht funktionieren, da ich ja auch noch die ganzen DB-Konstanten brauche.
Vielleicht habt Ihr ja noch eine Idee.
Stefan
Hallo,
das stichwort lautet eID und bitte prüfe die übermittelten variablen vorm insert!!
georg
njag njag njag...eId und eID ist schon was anderes :-)
Danke auf jeden Fall für den Tipp. Daten werden zwar in die DB reingeschrieben, aber da fehlen noch cruser_id und diese ganzen Datumswerte (Zeitstempel)...aber das bekomm ich schon hin.
Mit übermittelte Daten checken meinst du bestimmt den Schutz vor SQL-Injection und so'n Kram, oder? Ich mein ich hätt diesbzgl. auch schon mal eine TYPO3-Doku gesehen...muss mal suchen, oder hast du sie grad in den Favoriten?
Stefan
String mit fullQuoteString umwandeln
Wird automatisch erledigt, wenn man t3lib_DB::execINSERTquery() oder tslib_cObj:😃BgetInsert() Daten in die Datenbank schreibt.
(@froemken: die Funktion tslib_cObj:😃BgetInsert() belegt auch noch die Felder mit "diesen ganzen Datumswerten")
Zahlen in Integer umwandeln
... ist aber uneingeschränkt empfehlenswert.
Also das Script wird ja immer komplexer:
if (!defined ('PATH_typo3conf')) die ('Could not access this script directly!');
// Initialize FE user object:
$feUserObj = tslib_eidtools::initFeUser();
// Connect to database:
tslib_eidtools::connectDB();
//Content-Object einbinden
require_once(PATH_tslib . "class.tslib_content.php");
//$cObj =t3lib_div::makeInstance('tslib_cObj');
$cObj = new tslib_cObj();
$fields_arr = array(
'playsince'=>$_POST['playsince'],
'lesson'=>$_POST['lesson'],
'openfor'=>$_POST['openfor'],
'creativity'=>$_POST['creativity']
);
$cObj->DBgetInsert (
'tx_sfwsfmitglieder_instruments',
45,
$fields_arr,
'playsince,lesson,openfor,creativity',
$doExec = TRUE
);
vielen Dank auch für den Funktionsvorschlag. Zumindest gibt er keine Fehlermeldung aus, aber die Systemfelder sind trotzdem leer. Vermute, dass vorher noch etwas geladen werden muss, damit die Funktion auf diese Felder zugreifen kann.
Ne Idee?
Stefan
setz einfach tstamp => time(), crdate => time() und fertig.
cruser_id wird in dem fall leer bleiben weils ja kein be-user einträgt
und anstatt $_POST lieber t3lib_div::_GP(var) nehmen...
Gruß Manfred
Da hast du absolut Recht...hatte bei der Fehlersuche Stück für Stück sämtliche TYPO3-Funktionen wieder durch den PHP-Standard ersetzt.