Seite 1 von 1

Feld mit berechnetem Inhalt

Verfasst: Mi 20. Apr 2011, 18:56
von Rudi
Hallo Forum,
keine Ahnung ob ich hier richtig bin -ich schildere mal mein Problem:

Die Preise eines Shops basieren auf Katalog-Nettopreisen - der online Preis liegt um einen festen Rabattsatz darunter.
Beispiel:

Katalogpreis: 100
Rabatt: 30
Onlinepreis: 70

Alles kein Problem bei Zahlung auf Rechnung oder Abbuchung etc.
PayPal übernimmt nun aber den Inhalt eines Feldes (price) und nicht das Ergebnis einer Berechnung.

Das heisst ich bräuchte ein FLoatfeld das als Daten den aus Katpreis und Rabatt berechneten Onlinepreis enthält.
Das bei jedem Artikel 'zu Fuß' zu berechnen ist müssig.

Gibts eine Lösung??

Re: Feld mit berechnetem Inhalt

Verfasst: Mi 27. Apr 2011, 21:59
von Rudi
Keinerlei Tipp ??? - Auch ein Hinweis dass sowas nicht geht wäre hilfreich.
Oder gehts per PHPMyAdmin? Was ist zu berücksichtigen??

Danke!!!

Re: Feld mit berechnetem Inhalt

Verfasst: Di 13. Sep 2016, 20:49
von cfgerhard
Hallo,

mich würde das auch interessieren, Gibt es inzwischen jemanden, der sich damit beschäftigt hat?

Kann mir jemand evtl. das setzen von Triggern in der DB erklären?

Viele Grüße

Christian

Re: Feld mit berechnetem Inhalt

Verfasst: Mi 14. Sep 2016, 09:14
von Carrear
Feld anlegen. Einen Listview schreiben über alle Artikelobjekte. Im Listview Artikel-Objekt-ID in Variable schreiben, Onlinepreis berechnen und in eine Variable schreiben und dann:

Code: Alles auswählen

$obj = new we_objectFile();
$obj->initByID( $GLOBALS['articleID'] );
$obj->setElement( 'Onlinepreis', $GLOBALS['onlinePrice'] );
$obj->we_save();
$obj->we_publish();
Dokument auf dieser Vorlage anlegen und einmal aufrufen - voilà ^^

VG Martin :)

Re: Feld mit berechnetem Inhalt

Verfasst: Fr 16. Sep 2016, 13:50
von cfgerhard
Hallo,

ich habe dein Beispiel
Carrear hat geschrieben:Feld anlegen. Einen Listview schreiben über alle Artikelobjekte. Im Listview Artikel-Objekt-ID in Variable schreiben, Onlinepreis berechnen und in eine Variable schreiben und dann:

Code: Alles auswählen

$obj = new we_objectFile();
$obj->initByID( $GLOBALS['articleID'] );
$obj->setElement( 'Onlinepreis', $GLOBALS['onlinePrice'] );
$obj->we_save();
$obj->we_publish();
wie folgt adaptiert:

Code: Alles auswählen

			<table>
								<th>Stipendiat</th>
								<th>Alter</th>
								<we:listview name="Stipendiaten" type="object" order="Nachname" classid="1">
						<we:repeat>
					<tr>	
							<?php
						$now = time();
						$alter = $now - 'Geburtsdatum';
							$obj = new we_objectFile();
							$obj->initByID( $GLOBALS['WE_ID'] );
							$obj->setElement( 'Alter', $GLOBALS['alter'] );
							$obj->we_save();
							$obj->we_publish();
					?>
							
								<td><we:field name="Nachname" />, <we:field name="Vorname" /></td>
								<td><we:field name="Alter" /></td>
							</tr>
						</we:repeat>
										
						
		</we:listview>
	</table>
	
leider klappt das nicht so richtig. Kann mir da vielleicht noch jemand helfen wo ich falsch liege?

Vielen Dank

Christian

Re: Feld mit berechnetem Inhalt

Verfasst: Fr 16. Sep 2016, 17:54
von Carrear
cfgerhard hat geschrieben:Hallo,

ich habe dein Beispiel

Code: Alles auswählen

			<table>
								<th>Stipendiat</th>
								<th>Alter</th>
								<we:listview name="Stipendiaten" type="object" order="Nachname" classid="1">
						<we:repeat>
					<tr>	
							<?php
						$now = time();
						$alter = $now - 'Geburtsdatum';
							$obj = new we_objectFile();
							$obj->initByID( $GLOBALS['WE_ID'] );
							$obj->setElement( 'Alter', $GLOBALS['alter'] );
							$obj->we_save();
							$obj->we_publish();
					?>
							
								<td><we:field name="Nachname" />, <we:field name="Vorname" /></td>
								<td><we:field name="Alter" /></td>
							</tr>
						</we:repeat>
										
						
		</we:listview>
	</table>
	
leider klappt das nicht so richtig. Kann mir da vielleicht noch jemand helfen wo ich falsch liege?

Vielen Dank

Christian
  • Was ist "$alter = $now - 'Geburtsdatum';" - Was ist denn da 'Geburtsdatum'? Und die Variable $now, was steht da drin und wie deklarierst du sie?
  • Als was für einen Feldtypen hast du denn das Feld "Alter" in der Klasse deklariert? Bei Datumsfeldern musst du aufs Format achten. Ich bin mir nicht ganz sicher aber ich glaube mich zu erinnern, dass man da tatsächlich noch mit Unix Timestamps arbeiten muss?

Re: Feld mit berechnetem Inhalt

Verfasst: Fr 16. Sep 2016, 22:07
von cfgerhard
Carrear hat geschrieben:
  • Was ist "$alter = $now - 'Geburtsdatum';" - Was ist denn da 'Geburtsdatum'? Und die Variable $now, was steht da drin und wie deklarierst du sie?
Die Variable $now wird mit dem aktuellen Timestamp belegt. Die Deklaration erfolgt durch $now = time(); - Das Geburtsdatum ist ein Datumsfeld (Unix) aus dem Objekt der Klasse Stipendiaten.
[*]Als was für einen Feldtypen hast du denn das Feld "Alter" in der Klasse deklariert? Bei Datumsfeldern musst du aufs Format achten. Ich bin mir nicht ganz sicher aber ich glaube mich zu erinnern, dass man da tatsächlich noch mit Unix Timestamps arbeiten muss?[/list]
Das Alter soll als Integer in das Objekt geschrieben werden.

Re: Feld mit berechnetem Inhalt

Verfasst: Mo 19. Sep 2016, 09:15
von Carrear
Ja aber was ist das denn für eine Schreibweise? Also ich kenne das nicht, dass durch 'Geburtsdatum' der Wert einer Variable angesprochen wird (wo ist das Dollarzeichen und wofür die einfachen Anführungszeichen?). Du ziehst da von einem Timestamp einen String ab. Keine Ahnung was das Ergebnis sein kann - kannst dir ja mal $alter ausgeben lassen.

Re: Feld mit berechnetem Inhalt

Verfasst: Mo 19. Sep 2016, 13:51
von mokraemer
ja das php-Fragment ist total durcheinander. $alter wird lokal gesetzt und global ausgelesen. Der Kode ist so def. ungültig.

Re: Feld mit berechnetem Inhalt

Verfasst: Mo 19. Sep 2016, 20:10
von cfgerhard
mokraemer hat geschrieben:ja das php-Fragment ist total durcheinander. $alter wird lokal gesetzt und global ausgelesen. Der Kode ist so def. ungültig.
Hallo,

und vielen Dank für eure Hinweise. Könnt ihr mir bitte behilflich sein diesen Knoten zu lösen?

Viele Grüße

ChristiaN

Re: Feld mit berechnetem Inhalt

Verfasst: Di 20. Sep 2016, 08:40
von Carrear
Beantworte bitte erstmal meine Frage. Du willst das alter anhand des heutigen Datums und des Geburtsdatums berechnen. In deinem Code steht:

Code: Alles auswählen

$alter = $now - 'Geburtsdatum';
Wobei du $now mit time() erstellst. In der oben genannten Codezeile steht das "-" (Minus) 'Geburtsdatum'. Also rechnest du den Zeitstempel minus einem String. Das macht doch gar keinen Sinn. Du musst erstmal eine Variable Geburtsdatum deklarieren. Ich würde dann eine Funktion schreiben:

Code: Alles auswählen

function getAge( $birthdate ) {
  $birthday = new DateTime( $birthdate );
  $today = new DateTime( date('Y-m-d') );
  $age = $birthday->diff( $today );
 
  return $age->format('%y');
}
Dann schreibst du da oben in deinem Prozedere erstmal das Geburtsdatum der Person in eine Variable und rufst damit diese Funktion auf.

VG Martin