Hallo an alle,
wenn ich bei WE ein Objekt erstelle, wird diesem eine ID gegeben, die eine fortlaufende Nummer ist. Meine Frage ist nun: Webedition weiß ja, welchen Wert die nächste ID haben wird, kann man das irgendwie Abfragen? Gibt es da einen PHP Befehl? Ich bedanke mich mal im Vorraus.
Andreas Pitsch
Höchste aktuelle Objekt ID ausgeben.
Moin,
so aus der Hüfte
so aus der Hüfte
- Code: Alles auswählen
<we:field name="WE_ID" />
Viele Grüße
Mobby
webEdition 8.1.0 (Ahlberg) (8.1.0.0, Revision: 10599)
Mobby
webEdition 8.1.0 (Ahlberg) (8.1.0.0, Revision: 10599)
Damit kann ich die ID des Objekts ausgeben, dass ich im moment über eine Listview angesteuert habe. Das such ich leider nicht. Ich such den Wert, den Webedition dem nächsten Objekt, das ich erstellen werde übergeben wird. Also: ich möchte im Voraus wissen, welche ID das Objekt waben wird, was ich jetzt über Frontendedit erstellen werde.
Naja, er meinte sicher die ID des Objektes das als nächstes erstellt wird. Also praktisch den Wert auto_increment+1 der entsprechenden Tabelle.
Also sowas hier z.B. http://de.php.net/manual/en/function.my ... .php#81129
Wenn man nur eine einzige Klasse hat kann man auch ein we:listview hernehmen und nach der ID sortieren, mit rows=1. Dann die ID um 1 erhöhen. Dieser Wert entspricht allerdings nicht 100%ig dem auto_increment-Wert. Beim löschen vom Objekt mit der höchsten ID wird der auto_increment-Wert meines Wissens nach nicht zurückgesetzt.
Je nachdem was Du vorhast ist das sowieso eine riskante Sache. Wenn mehrere Redakteure parallel Objekte anlegen kommt es da auch schnell zu Problemen.
Beschreibe doch mal wofür Du das brauchst. Den einzigen Fall den ich mir momentan vorstellen kann, sollte man besser mit einem Hook lösen.
Also sowas hier z.B. http://de.php.net/manual/en/function.my ... .php#81129
Wenn man nur eine einzige Klasse hat kann man auch ein we:listview hernehmen und nach der ID sortieren, mit rows=1. Dann die ID um 1 erhöhen. Dieser Wert entspricht allerdings nicht 100%ig dem auto_increment-Wert. Beim löschen vom Objekt mit der höchsten ID wird der auto_increment-Wert meines Wissens nach nicht zurückgesetzt.
Je nachdem was Du vorhast ist das sowieso eine riskante Sache. Wenn mehrere Redakteure parallel Objekte anlegen kommt es da auch schnell zu Problemen.
Beschreibe doch mal wofür Du das brauchst. Den einzigen Fall den ich mir momentan vorstellen kann, sollte man besser mit einem Hook lösen.
Es geht um eine Tabelle, die von ungefähr 20 Personen bearbeitet wird. Also eine Online Tabelle über TableKit. Ein paar wenige dieser Personen dürfen Einträge anlegen. Dabei wird über ein DOM Script eine Zeile hinzugefügt in der die ID des Objektes (Eintrag) als ID des <tr> Tags verwendet wird. Das objekt wird über ein HTTPRequest erzeugt (PHP Script im Hintergrund).
Also es würde mir auch helfen, wenn ich die ID von einem Frisch erzeugten Objekt auslesen könnte.
Also es würde mir auch helfen, wenn ich die ID von einem Frisch erzeugten Objekt auslesen könnte.
Das dachte ich mir. Und das kannst Du ganz leicht mit Hooks umsetzen.Andreas Pitsch;51036 hat geschrieben:Also es würde mir auch helfen, wenn ich die ID von einem Frisch erzeugten Objekt auslesen könnte.
Mit AJAX kannst Du dort nicht mehr arbeiten, da die Hooks nicht direkt im Browser laufen, aber Du kannst Dein PHP Script ja auch so ansprechen bzw. die entsprechenden Aktionen direkt im Hook definieren.
Kleiner Tip noch, um nur eine bestimmte Klasse im Hook zu behandeln kannst Du in der Hook-Funktion die Klasse so abfragen:
Code: Alles auswählen
if([COLOR="Magenta"]$we_doc->TableID[/COLOR] && $we_doc->TableID==[COLOR="DarkOrange"]2[/COLOR]) {...}
* ID der zu behandelnden Klasse
Wie Du dann an die ID kommst, steht grob beschrieben hier: http://forum.webedition.de/showpost.php ... ostcount=2
@mobby: NP
@deemes: Ich versteh die Hooks noch nicht ganz....
Ich versteh nur, dass , wenn ich ein Objekt speicher oder lösche oder so eine Funktion ausgeführt wird?! Ist das diese weCustomHook_AKTION();? Muss ich diese Funktion dann in der PHP definieren, in der der we:write-Tag steht?
Wenn das alles so korrekt ist:
Was ist bei mir Table bzw. wie kann ich es herausfinden?
Danke
Andreas
@deemes: Ich versteh die Hooks noch nicht ganz....
Ich versteh nur, dass , wenn ich ein Objekt speicher oder lösche oder so eine Funktion ausgeführt wird?! Ist das diese weCustomHook_AKTION();? Muss ich diese Funktion dann in der PHP definieren, in der der we:write-Tag steht?
Wenn das alles so korrekt ist:
Code: Alles auswählen
<?php
function mysql_next_id($table) {
$result = mysql_query('SHOW TABLE STATUS LIKE "'.$table.'"');
$rows = mysql_fetch_assoc($result);
return $rows['auto_increment'];
}
?>
Danke
Andreas
Exakt.Andreas Pitsch;51039 hat geschrieben:Ich versteh nur, dass , wenn ich ein Objekt speicher oder lösche oder so eine Funktion ausgeführt wird?! Ist das diese weCustomHook_AKTION();?
Und "AKTION" ersetzt Du durch die entsprechende Aktion, wie z.B. "publish" Wann immer dann ein Dokument/Objekt veröffentlich wird, wird dieser Hook aufgerufen.
Wir bleiben mal beim Beispiel "publish", kannst das ja beliebig anpassen.
Du erstellst eine Datei namens "weCustomHook_publish.inc.php" und definierst darin die gleichnamige FunktionMuss ich diese Funktion dann in der PHP definieren, in der der we:write-Tag steht?
Code: Alles auswählen
function weCustomHook_publish($we_doc, $appName='') {
}
Das brauchst Du alles gar nicht. Die ID des gespeicherten Objekts befindet sich irgendwo in der Variable $we_doc. Mach eine Testausgabe, so wie ich es im anderen Thread beschrieben habe. $we_doc ist ein Objekt, die ID ist vermutlich in $we_doc->ID oder $we_doc->OF_ID gespeichert. Das musst Du aber selbst verifizieren/rausfinden.Wenn das alles so korrekt ist:Was ist bei mir Table bzw. wie kann ich es herausfinden?Code: Alles auswählen
<?php function mysql_next_id($table) { $result = mysql_query('SHOW TABLE STATUS LIKE "'.$table.'"'); $rows = mysql_fetch_assoc($result); return $rows['auto_increment']; } ?>
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast