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

Thema: Neue Tabelle in mysql für die EAN's?

  1. #1
    War schon öfter hier
    Registriert seit
    19.08.2009
    Beiträge
    126
    Bedankte sich
    8
    Erhielt 7 Danksagungen
    in 6 Beiträgen

    Beitrag Neue Tabelle in mysql für die EAN's?

    Guten Morgen,

    ich benötige ein zusätzliches Feld in der Datenbank für die EAN's.
    Dieses Feld soll dann wider rum von CSVi - Virtuemart erkannt werden. (update von available fields).
    Bevor ich wild drauf los arbeite, fand ich es vernünftiger erstmal zu erfragen wie ich am besten eine Tabelle erstelle und auf was ich achten muss.

    P.S.: Sicherung haben wir natürlich schon gemacht.

    Grüße

    brockda

  2. #2
    War schon öfter hier
    Registriert seit
    14.07.2010
    Ort
    Cottbus
    Beiträge
    132
    Bedankte sich
    0
    Erhielt 56 Danksagungen
    in 50 Beiträgen

    Standard

    Recht einfach realisierbar...

    Einfach in die Tabelle 'jos_vm_product' eine weitere Spalte mit bsp. dem Namen 'ean' einfügen mit folgendem Befehl:

    ALTER TABLE `jos_vm_product` ADD `ean` VARCHAR(13) NOT NULL AFTER `product_id`;

    Fügt in besagte Tabelle eine Spalte mit Namen 'ean' und einer Länge von 13 Zeichen nach der Spalte mit dem Namen 'product_id' ein, wobei der Wert nicht Null sein darf. Falls du auch Produkte anlegen möchtest, denen du noch keine EAN zuweisen magst, lass das 'NOT NULL' weg.

    In der Datei administrator\components\com_virtuemart\html\produ ct.product_list.php
    gibt es einen Codeabschnitt etwa so:
    PHP-Code:
    // Check to see if this is a search or a browse by category
    // Default is to show all products
    if (!empty($category_id) && empty( $product_parent_id)) {
        
    $list  "SELECT #__{vm}_category.category_name,#__{vm}_product.product_id,#__{vm}_product.product_name, 
    Dort einfach hinzufügen: '#__{vm}_product.ean' <-- Damit stellst du sicher, dass er (wenn du deine Produkte im Backend anzeigen lässt) auch die EANs aus der Datenbank mit ausliest.

    In der selben Datei gibt es eine weitere Codestelle:
    PHP-Code:
    // these are the columns in the table
    $columns = Array(  '#' => '',
                    
    "<input type=\"checkbox\" name=\"toggle\" value=\"\" onclick=\"checkAll(".$num_rows.")\" />" => "",
                    
    $VM_LANG->_('PHPSHOP_PRODUCT_LIST_SKU') => "width=\"15%\"",
                    
    $VM_LANG->_('PHPSHOP_PRODUCT_LIST_NAME') => "width=\"10%\""
    Dort diese Zeile einfügen: '$VM_LANG->_('PHPSHOP_PRODUCT_EAN') => "width=\"5%\"",' <-- Erschafft im Backend die Spalte für die EANs

    Weiter unten eine weitere Codestelle in dieser Datei:
    PHP-Code:
    // The product sku
            
    $listObj->addCell$db->f("product_sku") );
            
    // The link to the product form / to the child products
            
    if( $vmLayout == 'standard') {
                
    $tmpcell vmCommonHTML::hyperLink$link$text'''Edit: '.$text );
            } else {
                
    $tmpcell vmCommonHTML::hyperLink($link$text'''Edit: '.$text'onclick="parent.addSimplePanel( \''.$db->getEscaped($db->f("product_name")).'\', \''.$link.'\' );return false;"');
            }
            
            if( 
    $ps_product->parent_has_children$db->f("product_id") ) ) {
                
    $tmpcell .= "&nbsp;&nbsp;&nbsp;<a href=\"";
                
    $tmpcell .= $sess->url($_SERVER['PHP_SELF'] . "?page=$modulename.product_list&amp;product_parent_id=" $db->f("product_id"));
                
    $tmpcell .=  "\">[ ".$VM_LANG->_('PHPSHOP_PRODUCT_FORM_ITEM_INFO_LBL'). " ]</a>";
            }
            
    $listObj->addCell$tmpcell ); 
    Dort diese Zeile einfügen: '$listObj->addCell( $db->f("ean") );' <-- Holt sich für die Tabelle im Backend die EANs zu den Produkte und fügt sie in die Spalte ein.

    In der Datei: administrator\components\com_virtuemart\language\c omon\german.php und germani.php

    Diese Zeile einfügen: 'PHPSHOP_PRODUCT_EAN' => 'EAN', <-- mit Komma, falls du sie irgendwo rein haust, ohne Komma, falls du sie ans Ende der Liste schreibst, dann aber nicht vergessen noch das Komma in der Zeile davor zu setzen Bestimmt im Übrigen den Titel deiner Tabellenspalte.

    Jetzt willst du natürlich die EAN auch im Backend ändern, bzw. erstmal für die Produkte eintragen können.
    Dazu die Datei öffnen: administrator\components\com_virtuemart\html\produ ct.product_form.php

    Da ist eine Codestelle zu finden:
    PHP-Code:
    <tr class="row0"> 
                          <td width="21%"><div style="text-align:right;font-weight:bold;">
                              <?php echo $VM_LANG->_('PHPSHOP_PRODUCT_FORM_NAME'?>:</div>
                          </td>
                          <td width="79%"> 
                            <input type="text" class="inputbox"  name="product_name" value="<?php echo shopMakeHtmlSafe$db->sf("product_name")); ?>" size="32" maxlength="255" />
                          </td>
                    </tr>
    Danach einfügen:
    PHP-Code:
    <tr class="row1">
                        <td width="29%" ><div style="text-align:right;font-weight:bold;">
                            <?php echo $VM_LANG->_('PHPSHOP_PRODUCT_EAN'?>:</div>
                        </td>
                        <td width="71%" >
                            <table border="0" cellspacing="0" cellpadding="0">
                                <tr>
                                    <td>
                                        <input type="text" value="<?php $db->sp("ean"); ?>" class="inputbox" name="ean" size="20" maxlength="13" />
                                        <input type="hidden" name="product_price_id" value="<?php echo @$price["product_price_id"?>" />
                                    </td>   
                                </tr>
                            </table>
                          </td>
                    </tr>
    Und zu guter letzt in der Datei: administrator\components\com_virtuemart\classes\ps _product.php

    erste Codestelle in der 'function add':
    PHP-Code:
     // Insert into DB
            
    $fields = array ( 
    Da die Zeile einfügen: 'ean' => vmGet($d,'ean'),

    und weiter unten in der 'function update':
    PHP-Code:
     // Insert into DB
            
    $fields = array ( 
    Da die Zeile einfügen: 'ean' => vmGet($d,'ean'),

    Sollte es gewesen sein
    90% aller Computerprobleme entstehen zwischen Stuhl und Tastatur.

  3. Erhielt Danksagungen von:


  4. #3
    War schon öfter hier
    Registriert seit
    19.08.2009
    Beiträge
    126
    Bedankte sich
    8
    Erhielt 7 Danksagungen
    in 6 Beiträgen

    Standard

    Hallo wats,

    danke für Deine rasche Antwort. Wie immer sehr ausführlich und verständlich!

    Grüße

  5. #4
    War schon öfter hier
    Registriert seit
    14.07.2010
    Ort
    Cottbus
    Beiträge
    132
    Bedankte sich
    0
    Erhielt 56 Danksagungen
    in 50 Beiträgen

    Standard

    Achso...hab noch eine Info vergessen...Diesen Hack hab ich gebastelt, um beim Anlegen von Produkten auf manuelle Art und Weise EANs mit einzutragen, bzw. diese in der Produktliste dann mit ausgeben zu lassen. Um über CSVi die Datenbank mit den EANs zu den Produkten bestücken zu lassen, ist dort sicher auch ein kleiner Hack notwendig...da ich CSVi allerdings nicht nutze, kann ich dort keine Auskunft geben, aber ich denke das sollte nicht sehr problematisch sein.
    90% aller Computerprobleme entstehen zwischen Stuhl und Tastatur.

  6. #5
    War schon öfter hier
    Registriert seit
    19.08.2009
    Beiträge
    126
    Bedankte sich
    8
    Erhielt 7 Danksagungen
    in 6 Beiträgen

    Standard

    Habe die Spalte ean zwar noch nicht hinzufügen können, aber ich denke das CSVi über Felder Aktualisieren die Spalte ean automatisch erkennen wird. So wurde es mir jedenfalls im CSVi Forum geschildert.

  7. #6
    Neu an Board
    Registriert seit
    15.06.2010
    Beiträge
    56
    Bedankte sich
    7
    Erhielt 4 Danksagungen
    in 4 Beiträgen

    Standard

    Hallo,

    DANKE an wats für die tolle ausführliche Beschreibung. Leider habe ich damit noch Probleme. Ich möchte die zwei Felder "Preiseinheit" und "Mengeneinheit" einfügen. Habe gem. der Beschreibung die Werte statt ean eingefügt. Folglich heissen auch mein Datenbankfelder Preiseinheit bzw. Mengeneinheit. Im Backend werden die auch angezeigt aber leider beim Speichern nicht entsprechend in die Datenbank geschrieben. Ändere ich die Werte in der Datenbank mit PhpAdmin erscheinen sie aber umgekehrt im Backend richtig.

    Dann hatte ich gedacht, ich könnte sie entsprechend etwa in der browse_x.php mittels $Mengeneinheit ansprechen, leider habe ich auch da wohl noch irgendwie einen Denkfehler oder?

    Der dritte Punkt ist CSVImproved, benutze Version 1.9. Da erscheinen meine neuen Felder leider nicht in der Übersicht, hat jemand eine Idee wo ich dann ansetzen könnte?

    CU
    cyberframe

  8. #7
    War schon öfter hier
    Registriert seit
    14.07.2010
    Ort
    Cottbus
    Beiträge
    132
    Bedankte sich
    0
    Erhielt 56 Danksagungen
    in 50 Beiträgen

    Standard

    Dein Problem mit dem Speichern übers Backend lässt die Vermutung zu, dass du an dieser Stelle hier vergessen hast die "function add" und "function update" auf deine Bedürfnisse anzupassen:

    Und zu guter letzt in der Datei: administrator\components\com_virtuemart\classes\ps _product.php

    erste Codestelle in der 'function add':
    PHP-Code:
    // Insert into DB
            
    $fields = array ( 
    Da die Zeile einfügen: 'ean' => vmGet($d,'ean'),

    und weiter unten in der 'function update':
    PHP-Code:
    // Insert into DB
            
    $fields = array ( 
    Da die Zeile einfügen: 'ean' => vmGet($d,'ean'),
    Hier sollte natürlich auch 'mengeneinheit' => vmGet($d,'mengeneinheit') stehen...oder dein <input> ist falsch benannt..

    aus

    <input type="text" value="<?php $db->sp("ean"); ?>" class="inputbox" name="ean" size="20" maxlength="13" />

    in der administrator\components\com_virtuemart\html\produ ct.product_form.php
    müsste sowas werden wie

    <input type="text" value="<?php $db->sp("mengeneinheit"); ?>" class="inputbox" name="mengeneinheit" size="20" />

    Damit du diese dann auch in deiner browse_x.php anpsrechen kannst über bsp. $mengeneinheit , müsste diese Variable erst noch definiert werden. Wie das funktioniert hatte ich glaube in diesem Beitrag mal zusammen gecodet
    Grundpreisangabe, was neues?
    90% aller Computerprobleme entstehen zwischen Stuhl und Tastatur.

  9. Erhielt Danksagungen von:


  10. #8
    Neu an Board
    Registriert seit
    15.06.2010
    Beiträge
    56
    Bedankte sich
    7
    Erhielt 4 Danksagungen
    in 4 Beiträgen

    Standard

    Hallo wats,

    was soll ich sagen: PERFEKT!, und die Anmerkung unter deinen Beiträgen das 90% alle Probleme zwischen Bildschirm und Rückenlehnen sind, trifft leider auch auf mich zu , wer nicht lesen kann, halt es halt schwer im Leben. Ich hatte wie du richtig vermutet hattest, den Eintrag bei der Update-Funktion vergessen.

    Wenn jetzt noch jemand eine Idee zu CSVImproved hätte, wo ich da Einfluß auf die ausgelesenen Felder nehmen kann, wäre ich ein noch größeres Stück weiter, um mein eigentliches Problem mit Preisen per 100 Stück zu lösen.

    CU
    cyberframe

  11. #9
    Neu an Board
    Registriert seit
    15.06.2010
    Beiträge
    56
    Bedankte sich
    7
    Erhielt 4 Danksagungen
    in 4 Beiträgen

    Standard

    Hallo,

    mit der Hilfe von wats habe ich in der browse_x.php bzw. shop.browse.php meine zusätzlichen Felder zur Grundpreisermittlung einfügen können. Nun dachte ich eigentlich, mit praktisch dem gleichen Code könnte ich das auch in der shop_produkt_details.php bzw. der flypage rein basteln.
    PHP-Code:
            //$product_id = $db_product->f('product_id');
            
    $sqlgp mysql_query("SELECT Preiseinheit, Mengeneinheit, Grundpreismengeneinheit, Umrechnung_GP_ME FROM jos_vm_product WHERE product_id = $product_id");
            while(
    $rowgp mysql_fetch_object($sqlgp)){
              
    $products[$i]['Mengeneinheit'] = $rowgp->Mengeneinheit;
              
    $products[$i]['Preiseinheit'] = $rowgp->Preiseinheit;
              
    $products[$i]['Grundpreismengeneinheit'] = $rowgp->Grundpreismengeneinheit;
              
    $products[$i]['Umrechnung_GP_ME'] = $rowgp->Umrechnung_GP_ME;
            } 
    Aber irgendwie bekommen ich keine Werte aus der Datenbank. Hat jemand eine Idee was / wo ich etwas falsch mache?

    CU
    cyberframe

  12. #10
    OpenSource Nutzer Avatar von blackice2999
    Registriert seit
    18.05.2006
    Ort
    Berlin
    Alter
    32
    Beiträge
    3.543
    Bedankte sich
    106
    Erhielt 901 Danksagungen
    in 695 Beiträgen

    Standard

    Hi,

    die Frage die ich mir stelle, warum hackt ihr eine Komponente so massiv das Updates kaum noch möglich sind ?

    Gruß Dennis
    Thread gelöst ? => Anleitung
    Wichtige Themen => Joomla FAQ | Flottes Sicherheitsliste
    Einfach nur so => Geiz ist doch geil oder?
    *dies ist ein Joomla Forum - Kein css / html Anfänger Forum...*

+ 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