Objekt per PHP erstellen

Hier können Sie Fragen bezüglich des Datenbank-/Objektmoduls stellen.
QuadBlade

Objekt per PHP erstellen

Beitragvon QuadBlade » Mi 20. Jan 2010, 13:51

Hallo zusammen!

Leider bin ich mir nicht sicher, ob diese Unterkategorie die Richtige ist für mein Anliegen.

Ich habe möchte einen Import von Daten aus einer CSV-Datei in WE-Objekte umsetzen.
Das könnte ich prinzipiell über den bereits eingebauten CSV-Import machen, leider ist der aber nicht flexibel genug.
Zum Beispiel möchte ich darüber Bilder importieren, usw.

Nun habe ich das Codebeispiel unter http://documentation.webedition.de/de/w ... t-with-php gefunden, die mir ja schon mal weiterhilft, wenn ich Objekte ändern möchte. Das ist Teil 1, prima!

Da nicht alle Objekte bereits im System existieren, benötige ich die Möglichkeit, Objekte auch anzulegen.
Wie geht das?

Code: Alles auswählen

$obj = new we_objectFile();
$obj->initByID($ArtikelNr);
Das funktioniert nicht, eine neue Nummer kann ich der Funktion initByID scheinbar nicht übergeben...

Hat jemand einen Tipp?

Gruß aus Hamburg
QuadBlade

Benutzeravatar
haydi
Senior Member
Beiträge: 558
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Hirschberg
Kontaktdaten:

Re: Objekt per PHP erstellen

Beitragvon haydi » Mi 20. Jan 2010, 14:05

mit
$obj = new we_objectFile();
legst du eine Instanz (initialisierst ein Objekt) der Klasse we_objectFile an. Damit wird kein neues Objekt erzeugt.

und damit
$obj->initByID($ArtikelNr);
wird mitgeteilt, um welche existierende ID es im folgenden gehen soll (auslesen,manipulieren, usw.)

damit generierst du also kein neues objekt.
Heidi Wetzel
Internet-Applikationen & Webseiten-Erstellung
https://www.heidi-wetzel.de

QuadBlade

Re: Objekt per PHP erstellen

Beitragvon QuadBlade » Mi 20. Jan 2010, 14:21

Hey haydi,
danke für die schnelle Antwort!

Dass es damit nicht funktioniert, habe ich leider auch schon feststellen müssen.
Deshalb die Frage, wie es denn funktioniert?

MarS
Senior Member
Beiträge: 602
Registriert: Mo 2. Mai 2005, 11:30
Wohnort: Kiel
Kontaktdaten:

Re: Objekt per PHP erstellen

Beitragvon MarS » Mi 20. Jan 2010, 14:32

Ich leg' die immer über <we:write> an?
Theoretisch müsste man "nur" gucken, was das we:write type="object" macht und das nachbauen.

Gruß, Martin

Sophia
Member
Beiträge: 62
Registriert: Mo 4. Mai 2009, 22:56

Re: Objekt per PHP erstellen

Beitragvon Sophia » Di 9. Feb 2010, 21:23

also im Prinzip geht das so:

include_once($_SERVER["DOCUMENT_ROOT"]."/webEdition/we/include/we_import/importFunctions.class.inc.php");

alle erforderlichen Parameter füllen:
$classid = ..; // id der Klasse

alle Objektfelder als richtig gefülltes array anlegen, in diesem Beispiel steht alles bereits im array $fields
$objfields=
array(
"hotel_nr"=> $fields[0],
"ort_id"=> $fields[1],
"hotel_name"=> $fields[2],
"hotel_description"=>$fields[3],
"hotel_pic_url1"=>$fields[4],
"hotel_pic_url2"=>$fields[5],
"email"=> $fields[6]
);
$rcd_name = $objfields["hotel_nr"]; // der Name des neuen Objektes, in diesem Beispiel das, was in $fields[0] steht
$collision="replace"; // überschreibt vorhandene Objekte
$categories=""; // weiß nicht, wie man die angibt

Objekt anlegen:
importFunctions::importObject($classid, $objfields, $categories, $rcd_name,true,$collision);

LG Sophia

Benutzeravatar
biwaMedia
webEdition Partner
webEdition Partner
Beiträge: 667
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Objekt per PHP erstellen

Beitragvon biwaMedia » Do 16. Feb 2012, 20:34

Hi,

Objekte mit imporObject erstellen klappt wunderbar, nur kann ich trotz stöbern in der KLasse nicht herausfinden, wie man ein Objekt in ein bestimmtes Verzeichnis der Objekt- Klasse speichern kann. Kann man das mit ParentID oder ähnlich übergeben?

Danke für Hilfe - auch wenn ich schon vermute dass das einfach nicht geht...
webEdition Partner - http://www.blickfang-media.com
Vorstand im webEdition e.V. (Kassenwart)

mokraemer
Senior Member
Beiträge: 3051
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Objekt per PHP erstellen

Beitragvon mokraemer » Fr 17. Feb 2012, 02:42

die Importfunktion killt automatisch alle Pfade, wenn ich das grad richtig gesehen hab.
webEdition-Kern-Entwickler

ThomasGoebe
Senior Member
Beiträge: 865
Registriert: Mo 26. Jul 2010, 23:44
Wohnort: Hannover
Kontaktdaten:

Re: Objekt per PHP erstellen

Beitragvon ThomasGoebe » Fr 17. Feb 2012, 13:21

liefert sie denn eine ID zurück? Dann könnte man anschließend mit initbyID arbeiten und den Pfad neu setzen.

Aber dann kann man auch gleich das Objekt ohne importFunction selbst erstellen.

@Marc: ich brauche das auch oft, wir sollten mal über eine Möglichkeit nachdenken, per PHP Objekte anzulegen, die unabhäniger von den internen Funktionen werden. Vielleicht lässt sich we:write noch anpassen, so dass die Daten auch aus einem Array statt den REQUEST Vars kommen können?
Thomas Göbe
webEdition Experte aus Hannover
Autor des 1. webEdition Buch (gemeinsam mit Andreas Witt)
web: http://www.projektheimat.de

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1626
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: Objekt per PHP erstellen

Beitragvon WBTMagnum » Fr 17. Feb 2012, 16:06

ThomasGoebe hat geschrieben:@Marc: ich brauche das auch oft, wir sollten mal über eine Möglichkeit nachdenken, per PHP Objekte anzulegen, die unabhäniger von den internen Funktionen werden. Vielleicht lässt sich we:write noch anpassen, so dass die Daten auch aus einem Array statt den REQUEST Vars kommen können?
Das wäre wirklich eine feine Sache. Aber warum über PHP? Warum nicht gleich über das we-Markup? Ich könnte mir das so vorstellen:

Code: Alles auswählen

<we:write classid="1"....>
  <we:data name="" [value=""] [id=""] [from="" namefrom=""]>/
</we:write>
Das ist jetzt natürlich nicht komplett durchgedacht und müsste für die verschiedenen Anwendungsfälle durchgespielt werden. Aber so etwas in der Art würde die Erstellung von Objekten auch ohne PHP erlauben. Der Weg über die REQUEST Variablen ist ja ein Notbehelf.

LG,
Sascha

mokraemer
Senior Member
Beiträge: 3051
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Objekt per PHP erstellen

Beitragvon mokraemer » Fr 17. Feb 2012, 18:23

ja, wenn dann über we-tags - ich weiß auch nicht, warum der Pfad gekillt wird, ist aber so. Hab das nur kurz mal nachgeschaut.

Wenn dann FR, und nicht mehr für 6.3
webEdition-Kern-Entwickler

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1626
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: Objekt per PHP erstellen

Beitragvon WBTMagnum » Sa 18. Feb 2012, 01:14

@FR: http://qa.webedition.org/tracker/view.php?id=6070

Ich hab zwar keinen Einblick in die Entwicklung/Roadmap, hätte das jetzt aber auch noch nicht in der Version gesehen.


LG,
Sascha

Creutzburg
Senior Member
Beiträge: 425
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Dresden
Kontaktdaten:

Re: Objekt per PHP erstellen

Beitragvon Creutzburg » Mo 10. Mär 2014, 12:20

Dieser Thread ist zwar schon etwas älter, aber hat denn jemand ein Beispiel, wie man neue Objekte per PHP (d.h. ohne WE-Tags) anlegen kann und gleichzeitig den Pfad setzen kann (was ja bei der von Sophia erwähnten Import-Klasse nicht geht)?

Oder anders gefragt: hat jemand ein funktionierendes Beispiel, was auf dem Konstrukt $obj = new we_objectFile() basiert und am Ende ein neues Objekt anlegt?

Dank & Gruß,
Alex
http://www.xport.de – Internet-Agentur für Hotels
http://www.domainpreisvergleich.de – Domain-Preisvergleich inkl. Verfügbarkeits-Check – ist meine Wunschdomain noch frei, und wo registriere ich sie am günstigsten?

Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 646
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover
Kontaktdaten:

Re: Objekt per PHP erstellen

Beitragvon Carrear » Mi 16. Dez 2015, 17:58

Man muss den Code wohl für die neueren Versionen etwas aktualisieren:

Code: Alles auswählen

	foreach($members as $member) {
		$classid = 1;
		$objfields = array("Nummer"=> $member);
		$rcd_name = $objfields["Nummer"];
		$collision = "replace";
		$categories = "";
		$rcd_name =  we_import_functions::correctFilename($objfields["Nummer"]);
		we_import_functions::importObject($classid, $objfields, $categories, $rcd_name, true, true);
	}
Davon ab - es funktioniert bei mir nicht. Es läuft zwar alles ohne Probleme durch und meckert nicht, aber Objekte finde ich im Anschluss weder in der DB noch im Backend. Sieht man einen offensichtlichen Fehler? Die Nummer, welche ich als einziges Feld einpflege ist immer eine Kombination aus Zahlen und je einem Unterstrich.

Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 646
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover
Kontaktdaten:

Re: Objekt per PHP erstellen

Beitragvon Carrear » Do 17. Dez 2015, 13:41

Nach einem Update von 6.3.9 auf die aktuellste Version 6.4.X klappte das ganze. Allerdings musste ich dann den Import der Objekte auf 200 pro durchlauf reduzieren. Da hat jeder Skriptaufruf 16 Sekunden gedauert und das ist bei 80.000 Datensätzen etwas heftig für den Benutzer (ca.50 Minuten). Habe es jetzt per PDO in eine webEdition-Fremde Tabelle geschoben, da dauert der Import in 1000er-Schritten insgesamt ca. 1 Minute.

planb
Junior Member
Beiträge: 3
Registriert: So 27. Dez 2015, 13:32

Re: Objekt per PHP erstellen

Beitragvon planb » So 27. Dez 2015, 13:47

Wie kann man verhindern, dass eine Objekt welches es schon gibt (gleicher Name) nochmals erstellt wird? Nutze den Code um die Inhalte eines Instagram-Accounts auszulesen und als Objekte in webEdition zu speichern.

Code: Alles auswählen

<?php
 foreach($result->data as $post):
  $classid = 4;
  $timestamp = $post->created_time;
  $date = gmdate("Y-m-d-H-i-s", $timestamp);
  $objfields = array("url"=> $post->images->standard_resolution->url);
  $rcd_name = $objfields["id"];
  $categories = "";
  $collision = "replace"; 
  $rcd_name =  we_import_functions::correctFilename($date);
  we_import_functions::importObject($classid, $objfields, $categories, $rcd_name, true, true);
 endforeach
?>
Vielen lieben Dank schon mal für eure Hilfe.


Zurück zu „DB-/Objektmodul“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast