+ Antworten
Ergebnis 1 bis 8 von 8

Thema: mosDBTable:: speichern eines Arrays

  1. #1
    Neu an Board
    Registriert seit
    18.11.2006
    Beiträge
    21
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard mosDBTable:: speichern eines Arrays

    Moin Allerseits,

    ich erstelle gerade ein anmeldeformular, mit diversen zusatzfunktionen.

    Mein problem ist, das ein Select Multiple in der abfrage enthalten ist. welches sich mit der dem Lösungsansatz

    class TEST extends mosDBTable {
    var $id = NULL;
    var $xxxxx = NULL;
    ...........
    function test(&$db){
    $this->mosDBTable('#__xxx', 'id', $db);
    }
    }

    nicht hinbekomme. Nun hab ich mich schon durch forum, die API sowie diversen components durchgelesen. Aber irgendwie keinen Ansatz gefunden.

    Also wie bekomm ich dieses array in den datenbank? Die einzelnen felder des array möcht ich gerne mit nem Komme getrennt eingetragen bekommen.

    Bin für jeden tipp dankbar.
    gruß helge

  2. #2
    Ex-Über-Mod Avatar von rico
    Registriert seit
    04.12.2005
    Ort
    Potsdam
    Alter
    47
    Beiträge
    1.699
    Bedankte sich
    237
    Erhielt 466 Danksagungen
    in 383 Beiträgen

    Standard

    1. Erstelle im Script eine neue Klasse, z.B.
    Code:
     $upload = new stdClass;
    2. Verarbeite den Request:

    Code:
    $fulltext		= mosGetParam( $_REQUEST, "fulltext" );	
    $upload->fulltext	= $fulltext;
    3.

    Code:
    $database->updateObject('#__komponente',$upload,'id'); // Update der DB oder
    $database->insertObject('#__komponente',$upload); // Reinschreiben in die DB
    4. Das wars.

    Gruß. Ricola
    Kleines Tutorial zum Objektorientierten Programmieren mit PHP

  3. #3
    Neu an Board
    Registriert seit
    18.11.2006
    Beiträge
    21
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Hu Ricola, danke schonmal für deine schnelle hilfe.

    allerdings klappt es auch irgendeinen grund nicht.
    Das sieht nun wie folgt bei mir aus

    Code:
    	
            global $database;
    	$row = new SAVE($database);
    	
    	$fee = mosGetParam( $_REQUEST, "fee" );	
    	$fee= implode(',', $fee) ;
            $row->fee= $fee;
    
    	$database->insertObject('#__component',$row); // Reinschreiben in die DB
    Die Klasse an sich funktioniert,

    Code:
    class SAVE extends mosDBTable {
    	var $id		=	NULL;
    	var $fee	=	NULL;
    	.....
    		
    	function save(&$db){	
    		$this->mosDBTable('#__component', 'id', $db);
    	}
    }
    und in $row->fee ist auch das gewünschte ergebnis enthalten.

    Müßte doch funktionieren oder?

    gruß helge

  4. #4
    Neu an Board
    Registriert seit
    27.02.2008
    Beiträge
    80
    Bedankte sich
    0
    Erhielt 4 Danksagungen
    in 4 Beiträgen

    Standard

    Zum speichern/auslesen eines arrays nimmt man eigentlich direct serialize()/unserialize(). Hat gegenüber dem manuellen zusammenfrickeln den Vorteil, dass es so ziemlich jeden Typ oder jedes Objekt speichern kann und nicht auf arrays beschränkt ist.

  5. #5
    Ex-Über-Mod Avatar von rico
    Registriert seit
    04.12.2005
    Ort
    Potsdam
    Alter
    47
    Beiträge
    1.699
    Bedankte sich
    237
    Erhielt 466 Danksagungen
    in 383 Beiträgen

    Standard

    Mh, also ich verwende die
    Code:
    class xyz extends mosDBTable { }
    eigentlich nur für die Speicherung der Daten im Backend. Im Frontend mache ich das so wie oben beschrieben: 1. Eigene Klasse , 2. Zuweisung, 3. Speicherung in der DB. Das geht bei mir ohne Probleme.

    Gruß. Ricola
    Kleines Tutorial zum Objektorientierten Programmieren mit PHP

  6. Erhielt Danksagungen von:


  7. #6
    Neu an Board
    Registriert seit
    18.11.2006
    Beiträge
    21
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    abend,

    ach das ganze krahm (2 und 3) kommt einfach in die classe, die ich dann mit new aufrufe.

    dann haben wir wohl aneinander vorbeigeredet.

    werd das morgen gleich mal testen.

    ansonsten recht herzlichen dank, mich hat das echt schon zu verzweiflug getrieben

    gruß helge

  8. #7
    Neu an Board
    Registriert seit
    18.11.2006
    Beiträge
    21
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Es hat funktioniert

    Danke Ricola, habe so entlich auch mal geblickt wie ich Datensätze zu einem zusammenfügen kann.

    Lösung für die Nachwelt

    Code:
            global $database;
    	$row = new SAVE($database);
    Code:
    class SAVE extends mosDBTable {
    	var $id		=	NULL;
    	var $fee	=	NULL;
    	.....
    		
    	function save($database){	
    	  $fee = mosGetParam( $_REQUEST, "fee" );	
    	  $fee= implode(',', $fee) ;
              $row->fee= $fee;
    
    	  $database->insertObject('#__component',$row); // Reinschreiben in die DB
    	}
    }

  9. #8
    Neu an Board
    Registriert seit
    18.11.2006
    Beiträge
    21
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Abend,

    ricola, du hattest geschrieben das du das im Backend das anders löst, naja nun bin ich dort angekommen.

    das klappt zwar auch so, scheint aber dort nicht die sauberste umsetzung zu sein.

    wäre schön wenn du mir hier auch nen tipp geben könntest

    gruß helge

    Hat sich erledigt, hatte vergessen $database global zu setzen

+ Antworten

Lesezeichen

Berechtigungen

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