bitte syntax checken! *brett vorm kopf*

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • bitte syntax checken! *brett vorm kopf*

    Hallo,

    ich komm nicht mehr allein weiter mit meinem PHP / MYSQL Problem, irgendwas stimmt nicht. Situation:

    Mit den Queries soll ausgelesen werden, welche Daten in fields_id 2 und 3 der Kunde mit einer bestimmten customers_id eingetragen hat.

    Falls etwas eingetragen ist, soll der Kunde auf Rechnung bestellen dürfen, d. h. das Rechnungsmodul soll enabled sein. Also soll bei den Leuten, die 2 und 3 nicht eingetragen haben, das rechnungsmodul demensprechend disabled sein.

    Funzt aber nicht. Wer kann helfen?

    Danke vorab,

    Kabbelwasser


    $hr_query = tep_db_query("select value from customers_to_extra_fields where customers_id = '" . (int)$order->customer['id'] . "' and fields_id = '2'");
    $hr = tep_db_fetch_array($hr_query);

    $oea_query = tep_db_query("select value from customers_to_extra_fields where customers_id = '" . (int)$order->customer['id'] . "' and fields_id = '3'");
    $oea = tep_db_fetch_array($oea_query);

    // new

    if ( ($this ->enabled == true) && ( $hr['value'] == '') ) {
    $this ->enabled = false;
    }
    if ( ($this ->enabled == true) && ( $oea['value'] == '') ) {
    $this ->enabled = false;

  • #2
    hallo, also erstmal halte dich bitte an die regeln und setzte die php-tags ein...

    wenn du von MySQL sprichst.. warum nimmst du dann nicht mysql_query($sql)??? was ist überhaupt tep_db??
    2 meiner pages:

    Kommentar


    • #3
      Also mit der Query "select value from customers_to_extra_fields" bekommst Du ja aus der MySQL nur die Tabellenspalte mit dem Namen "value" wenn Du alle Werte haben willst musst Du stattdessen wohl "*" verwenden, oder die Spaltennamen per Komma getrennt angeben. Oder ich verstehe das Problem nicht so richtig ;-).

      Gruss Niels

      Kommentar


      • #4
        Hallo und danke für eure Antworten.

        hmm, ich formulier das Problem nochmal anders: Das Ganze hat den Sinn zu überprüfen, ob während des Bestellvorgangs eines Kunden das "Lieferung auf Rechnung" Modul angeboten werden soll oder nicht. Kriterium dafür ist, ob in den "customers_extra_fields" 2 oder 3 was eingetragen ist. Wenn ja, dann soll das enabled sein, sonst nicht.

        Mit der Syntax da in meinem ersten Beitrag ist das Modul aber IMMER deaktiviert, egal ob extra fields eingetragen sind oder nicht, d. h. entweder ist die wenn-dann-Bedingung fehlerhaft, oder aber die Datenbankabfrage ist falsch und liefert ein leeres Ergebnis.

        @Niels: es soll also tatsächlich nur ein bestimmter Kunde überprüft werden.

        @chrpun: kannst du mir deinen Vorschlag mit mysql_query($sql) mal posten?

        Gruß, Bernd

        Kommentar


        • #5
          Mach einfach mal

          PHP-Code:
          $hr_sql "Dein SQL Code";
          $hr_query tep_db_query($hr_sql);
          $hr tep_db_fetch_array($hr_query); 
          Somit kannst du dir mit einem einfachen "echo $hr_sql" mal deinen zusammengebauten SQL String ansehen und ggf im phpmyadmin mal testen.

          Da mir das ganze nach OSC aussieht, in welcher klasse versuchst du den Code überhaupt ?

          Im Rechnungsmodul?

          Der Code muss ja in einer Klasse sein, da du $this benutzt.
          gruss Chris

          [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

          Kommentar


          • #6
            Hallo hhcm,

            richtig, OSC ist das, und zwar eine invoice contribution, die ich aber jetzt nicht mehr bei OSC im Contrib Bereich wiederfinde. Die Klasse ist die invoice.php (catalog/includes/classes/).

            Danke für deinen Tip übrigens mit phpMyAdmin, jetzt weiß ich schonmal, dass meine SQL Abfrage ok ist, habs getestet, aber ich komm trotzdem nicht weiter.

            hmm....

            ach ja, die tep_db_fetch_array ist:

            PHP-Code:
             function tep_db_query($query$link 'db_link') {
                global $
            $link$logger;

                if (
            defined('STORE_DB_TRANSACTIONS') && (STORE_DB_TRANSACTIONS == 'true')) {
                  if (!
            is_object($logger)) $logger = new logger;
                  
            $logger->write($query'QUERY');
                } 

            Kommentar


            • #7
              Ich würde mal:
              this->enabled vor der if-Sequenz ausgeben. Wenn es da schon false ist...
              hr['value'] und oea['value'] echoen oder var_dumpen um zu sehen was da wirklich daherkommt...

              und error_reporting aufdrehen, für den Fall dass die queries keine rows finden.


              Das if(this->enabled==true) ist übrigens redundant -- wenn die Bedingung falsch ist, kann man this->enabled ohne weiteres nochmals false setzen.

              Kommentar

              Lädt...
              X