Ergebnis 1 bis 10 von 10

Thema: Zugriff auf hinzugefügte Produktattribute

  1. #1
    Contao-Nutzer
    Registriert seit
    12.12.2010.
    Ort
    nähe Hannover
    Beiträge
    34

    Standard Zugriff auf hinzugefügte Produktattribute

    Hallo liebe Contao-Community,

    wieder einmal stehe ich im Wald.
    Ich hab mir in der Shop-Konfiguration eigene Produkt-Attribute erstellt (Revisionsnummer, key).
    Nun möchte ich die entssprechenden Daten per Php aus der Datenbank lesen.
    In phpmyadmin bekomme ich mit der sql-Abfrage das passende Ergebniss (den Key):
    SELECT `key` FROM `tl_iso_product` WHERE `Revisionsnummer`='1.0

    Aber in Contao bekomme ich keinen Wert (Key) zurück, nur den Namen (per Instert-Tags).
    Das php wird per {{file::reg.php}} aufgerufen.

    PHP-Code:
    <?php
    $output 
    = array();
    $return_var 0;
    $this->import('Database');
    $KeyAbfrage=$this->Database->execute("SELECT `key` FROM `tl_iso_product` WHERE `Revisionsnummer`='1.0'");
    $idVorne$this->replaceInsertTags('{{user::firstname}}');
    $idHinten$this->replaceInsertTags('{{user::lastname}}'); 
    echo (
    "Hallo: <br />\n".$idHinten .", ".$idVorne."<br />\n");
    echo (
    "Der Key ist --> ".$KeyAbfrage" <-- sollte da stehen! <br />\n");
    Inserttags werden dafür ja nicht generiert oder? damit wäre es ja einfach.
    Bestimmt stehe ich im wald. kann mich jemand rausführen?

    vielen Dank schon mal
    Andiamo
    Geändert von Andiamo (12.05.2014 um 14:10 Uhr)
    Auf unserer Welt ist der absolute Stillstand ist nur in der Bewegung zu erreichen, indem man entgegen der Erd- und Milchstraßenrotation läuft.

  2. #2
    Contao-Nutzer
    Registriert seit
    12.12.2010.
    Ort
    nähe Hannover
    Beiträge
    34

    Standard

    hallo,

    ich hab mit folgender Zeile:
    PHP-Code:
    $KeyAbfrage=$this->Database->prepare('SELECT key FROM tl_iso_product WHERE Revisionsnummer=1.0 ')->execute(); 
    und im error.log steht:
    PHP Recoverable error: Object of class Contao\Database\Mysqli\Result could not be converted to string in /var/www/virtual/andiamo/html/templates/reg.php on line 13

    Tja, und in Zeile 13 will ich mit folgendem code, das Ergebniss ausgegeben lassen :
    PHP-Code:
    echo ("Nummer: <br />\n--> ".$KeyAbfrage." <-- <br />\n"); 
    Seite wird angezeigt aber ohne Ergebniss
    ich hab keine Ahnung woran das liegt..

    danke schon mal
    A.
    Auf unserer Welt ist der absolute Stillstand ist nur in der Bewegung zu erreichen, indem man entgegen der Erd- und Milchstraßenrotation läuft.

  3. #3
    Contao-Urgestein Avatar von KATgirl
    Registriert seit
    31.03.2010.
    Ort
    Marburg
    Beiträge
    1.579
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Du musst über die Klasse des Frontentusers gehen.

    https://contao.org/de/cookbook/3.0/b...utzer-objektes
    - GitHub
    - Kontaktanfragen

    "Ein Lächeln ist die kürzeste Entfernung zwischen zwei Menschen." Victor Borge

  4. #4
    Contao-Nutzer
    Registriert seit
    12.12.2010.
    Ort
    nähe Hannover
    Beiträge
    34

    Standard

    Hallo KATgirl,

    Danke für Deine Antwort. Leider verstehe ich nicht ganz warum man über den FrontendUser gehen muss. Der UserVor- und Nachname (per InsertTags) wird mir ja die ganze Zeit korrekt angezeigt. Ich möchte einen Wert aus der Tabelle 'tl_iso_product' auslesen, diesen Wert muss der Kunde gar nicht sehen. Ich benötige ihn intern.

    Also gut, frage ich ab ob dieser User eingeloggt ist, lasse mir den Usernamen anzeigen und versuche dann aus der DB den Wert zu holen:
    PHP-Code:
    if (FE_USER_LOGGED_IN === true) {
        
    $objUser FrontendUser::getInstance();
        echo (
    "objektUserName: <br />\n--> ".$objUser->username."<br />\n");
        
    $this->import('Database');
        
    $KeyAbfrage=$this->Database->execute("SELECT `key` FROM `tl_iso_product` WHERE `Revisionsnummer`='1.0'"); 
        
    $idVorne$this->replaceInsertTags('{{user::firstname}}');
        
    $idHinten$this->replaceInsertTags('{{user::lastname}}'); 
        echo (
    "ID: <br />\n".$idHinten .", ".$idVorne."<br />\n");
        echo (
    "Nummer: <br />\n--> ".$KeyAbfrage." <-- <br />\n");

    } else {} 


    Ergebniss:

    objektUserName: --> maximann
    ID:
    Mustermann, Max
    Nummer:
    --> <--

    Alles wird angezeigt, nur nicht der 13stellige Wert aus der Tabelle 'tl_iso_product'...



    verzweifelte Grüße
    A.

    Ps:
    Oder muss der User erst dieses Produkt gekauft haben? Wenn ja, wie stelle ich das auf einem Testsystem ein.
    Auf unserer Welt ist der absolute Stillstand ist nur in der Bewegung zu erreichen, indem man entgegen der Erd- und Milchstraßenrotation läuft.

  5. #5
    Contao-Urgestein Avatar von KATgirl
    Registriert seit
    31.03.2010.
    Ort
    Marburg
    Beiträge
    1.579
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Welche Version verwendet du

    Gesendet von meinem Nexus 5 mit Tapatalk
    - GitHub
    - Kontaktanfragen

    "Ein Lächeln ist die kürzeste Entfernung zwischen zwei Menschen." Victor Borge

  6. #6
    Contao-Nutzer
    Registriert seit
    12.12.2010.
    Ort
    nähe Hannover
    Beiträge
    34

    Standard

    hallo KATgirl,
    meine Contao Version ist - CMS 3.2.8
    bei Isotope ist es die - 2.1.0 stable.
    Webspace bei Uberspace

    Grüße
    A.
    Auf unserer Welt ist der absolute Stillstand ist nur in der Bewegung zu erreichen, indem man entgegen der Erd- und Milchstraßenrotation läuft.

  7. #7
    Contao-Nutzer
    Registriert seit
    12.12.2010.
    Ort
    nähe Hannover
    Beiträge
    34

    Standard

    zwischenbericht,

    Ich habe jetzt mehrere Testkäufe gemacht, doch daran lag es nicht.
    Die Abfrage gibt immer noch nichts zurück.
    Ich verdrahte die key-Nummer erst einmal fest im php bis ich eine Lösung finde.

    Ist ein bischen blöd da ich bei jedem Produkt-Versionswechsel das php editieren muss.
    Es sei denn jemand kennt mittlerweile die Lösung.

    nette Grüße
    A.
    Auf unserer Welt ist der absolute Stillstand ist nur in der Bewegung zu erreichen, indem man entgegen der Erd- und Milchstraßenrotation läuft.

  8. #8
    Contao-Urgestein Avatar von KATgirl
    Registriert seit
    31.03.2010.
    Ort
    Marburg
    Beiträge
    1.579
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich weiß zwar nicht wo dein Problem ist, aber vielleicht hilft dir das:

    PHP-Code:

    // Anpassen für eigene Produkte oder
    // dynamisch aus der Bestellung.
    $revNumber '1.0';
    $productID   112;

    if (
    FE_USER_LOGGED_IN === true) { 
        
    $objUser FrontendUser::getInstance(); 

        
    $objResult Database::getInstance()->prepare("SELECT key FROM tl_iso_product WHERE Revisionsnummer = ? AND id = ? ")->execute($revNumber$productID)->limit(1);

        echo (
    "ID: <br />\n".$objUser->lastname .", ".$objUser->firstname."<br />\n"); 
        echo (
    "Nummer: <br />\n--> ".$objResult->key." <-- <br />\n"); 


    oder mit Schleife

    PHP-Code:

    // Anpassen für eigene Produkte oder
    // dynamisch aus der Bestellung.
    $revNumber '1.0';

    if (
    FE_USER_LOGGED_IN === true) { 
        
    $objUser FrontendUser::getInstance(); 

        
    $objResult Database::getInstance()->prepare("SELECT key FROM tl_iso_product WHERE Revisionsnummer = ?")->execute($revNumber);

        echo (
    "ID: <br />\n".$objUser->lastname .", ".$objUser->firstname."<br />\n"); 
        
        while (
    $objResult->next())                        
        {
          echo (
    "Nummer: <br />\n--> ".$objResult->key." <-- <br />\n"); 
        }

    Geändert von KATgirl (27.05.2014 um 06:23 Uhr) Grund: Schleife nachgetragen
    - GitHub
    - Kontaktanfragen

    "Ein Lächeln ist die kürzeste Entfernung zwischen zwei Menschen." Victor Borge

  9. #9
    Contao-Nutzer
    Registriert seit
    12.12.2010.
    Ort
    nähe Hannover
    Beiträge
    34

    Standard

    Hallo KATgirl,

    Danke!!!

    der Datenbank-Aufruf war die Lösung:

    ich hatte die DB damit aufgerufen:
    PHP-Code:
    $this->import('Database');
    $this->Database->prepare 
    und das ging nicht.

    Du hast die DB so aufgerufen, also als Instanz:
    PHP-Code:
    Database::getInstance()->prepare 

    Ich wuste nicht das man die DB so aufruft.

    und damit klappt es, ich hab nur noch das limit entfernt.
    nun kann ich den letzten Feinschliff angehen und vielleicht ist nächste Woche die Seite online, spätestens im Juni.


    Also vielen, vielen herzlichen Dank für Deine Mühe.

    dankbare Grüße
    A.
    Auf unserer Welt ist der absolute Stillstand ist nur in der Bewegung zu erreichen, indem man entgegen der Erd- und Milchstraßenrotation läuft.

  10. #10
    Contao-Urgestein Avatar von KATgirl
    Registriert seit
    31.03.2010.
    Ort
    Marburg
    Beiträge
    1.579
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Wenn du das Limit raus nimmst, musst du noch eine Schleife machen. Für den Fall das es mehr als ein Ergebniss gibt.

    Gesendet von meinem Nexus 5 mit Tapatalk
    - GitHub
    - Kontaktanfragen

    "Ein Lächeln ist die kürzeste Entfernung zwischen zwei Menschen." Victor Borge

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
  •