+ Antworten
Ergebnis 1 bis 4 von 4

Thema: Doppelter Eintrag in die Datenbank

  1. #1
    Neu an Board Avatar von tomGB
    Registriert seit
    22.07.2009
    Beiträge
    51
    Bedankte sich
    11
    Erhielt 5 Danksagungen
    in 5 Beiträgen

    Frage Doppelter Eintrag in die Datenbank

    Hallo Forum,

    ich schreibe gerade ein Modul, das als Schnittstelle zwischen dem Cummunity Builder und VirtueMart dienen soll.

    Mein Problem ist, das ich den Eintrag in die DB von VirtueMart doppelt bekomme.

    Das Modul wird per ModulesAnywhere-v1.1.1 im content eingebunden.

    Kann es sein das ModulesAnywhere das Module 2mal asuführt?

    Hier mal der QuellCode.

    mod_cb_vm_interface.php:

    PHP-Code:
    <?php
    // no direct access
    defined'_VALID_MOS' ) or die( 'Restricted access' );
    echo 
    'Tom is here ID: '.$my->id.' <br />';
    require_once (
    dirname(__FILE__).DS.'helper.php');
    global 
    $mosConfig_offset$mosConfig_live_site$mainframe$my;
    $helper = new modCBVMInterfaceHelper();
    $manufacturerID $helper->getManufacturerID($my->username);
    if(
    $manufacturerID == 0){
        
    $manufacturerID $helper->createManufacturerID($my->username,$my->email);
    }
    echo 
    'ManIF: ' .$manufacturerID.'<br />';

    $action '';

    switch(
    $action){
        
        default:
            echo 
    'Action';
        break;
    }


    ?>
    helper.php:
    PHP-Code:
    <?php
        defined
    ('_JEXEC') or die('Restricted access');
        
        class 
    modCBVMInterfaceHelper{
            
            var 
    $db null;
            

            function 
    modCBVMInterfaceHelper(){
                
    $this->db JFactory::getDBO();
            }
            
            function 
    getMaxPictureNum($params){
                
    $maxNum 0;
                if (
    $params->get('max_image_num')){

                    
    $maxNum $params->get('max_image_num');
                }
                return 
    $maxNum;

            }
            
            function 
    getImages(){
                
    $query "SELECT * FROM #__vm_product ORDER BY product_id";
            }
            
            function 
    getManufacturerID($name){        
                
    $query "SELECT manufacturer_id FROM jos_vm_manufacturer WHERE mf_name = ".$name;
                
                
    $this->db->setQuery$query );
                
    $rows =$this->db->loadObjectList();
                if(
    $rows == 0){
                    return 
    0;    
                } else {
                    return 
    $rows->manufacturer_id;    
                }
            }
            
            function 
    createManufacturerID($name,$mail){            
                
    $query "INSERT INTO #__vm_manufacturer (manufacturer_id, mf_name,mf_email) VALUES (null,'$name','$mail')";
                if(
    $this->db->query()){
                    return 
    $this->db->insertid();
                } else {
                    echo 
    $this->db->getErrorMsg();
                    return 
    0;
                
                }
                
            }
        }

    ?>
    Ich bin für jede Hilfe dankbar.

    Grüße

    Tom

  2. #2
    War schon öfter hier
    Registriert seit
    04.03.2005
    Ort
    Gummersbach
    Beiträge
    194
    Bedankte sich
    11
    Erhielt 49 Danksagungen
    in 38 Beiträgen

    Standard

    Ist die Spalte manufacturer_id Primärschlüssel? Und wird dieser automatisch generiert?
    wenn nicht geht das nicht:
    Code:
    INSERT INTO #__vm_manufacturer (manufacturer_id, mf_name,mf_email) VALUES (null,'$name','$mail')
    und du hast immer 0 oder null als id;

    Ist das SQL
    Code:
    SELECT manufacturer_id FROM jos_vm_manufacturer WHERE mf_name = ".$name
    überhaupt korrekt? Müsste es nicht
    Code:
    SELECT manufacturer_id FROM jos_vm_manufacturer WHERE mf_name = '".$name . "'"
    sein?

    Für das ganze mal im phpMyadmin aus und schau was passiert.

    Zusätlich kannst du den Debugmodus in der Konfiguration von Joomla anschalten. Dann werden unterhalb deiner Komponente alle ausgeführten SQL Anweisungen angezeigt. Wird die Select Anweisung nur einmal aufgelistet, so ist evt die SQL Anweisung falsch.

  3. Erhielt Danksagungen von:


  4. #3
    Neu an Board Avatar von tomGB
    Registriert seit
    22.07.2009
    Beiträge
    51
    Bedankte sich
    11
    Erhielt 5 Danksagungen
    in 5 Beiträgen

    Standard

    Hallo borlander,
    Zitat Zitat von borlander Beitrag anzeigen
    Ist die Spalte manufacturer_id Primärschlüssel? Und wird dieser automatisch generiert?
    Ja, die Spalte manufacturer_id ist der Primärschlüssel und wird automatisch generiert.

    Zitat Zitat von borlander Beitrag anzeigen
    Für das ganze mal im phpMyadmin aus und schau was passiert.
    Ein Eintrag in der Tabelle. Die SQL Anweisung ist O.K.
    Zitat Zitat von borlander Beitrag anzeigen
    Zusätlich kannst du den Debugmodus in der Konfiguration von Joomla anschalten. Dann werden unterhalb deiner Komponente alle ausgeführten SQL Anweisungen angezeigt. Wird die Select Anweisung nur einmal aufgelistet, so ist evt die SQL Anweisung falsch.
    Werd ich probieren und mich dann nochmals melden. Ich vermute jedoch immer noch stark, dass es mit ModuleAnywhere zusammen hängt. Zur not mache ich eine Komponente anstelle eines Moduls machen.

    Danke fürs erste.

    Tom
    Probleme die man formulieren kann, können auch gelöst werden.

  5. #4
    Neu an Board Avatar von tomGB
    Registriert seit
    22.07.2009
    Beiträge
    51
    Bedankte sich
    11
    Erhielt 5 Danksagungen
    in 5 Beiträgen

    Daumen hoch gelöst

    OK,

    das Problem scheint bei ModulesAnyWhere zu liegen. Wenn ich das Query "per Hand" sende gehjt es.

    Werde jetzt doch eine Komponente erstellen.

    Danke

    Tom
    Probleme die man formulieren kann, können auch gelöst werden.

+ Antworten

Lesezeichen

Berechtigungen

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