Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module ›

[gelöst] drupal_render() - Problem

Eingetragen von tomtone (84)
am 26.07.2010 - 16:28 Uhr in
  • Module
  • Drupal 6.x

Hallo,

bastel nun gerade wie ein Weltmeister und wurde nun in meinem Fluss gebremst.

function theme_mp_reports_seller_fieldset($fieldset) {
  $output = '';
  $header = array(t('Seller'), t('# of orders'), t('Products sold'), t('Total revenue'), t('Total commission'), t('Payment method'), theme('table_select_header_cell'));
  $rows = array();
  foreach (element_children($fieldset) as $op_id) {
    $row = array();
    $row[] = drupal_render($fieldset[$op_id]['link']);
    $row[] = drupal_render($fieldset[$op_id]['order_data']);
    $row[] = drupal_render($fieldset[$op_id]['product_data']);
    $row[] = drupal_render($fieldset[$op_id]['revenue_count']);
    $row[] = drupal_render($fieldset[$op_id]['commission_count']);
    $row[] = drupal_render($fieldset[$op_id]['payment_method']);
    $row[] = drupal_render($fieldset[$op_id]['checked']);
    $rows[] = $row;
  }

möchte nun gerne ein Feld hinzufügen in dem ich Prozentual den Wert 'revenue_count' wiedergebe. Der haken ist -->> Es ist ein String. Jemand eine Idee?

‹ The server didn't reply with a proper XML data. amazon modul / amazon media - erweiterte DVD-Ansicht wie anzeigen lassen ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Form API

Eingetragen von Frank Ralf (2135)
am 26.07.2010 - 19:13 Uhr

Drupal bringt eine sehr leistungsfähige Form API mit, um Formulare zu erstellen. Da solltest du dich vielleicht mal umschauen: Form API Quickstart Guide

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke für den Tipp, jedoch

Eingetragen von tomtone (84)
am 27.07.2010 - 08:31 Uhr

Danke für den Tipp, jedoch sehe ich gerade, das ein Teil der Funktion fehlt.

Es ist kein Formular o.ä. Es ist lediglich eine Datenabfrage die mir einen wert ausgibt, in dem Fall entspricht der Wert €123.123,12 und ich fürchte selbst die Form API wird mir da nicht helfen, werde sie mir aber dennoch gleich kurz ansehen!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Da musst du glaube ich die

Eingetragen von netzkoop (1820)
am 27.07.2010 - 08:49 Uhr

Da musst du glaube ich die grosse API bemühen - z.B. von php.net :-)
Formulareingaben werden soweit ich weiss immer als string behandelt. Was ist denn genau das Problem mit dem string?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Die Tatsache, das es sich mit

Eingetragen von tomtone (84)
am 27.07.2010 - 09:19 Uhr

Die Tatsache, das es sich mit einem String schlecht rechnen lässt ;) Ich brauch x% von dem String, also erst /100 dann *x und dazu muss ich casten, denke ich aber vorher müssen die zeichen raus, damit ich nen Integer bekomme. Leider habe ich sofern ich str_replace nehme einen wundervollen weißen Screen...

ich möchte uach anmerken, auch wenn es nach einem Formular aussieht, es gibt hierzu kein Formular :) das sind die Verkaufszahlen von Ubercart bzw Ubercart_marketplace :) und diese werden lediglich 'getuned' mit der Funktion drupal_render() damit die Ausgabe hübsch aussieht

  • Anmelden oder Registrieren um Kommentare zu schreiben

error log

Eingetragen von stBorchert (6003)
am 27.07.2010 - 09:55 Uhr

Hallo.

tomtone schrieb

Leider habe ich sofern ich str_replace nehme einen wundervollen weißen Screen...

Dann schau doch mal in das error-log von PHP, welcher Fehler diesen WSOD verursacht hat. Da steht das dann nämlich detailliert drin.

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

der fehler ist -->> Fehler im

Eingetragen von tomtone (84)
am 27.07.2010 - 10:15 Uhr

der fehler ist -->> Fehler im MP_reports.module in Zeile 197 das ist die stelle wo ich gerade rumbastel, und dort steht meine Funktion, die eigentlich die Zeichen die ich nicht will rausnehmen soll...

function zeichen_loschen($wert){
tmp$ = str_replace("[€,.]", "", $wert[$op_id]['revenue_count']['#value']);
return $tmp;
}

  • Anmelden oder Registrieren um Kommentare zu schreiben

$tmp statt tmp$

Eingetragen von Frank Ralf (2135)
am 27.07.2010 - 10:17 Uhr
tomtone schrieb

tmp$

Da scheint das $ an der falschen Stelle zu stehen...

  • Anmelden oder Registrieren um Kommentare zu schreiben

gerade auch gesehen,

Eingetragen von tomtone (84)
am 27.07.2010 - 10:18 Uhr

gerade auch gesehen, danke

aber leider ist das nicht der fehler...zeige ich die seite an, stehen in der variable nach wie vor € , . Zeichen...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Replace

Eingetragen von stBorchert (6003)
am 27.07.2010 - 10:24 Uhr
tomtone schrieb

zeige ich die seite an, stehen in der variable nach wie vor € , . Zeichen...

Das ist auch kein Wunder, da Du nach der Zeichenkette "[€,.]" suchst und str_replace anweist, exakt diese Zeichenkette zu ersetzen.
Du möchtest Folgendes verwenden:

<?php
$mp
= str_replace(array('€', ',', '.'), '', $wert[$op_id]['revenue_count']['#value']);
?>

hth,

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

leider kommt bei deinem

Eingetragen von tomtone (84)
am 27.07.2010 - 10:39 Uhr

leider kommt bei deinem str_replace folgender error :(

[27-Jul-2010 11:38:27] PHP Fatal error: Cannot use string offset as an array in [...] on line 197

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ubercart Views?

Eingetragen von Frank Ralf (2135)
am 27.07.2010 - 12:16 Uhr

Ginge das nicht vielleicht besser damit: http://drupalmodules.com/module/ubercart-views ?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Nimmst du das

Eingetragen von netzkoop (1820)
am 27.07.2010 - 12:44 Uhr

<?php

$wert
= '€123.123,12';
$wegdamit = array("€", ".", ",");
$tmp = str_replace($wegdamit, "", $wert);
print
$tmp;

?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

ich danke dir Luzer :)

Eingetragen von tomtone (84)
am 27.07.2010 - 13:54 Uhr

ich danke dir Luzer :) Naheliegende und einfach lösungen sind meist die besten :) das läuft ;) nun noch das problem des Typecast aber naja... bin erstmal gelähmt... denn das uc_Views Modul soll wohl können was ich möchte, jedoch hat sich gerade mein Server entschlossen auf 32M memory_limit trotz änderungen zu beharren.. naja mal sehen was Host-Europe so sagt ;)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Bitte mal Screenshot

Eingetragen von Frank Ralf (2135)
am 27.07.2010 - 15:00 Uhr

wenn's fertig ist ;-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

leider ist es immernoch nicht

Eingetragen von tomtone (84)
am 27.07.2010 - 15:07 Uhr

leider ist es immernoch nicht gelöst worden mit dem memory limit problem, solange kann ich leider nicht weiter arbeiten ;) aber zumindest klappt das rausnehmen der Zeichen, wobei bei der ausgabe das € zeichen wieder da ist, und zuletzt hat der typecast nicht funktioniert, denke mal WEGEN dem e zeichen es gab immer den wert 1 aus

  • Anmelden oder Registrieren um Kommentare zu schreiben

Probiere mal

Eingetragen von UwBach (310)
am 27.07.2010 - 15:22 Uhr

<?php
$var
= '122.34343The';
$float_value_of_var = floatval($var);
echo
$float_value_of_var; // 122.34343
?>

aus der PHP-Doc - formatiert beliebige Daten (nur keine Array/Objekt) in ein FLOAT. Währungszeichen und Punkte werde ignoriert.

Gruß

UwBach

  • Anmelden oder Registrieren um Kommentare zu schreiben

ich danke dir, aber leider

Eingetragen von tomtone (84)
am 27.07.2010 - 15:24 Uhr

ich danke dir, aber leider scheint mit dem Wert irgendwas nicht zu stimmen, tippe mal darauf das es ein objekt ist. denn ich erhalte nach dem funktionsaufruf von floatval() lediglich eine 0

trotzdem danke :) ich werde es hoffentlich bald schaffen

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dann so..

Eingetragen von UwBach (310)
am 27.07.2010 - 15:36 Uhr

<?php

$var
= '€123.123,12';
// Entfernen des €
$var = str_replace('€', '', $var);
// Entfernen der Dezimalstellen-Punkte
$var = str_replace('.', '', $var);
// Setzen auf Numberformat
$var = str_replace(',', '.', $var);


$float_value_of_var = floatval($var);
echo
$float_value_of_var; // 123123.12

?>

Gruß

UwBach

  • Anmelden oder Registrieren um Kommentare zu schreiben

Nur der Vollständigkeit halber

Eingetragen von Frank Ralf (2135)
am 27.07.2010 - 16:52 Uhr

PHP Manual: "String conversion to numbers"

  • Anmelden oder Registrieren um Kommentare zu schreiben

Soooo :) Zumindest offline

Eingetragen von tomtone (84)
am 28.07.2010 - 13:52 Uhr

Soooo :)

Zumindest offline geht es nun einwandfrei ;) leider gibt es dort im moment auch nur einen benutzer, aber ich habe das problem mittlerweile ausfindiggemacht. Nachdem Aufruf von $fieldset[$op_id]['revenue_count']['#values'] füllt sich meine Variable $wert mit x Werten (x entspricht der Anzahl aller befugten Nutzer [$seller -> uid]) und da liegt der hund begraben, ich habe derzeit nicht den hauch einer idee, wie ich nun die Werte seopariere und dann weider zurück gebe. Denn es stehen leider exakt soviele Strings in der Variablen, wie ich authorisierte Nutzer habe.

  • Anmelden oder Registrieren um Kommentare zu schreiben

PHP split()?

Eingetragen von Frank Ralf (2135)
am 28.07.2010 - 18:09 Uhr

http://php.net/manual/de/function.split.php

  • Anmelden oder Registrieren um Kommentare zu schreiben

Fertig

Eingetragen von tomtone (84)
am 29.07.2010 - 11:34 Uhr

so Banal es letzten endes auch war, es ist gelöst!

Hier die Gebühren-Anzeige für den Admin:

function theme_mp_reports_seller_fieldset($fieldset) {
  $output = '';
  $header = array(t('Seller'), t('# of orders'), t('Products sold'), t('Total revenue'), t('Selling Fee'),t('Payment method'), theme('table_select_header_cell'));
  $rows = array();
  $zeichen = '&euro;';
  foreach (element_children($fieldset) as $op_id) {
$inhalt = $fieldset[$op_id]['revenue_count']['#value'];
$inhalt = str_replace('.','',$inhalt);
$inhalt = str_replace(',','.',$inhalt);
$inhalt = floatval($inhalt);
$inhalt = $inhalt / 100;
$inhalt = $inhalt *7; // % Verkaufsgebühr
$inhalt = number_format($inhalt, 2, ',','.');              // Nummer auf Format bringen, 2 Nachkomma stellen, ',' als DezimalTrennzeichen und der '.' Tausendernder trennzeichen
    $row = array();
    $row[] = drupal_render($fieldset[$op_id]['link']);
    $row[] = drupal_render($fieldset[$op_id]['order_data']);
    $row[] = drupal_render($fieldset[$op_id]['product_data']);
    $row[] = drupal_render($fieldset[$op_id]['revenue_count']);
$row[] = $inhalt.' '.$zeichen;                                               // Ausgabe im Format 123.123,59 €
    $row[] = drupal_render($fieldset[$op_id]['payment_method']);
$row[] = drupal_render($fieldset[$op_id]['checked']);
    $rows[] = $row;
  }
  $output .= theme('table', $header, $rows);
  //$output .= drupal_render($fieldset);                  // Aus Gründen die mir nicht bekannt sind, gibt es hier nochmal alle Werte unformatiert aus.
  return $output;
}

und hier noch der Seller Report für jeden Seller:

  // Build the header statistics table header.
  $header = array(array('data' => t('Statistics'), 'width' => '50%'), '');

  $rows = array(
    array(array('data' => t('Grand total sales')), array('data' => uc_currency_format(db_result(db_query("SELECT SUM(p.cost * p.qty) FROM {mp_seller_order_statuses} AS sos LEFT JOIN {uc_orders} AS o ON sos.order_id = o.order_id LEFT JOIN {uc_order_products} AS p ON p.order_id = o.order_id LEFT JOIN {node} AS n ON n.nid = p.nid WHERE sos.order_status IN $order_statuses AND n.uid = %d AND sos.uid = %d", $uid, $uid))))),
  );
    $rows[] = array(
    t('Selling Fee for @date', array('@date' => $month_title)), // Anzeige der Gebühr
    uc_currency_format(round((($month['income'] /100)*7),2)) // Berechnung der Gebühr, im Moment 7% des Gesamtumsatzes
  );

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 3 Tagen 8 Stunden
  • Hey danke
    vor 4 Tagen 2 Stunden
  • Update: jetzt gibt's ein
    vor 4 Tagen 20 Stunden
  • Hallo, im Prinzip habe ich
    vor 1 Woche 2 Tagen
  • Da scheint die Terminologie
    vor 1 Woche 2 Tagen
  • Kannst doch auch alles direkt
    vor 1 Woche 6 Tagen
  • In der entsprechenden View
    vor 1 Woche 6 Tagen
  • Dazu müsstest Du vermutlich
    vor 1 Woche 6 Tagen
  • gelöst
    vor 4 Wochen 3 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 4 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 6 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association