+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Profil Komponente - Hilfe gesucht!

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

    Lächeln Profil Komponente - Hilfe gesucht!

    Hi,

    ich bin Software Entwickler und komme aus dem Bereich .net / Java / SQL. Seit ein paar Monaten beschäftige ich mich nun mit Joomla und bin dabei eine eigene Profil Komponente zu entwickeln. Zum Einen erstelle ich eine eigene Komponente, weil ich keine vorhandene gefunden habe die meinen Anforderungen entspricht; Zum Anderen möchte ich mir dadurch das Joomla KnowHow aneigenen.

    Ich habe einige Guides und Dokumentationen gelesen und dann losgelegt. Das meiste Funktioniert auf anhieb! Allerdings halte ich mich auch oft mit Kleinigkeiten auf, die mich nicht selten einen ganzen Tag beschäftigen.

    Deshalb suche ich einen Mentor, der mir hilft wenn ich trotz Doku und googlen nicht weiterkomme. Ideal wäre per IM, VoiceChat oder NetMeeting. Im Gegenzug helfe ich gerne in anderen Bereichen aus und teile die erstellte Komponente.

    Viele Grüße!

  2. #2
    KaSsi
    Gast

    Standard

    Profilkomponente im Sinne, dass jeder registrierte Benutzer seine eigene Seite mit ein paar Informationen hat? Es gibt viele kostenlose Joomla Extensions. Suche mal nach Community-Komponenten oder du bindest Facebook in deine Joomla Installation ein

  3. #3
    Moderator Avatar von Orpheus2510
    Registriert seit
    17.10.2006
    Beiträge
    14.144
    Bedankte sich
    164
    Erhielt 3.391 Danksagungen
    in 3.061 Beiträgen

    Standard

    Einen einzelnen Mentor wirst du hier nicht finden, eine solche verpflichtende Bindung geht hier wohl keiner ein. Aber du hast ein großes Forum an deiner Seite, in dem du auf deine Fragen Hilfe bekommst. Schneller noch, als ein einzelner Mentor dies könnte, da hier das KnowHow von tausenden Usern gebündelt ist und wird.
    Gruß, Orpheus2510
    Kein Support per PN! | Tutorial Migration J1.5 --> J2.5 | Joomla braucht dich!

  4. Erhielt Danksagungen von:


  5. #4
    Neu an Board
    Registriert seit
    17.01.2011
    Beiträge
    10
    Bedankte sich
    3
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Hi,
    dann werd ich einfach mal einen Punkt posten an dem ich nicht weiterkomme.
    Es ist mein erster Versuch eine Joomla MVC Komponente zu erstellen also seid nicht so hart mit mir ;D

    @KaSsi
    Ich habe mich für eine eigene Komponente entschieden, da es an sich keine Community ist. Jeder soll nur sein eigenes Profil im Frontend sehen können. Moderatoren sehen im Backend dafür alles. Der Hauptgrund ist aber, dass bei den meisten Komponenten die Daten nach dem Key Value Prinzip in der Datenbank gespeichert werden. Das erschwert komplexe SQL Abfragen.
    Und ein weiterer Grund ist, dass ich was dazu lernen möchte.^^


    Nun zu dem Problem:

    Ich habe im Backend eine Profil Verwaltung zum Editieren der Datensätze. Dabei gibt es eine 1 zu N Detailtabelle "Kinder":




    Ich habe in der Datenbank entsprechend einen Table angelegt in dem die "Kinder" gespeichert werden.


    Im Model versuche ich über eine quick and dirty Lösung die Vohandenen Kinder Datensätze zu löschen und dann die Neuen hinzuzufügen "function store_kinder($post)".

    Beim Speichern passiert nun folgendes:
    Das Delete wird ausgeführt. Das Insert Statement wird aber nur für neu hinzugefügte Kinder ausgeführt, und nicht für geänderte oder bereits vorhandene.
    Geänderte und vorhandene Kinder-Datensätze sind also gelöscht!

    Meiner Vermutung nach sind also im Post nur die neuen Kinder verfügbar. Ist das so? Wenn ja wieso? Und wie kann ich das lösen?

    PHP-Code:
    function store()
        {
            
    $row =& $this->getTable();

            
    $data JRequest::get'post' );
        
        
    $this->store_kinder($data);
        
        
    /* convert checkbox arrays from post into concated string 
           to store arrays in database table
        */
        
    foreach($data as $key => $value
        {
                if (
    is_array($value)) 
          {
            
    $data[$key] =  implode(';'$value);     
                }
            }        

            
    // Bind the form fields to the table
            
    if (!$row->bind($data)) {
                
    $this->setError($this->_db->getErrorMsg());
                return 
    false;
            }

            
    // Make sure the record is valid
            
    if (!$row->check()) {
                
    $this->setError($this->_db->getErrorMsg());
                return 
    false;
            }
            
            
    // Store the table to the database
            
    if (!$row->store()) {
                
    $this->setError$row->getErrorMsg() );
                return 
    false;
            }
        
            return 
    true;
        }
      
      
    // 02 MAY 2011: added kinder
      
    function store_kinder($post)
      { 
        
    $query "DELETE FROM `#__joeprofile_child` WHERE  `user_id` = ".$post['user_id']; 
        
    $this->_db->setQuery($query);
        
    $result $this->_db->query();       

        
    // fetchen der post Variablen k1name, k2name, k3name, k4name, k1geburtsdatum, k2geburtsdatum ... 
        
    for ($i=1$i 5$i++)
          {
          
    $kname $post["k" $i "name"];    
          
    $kgeburtsdatum =  $post["k" $i "geburtsdatum"];
          
    $kgeschlecht =  $post["k" $i "geschlecht"];
          if(
    $kname!="" || $kgeburtsdatum!="" || $kgeschlecht!="")
          {
          
    $query "INSERT INTO `#__joeprofile_child` (`name`,`geburtsdatum`,`geschlecht`,`user_id`)
                      VALUES('" 
    .mysql_real_escape_string($kname). "',STR_TO_DATE('" .mysql_real_escape_string($kgeburtsdatum)."','%d.%m.%Y')
                            ,'" 
    .mysql_real_escape_string($kgeschlecht)."',".$post['user_id'].")";
          
    $this->_db->setQuery($query);
          
    $result $this->_db->query();     
          }  
          
        }  
             
        return 
    true;
        
      } 
    MfG
    joe
    Angehängte Dateien
    Geändert von Koryu (11.05.2011 um 10:35 Uhr)

  6. #5
    Neu an Board
    Registriert seit
    08.03.2011
    Ort
    Reichenbach
    Beiträge
    74
    Bedankte sich
    3
    Erhielt 4 Danksagungen
    in 4 Beiträgen

    Standard

    Hey,

    zuerst einmal...

    $query = "DELETE FROM `#__joeprofile_child` WHERE `user_id` = ".$post['user_id'];
    Du solltst dich mal mit

    PHP-Code:
    JRequest::getVar 
    befassen...

    Also wenn ich das richtig verstehen löscht du erst deine Daten und fügst sie anschließend wieder ein(zumindest versuchst du das)?

    Kann man sowas nicht über "UPDATE" lösen?

    Dann vileicht mal noch was zum Bedienkomfort ;-)

    Für eine Geurtsdaten kannt du den von Joomla! zur verfügung stehenden Kalender nutzen. dafür kannst du auch das Format bestimmen.

    PHP-Code:
    $value '2009-06-25'$name 'kalender'$id 'kalender';   echo JHtml::_('calendar'$value$name$id); 
    LG Rene

  7. Erhielt Danksagungen von:


  8. #6
    Neu an Board
    Registriert seit
    17.01.2011
    Beiträge
    10
    Bedankte sich
    3
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Hi,

    danke, dass du dir die Zeit genommen hast mal drauf zu schauen!

    Mit einem Update kann man das auch lösen, allerdings muss ich dann ein hidden Id Feld für die Kinder hinzufügen, damit ich weiß welche Datensätze ich updaten muss. Wenn $data = JRequest::get( 'post' ); aber nur die Formulardaten zurückgibt, die geändert wurden, stehe ich beim gleichen Problem. Die hidden Id Felder werden nicht geändert und sind dann dort nicht verfügbar. Mit JRequest::getVar hatte ich auch keinen Erfolg, das probiere ich aber nochmal. Ich werde auch mal eine Log-Tabelle erstellen und debuggen was in der Laufzeit in $data bzw $post steht.

    Bei den Geburtsdaten hast du Recht, das ist momentan noch sehr schlecht! Ich dachte auch dran das mit 3 Comboboxen für Tag, Monat, Jahr zu lösen, der Kalender wäre eine Option.

    MfG
    Joe

  9. #7
    Neu an Board
    Registriert seit
    08.03.2011
    Ort
    Reichenbach
    Beiträge
    74
    Bedankte sich
    3
    Erhielt 4 Danksagungen
    in 4 Beiträgen

    Standard

    Naja, wenn ich das jetzt richtig verstanden habe könntest du doch das hidden feld einfügen und wenn das dann leer ist einen "insert" ausführen, ansonsten "update" der in dem hidden feld stehende id...oder steh ich grad voll auf dem schlauch? :-)
    LG Rene

  10. #8
    Neu an Board
    Registriert seit
    17.01.2011
    Beiträge
    10
    Bedankte sich
    3
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Zitat Zitat von igibob Beitrag anzeigen
    Naja, wenn ich das jetzt richtig verstanden habe könntest du doch das hidden feld einfügen und wenn das dann leer ist einen "insert" ausführen, ansonsten "update" der in dem hidden feld stehende id...oder steh ich grad voll auf dem schlauch? :-)
    das führt im endeffekt wieder zu dem selben problem.
    wenn in $post die hidden id immer leer ist werden nur inserts ausgeführt :/

  11. #9
    Neu an Board
    Registriert seit
    08.03.2011
    Ort
    Reichenbach
    Beiträge
    74
    Bedankte sich
    3
    Erhielt 4 Danksagungen
    in 4 Beiträgen

    Standard

    Wenn in $post die hidden id immer leer ist werden nur inserts ausgeführt :/
    Das wäre ja auch Sinn und Zweck der Sache und auch richtig. Denn wenn die in $post befindliche hidden-id nicht leer ist, soll ein Update und kein Insert ausgeführt werden.

    Sprich:

    Der Datensatz existiert, du rufst ihn auf, das hidden-id Feld wird mit der eigenen id gefüllt, du machst ein update.

    Der Datensatz existiert nicht, du erstellst einen Neuen Ds, das hidden-id Feld ist leer, du machst ein update.
    LG Rene

  12. #10
    Neu an Board
    Registriert seit
    17.01.2011
    Beiträge
    10
    Bedankte sich
    3
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    ist schon klar wie du das meinst

    das Problem lag aber an einer anderen Stelle.
    Habs eben mit Hilfe einer Debug Tabelle lösen können. Waren mehrere kleine Fehler mit der Datumsformatierung, die dann zu diesem merkwürdigem aber nun doch logisch Fehler geführt haben.

+ Antworten
Seite 1 von 2 1 2 LetzteLetzte

Lesezeichen

Berechtigungen

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