Ergebnis 1 bis 3 von 3

Thema: Leere Felder in $_SESSION['FORM_DATA']

  1. #1
    Alter Contao-Hase
    Registriert seit
    28.09.2010.
    Beiträge
    1.368

    Standard Leere Felder in $_SESSION['FORM_DATA']

    Hallo,

    aus irgendwelchen Gründen befinden sich "manchmal" leere Felder im $_SESSION['FORM_DATA'] offenbar leere
    Einträge, so dass der SQL String z.B. folgendermaßen gebildet wird:

    INSERT INTO register_form (field_a, field_b, , field_c) VALUES ( ....

    Das führt logischerweise zu einem SQL-Fehler und das Schreiben in die DB schlägt fehl ... ich kann wie gesagt
    nicht nachvollziehen, wo das Feld da eingebaut wird, zumal es sich auch nicht immer an der gleichen stelle befindet.

    Wann genau wird denn der SQL-Stringe gebaut und kann ich z.B. dafür sorgen, dass $_SESSION['FORM_DATA'] von
    leeren Key-Feldern befreit wird?


    Vielen Dank

    Mark

  2. #2
    Alter Contao-Hase
    Registriert seit
    28.09.2010.
    Beiträge
    1.368

    Standard

    mh, in welcher Klasse wird denn der SQL-String zusammegesetzt, bevor er in die DB geschriebeb wird - das wäre vielleicht ein Ansatz?

    Danke

    Mark

  3. #3
    Contao-Fan Avatar von tom
    Registriert seit
    16.06.2009.
    Ort
    Ludwigsburg
    Beiträge
    385

    Standard

    Hallo Mark,

    Du sprichst offenbar von der Standard-/Core-Funktion ("Eingaben speichern"), nicht von der EFG-Funktion ("Daten im Modul Formular-Daten speichern") ?

    Dabei werden die zu speichernden Daten innerhalb der Form :: processFormData() "gesammelt"/aufbereitet:
    PHP-Code:
            // Store values in the database
            
    if ($this->storeValues && $this->targetTable != '')
            {
                
    $arrSet = array();

                
    // Add timestamp
                
    if ($this->Database->fieldExists('tstamp'$this->targetTable))
                {
                    
    $arrSet['tstamp'] = time();
                }

                
    // Fields
                
    foreach ($arrSubmitted as $k=>$v)
                {
                    if (
    $k != 'cc' && $k != 'id')
                    {
                        
    $arrSet[$k] = $v;
                    }
                }

                
    // Files
                
    if (!empty($_SESSION['FILES']))
                {
                    foreach (
    $_SESSION['FILES'] as $k=>$v)
                    {
                        if (
    $v['uploaded'])
                        {
                            
    $arrSet[$k] = str_replace(TL_ROOT '/'''$v['tmp_name']);
                        }
                    }
                }

                
    // HOOK: store form data callback
                
    if (isset($GLOBALS['TL_HOOKS']['storeFormData']) && is_array($GLOBALS['TL_HOOKS']['storeFormData']))
                {
                    foreach (
    $GLOBALS['TL_HOOKS']['storeFormData'] as $callback)
                    {
                        
    $this->import($callback[0]);
                        
    $arrSet $this->$callback[0]->$callback[1]($arrSet$this);
                    }
                }

                
    $this->Database->prepare("INSERT INTO " $this->targetTable " %s")->set($arrSet)->execute();
            } 
    Schöne Grüße
    Tom

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •