PHP Ausgabe
am 15.08.2011 - 17:24 Uhr in
Hallo zusammen,
stecke bei PHP fest, vermutlich fehlt nur eine Kleinigkeit. PHP als Eingabeformat ist eingestellt.
Ich will einen Link ausgeben, der einige dynamische Komponenten enthält, z.b. Zahlen. Eine davon muss berechnet werden (geteilt duch 1,19 um die MwSt. rauszurechnen). Die Variablen [subtotal], [order-id] und [order-uid] werden von Drupal bzw. Ubercart zur Verfügung gestellt. Die Variable [subtotal] möchte ich nun durch 1,19 teilen und dann bei $netto ausgeben.
Zum einen scheint das teilen durch 1,19 nicht zu funktionieren, anscheindn wird das [subtotal] nicht erkannt?
Und bei echo stimmt auch irgendwas nicht. Wo liegt der Fehler, kann mir jemand helfen?
<?php
$netto = [subtotal]/1,19;
echo "<img src="http://td.oo34.net/tr/campaign=Z4HHPTk6AKjI013a&orderid=[order-id]&customer=[order-uid]&value=$netto¤cy=EUR" width="1" height="1" border="0" alt=””/>";
echo "<a href='deineseite.org/index.php?tid=".$tid."'>link mit tid...</a>
?> - Anmelden oder Registrieren um Kommentare zu schreiben

hi pfefferling du musst eine
am 15.08.2011 - 17:34 Uhr
hi pfefferling
du musst eine punkt trennung verwenden
also
1.19 statt 1,19
dann solltest du bcdiv()
verwenden
<?php$netto = bcdiv([subtotal],1.19,2);
?>
grüße
stef
hi stef ah ok, Punkt statt
am 15.08.2011 - 17:51 Uhr
hi stef
ah ok, Punkt statt Komma ist schon mal super.
es kommt immernoch die Fehlermeldung: syntax error, unexpected '[', expecting ')'
irgendwas ist also in dem bcdiv noch falsch. kann es sein, dass die variable innerhalb von der gleichung nicht erkannt wird?
grüße
felix
hei felix ups,d as hab ich
am 15.08.2011 - 18:13 Uhr
hei felix
ups,d as hab ich garnicht gesehen
<?phpecho "<img src="http://td.oo34.net/tr/campaign=Z4HHPTk6AKjI013a&orderid=[order-id]&customer=[order-uid]&value=$netto¤cy=EUR" width="1" height="1" border="0" alt=””/>";
?>
du hast da fehler mit den anführungszeichen " eingebaut..
richtig wäre zb so:
<?phpecho "<img src='http://td.oo34.net/tr/campaign=Z4HHPTk6AKjI013a&orderid=[order-id]&customer=[order-uid]&value=$netto¤cy=EUR' width='1' height='1' border='0' alt=' '/>";
?>
versuch das mal bitte
vielleicht ist das der grund..
mhh, das kann sein, aber
am 15.08.2011 - 18:31 Uhr
mhh, das kann sein, aber soweit kommt er gar nicht.
es muss noch ein fehler in der zeile hier sein:
$netto = bcdiv([subtotal],1.19,2);Mit dem [ kommt er nicht zurecht. Hier nochmal der ganze Code, damits übersichtlicher bleibt:
<?php
$netto = bcdiv([subtotal],1.19,2);
echo "<img src='http://td.oo34.net/tr/campaign=Z4HHPTk6AKjI013a&orderid=[order-id]&customer=[order-uid]&value=$netto¤cy=EUR' width='1' height='1' border='0' alt=' '/>";
?>
oder muss man $netto erst als variable definieren? sorry, bin nicht so der PHP-Insider ;)
Zitat: oder muss man $netto
am 15.08.2011 - 19:27 Uhr
oder muss man $netto erst als variable definieren?
Nö, nicht unbedingt.
Was mich ein wenig wundert - dieses
[subtotal]Wo genau kommt das nochmal her? Weil das höchstens aussieht wie ein Pattern aber nicht wie eine ordentliche Variable. Was liefert er denn, wenn du einfach malecho [subtotal];machst? Dort würde ich den Fehler am Ehesten suchen.Und wo genau verwendest du diesen Code denn?
also, bei echo [subtotal];
am 15.08.2011 - 19:58 Uhr
also, bei echo [subtotal]; kommt dann "Parse error: syntax error, unexpected '[' in...."
ich verwende das in /admin/store/settings/checkout/edit/messages also innerhalb von Ubercart.
[subtotal] hab ich aus der Liste der verfügbaren Tokens von ubercart. Innhalb des Links der ausgegeben wird funktionieren die Tokens ja, nur innerhalb der Berechnung gehts nicht. Vielleicht kann man so keine Berechnung vornehmen?
Mmmh und wenn du versuchst,
am 15.08.2011 - 20:09 Uhr
Mmmh und wenn du versuchst, erstmal eine Variable damit zu belegen?
Quasi so:
<?php
$total = [subtotal];
$netto = $total / 1.19
?>
Zitat: ich verwende das in
am 15.08.2011 - 20:15 Uhr
ich verwende das in /admin/store/settings/checkout/edit/messages also innerhalb von Ubercart...
Innhalb des Links der ausgegeben wird funktionieren die Tokens ja, nur innerhalb der Berechnung gehts nicht.
ah so.. sorry ich hab das völlig missgedeutet ...
das modul ersetzt anscheinend die tokens in dem php output (echo)
was dann aber schon html ist
und parst nicht den php code des nodes.
daher die parsing errors
du kannst das also (vermutlich) nicht auf diese art vermischen.
behaupte ich jetzt mal ohne das modul zukennen...
ich dachte zuerst das
<?php$netto = [subtotal]/1.19;
?>
keinen fehler ausgibt
das modul somit auch den php code
als text verarbeitet und die tokens ersetzt..
grüße
stef
ich glaube das problem liegt
am 15.08.2011 - 21:08 Uhr
ich glaube das problem liegt woanders: es wird nicht nur
[order-total] gibt nämlich "178,00€" aus, also mit € Zeichen, dass er da Probleme bekommt ist klar. Man müsste das € also irgendwie rausfiltern, vielleicht funktioniert es dann?
LG felix
Dann mach's doch einfach
am 15.08.2011 - 21:17 Uhr
Dann mach's doch einfach raus.
Ich glaube aber ehrlich gesagt auch nicht, dass das was wird. Evtl. kann man an der Stelle einfach nicht mit den Tokens rechnen, sondern die werden einfach nur bei der Ausgabe ersetzt.
nabend aha..?! Zitat: [order
am 15.08.2011 - 22:04 Uhr
nabend
aha..?!
[order-total] gibt nämlich "178,00€" aus, also mit € Zeichen,
wann wird das ausgegeben?
mit
<?php
$total = [subtotal];
echo $total;
?>
das würde mich echt wundern..
aber
das euro zeichen weg machen (und das komma gegen
einen punkt ersetzen geht so:
<?php
$total = [subtotal];
//euro raus
$total = str_replace('€','',$total);
// komma zu punkt
$total = str_replace(',','.',$total);
// den string in einen interger umwandeln
$total =(int)$total;
?>
binmagespannt
stef
Da reicht auch ein einzelner
am 15.08.2011 - 22:31 Uhr
Da reicht auch ein einzelner str_replace:
<?php$total = str_replace(array('€', ','), array('', '.'), $total);
?>
also ich habe das Gefühl es
am 16.08.2011 - 10:18 Uhr
also ich habe das Gefühl es liegt am PHP allgemein:
Diesen Code gibt er ohne Fehlermeldung aus:
<?phpecho "<img src='http://td.oo34.net/tr/campaign=Z4HHPTk6AKjI013a&orderid=[order-id]&customer=[order-uid]&value=<strong>[order-subtotal]</strong>¤cy=EUR' width='1' height='1' border='0' alt=' '/>";
?>
aber wenn ich bereits folgendes mache, kommt die fehlermeldung "Parse error: syntax error, unexpected ',' in ..." für die Zeile $netto = [order-subtotal];
<?php
<strong>$netto = [order-subtotal];</strong>
echo "<img src='http://td.oo34.net/tr/campaign=Z4HHPTk6AKjI013a&orderid=[order-id]&customer=[order-uid]&value=<strong>$netto</strong>¤cy=EUR' width='1' height='1' border='0' alt=' '/>";
?>
Kann er also PHP an der Stelle nicht verarbeiten? aber Wieso geht es dann bei der oberen Variante mit "Print" ?
ahio Zitat: Kann er also PHP
am 16.08.2011 - 10:37 Uhr
ahio
Kann er also PHP an der Stelle nicht verarbeiten? aber Wieso geht es dann bei der oberen Variante mit "Print" ?
... weil das php vor dem aufruf von dem Ubercart modul ausgeführt wird.
dieses token wird also als php behandelt daher der parse error.
das ubercard modul setzt erst ein wenn dieser link schon als html 'gerendert' wurde..
du kannst das also nicht so machen
du musst dir einen anderen weg suchen um da die variable
zu berechnen.
zb per javascript in deinem template
oder über die drupal preprocess funktionen.
tip: mit dem devel-modul und das darin enthaltenen modul theme developer wird dir sehr schön angezeigt
welche preprocess funktionen für das jeweilige seitenelement verfügbar ist.
da kannst du dann drauf zugreifen
viel erfolg
gruss
stef
ok, dann geht das so leider
am 22.08.2011 - 09:38 Uhr
ok, dann geht das so leider tatsächlich nicht. Ich werde mal im Ubercart-forum fragen ob jemand eine einfache Lösung für das Problem hat, ich sollte ja nicht der erste damit sein..
vielen Dank für Eure Hilfe!!!
Felix