[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Mehrere Datensätze in einem rex_form bearbeiten - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
wolfgang
Beiträge: 126
Registriert: 20. Okt 2005, 20:52
Wohnort: 23966 Tressow
Kontaktdaten: Website

Mehrere Datensätze in einem rex_form bearbeiten

1. Mär 2010, 19:18

Hallo.
Gibt es eigentlich die Möglichkeit in einem rex_form mehrere Datensätze gleichzeitig zu bearbeiten?

Dieses hier ...

Code: Alles auswählen

$form4 = new rex_a350_form($table."_attributes2values", "Technische Daten",true,"clang = $clang AND item_id = ".rex_request('oid','int'));
spukt mir diese Fehlermeldung aus:

Fatal error: rex_form: Die gegebene Where-Bedingung führt nicht zu einem eindeutigen Datensatz!

Oder gibt es die Möglichkeit Feldinhalte über rex_list direkt zu bearbeiten?

Es soll eine Reihe von technischen Daten für Geräte direkt erfasst werden können. Die Parameter sind in einer eigenen Tabelle gespeichert - wegen Mehrsprachigkeit und so.

Danke und Grüße,
Wolfgang

ps. Uuups - nicht wundern, ich habe die rex_a350_form etwas modifiziert, damit sie wieder einen where-Parameter akzeptiert und verarbeitet - das klappt soweit auch.

Benutzeravatar
timo.huber
Beiträge: 305
Registriert: 22. Dez 2009, 13:26

1. Mär 2010, 20:07

Hoi,

evtl. hilft dir dieser Interessante Thread weiter http://forum.redaxo.de/ftopic13989.html?
:P

MFG
$glaskugel = new rex_glaskugel();
$loesung = $glaskugel->getLoesung("problem");
foreach ($loesung as $l)
{
echo $l;
}

wolfgang
Beiträge: 126
Registriert: 20. Okt 2005, 20:52
Wohnort: 23966 Tressow
Kontaktdaten: Website

1. Mär 2010, 20:18

Hallo Timo,
Danke für den Tipp. Allerdings blicke ich das noch nicht ganz.
Mit einem VIEW und einem INNER JOIN kann ich wohl mehrere Tabellen miteinander verknüpfen. Das klappt auch ganz gut.
Aber wie bekomme ich dann mehrere Tabellenzeilen in einen Datensatz im View?

Der View sieht beispielsweise so aus:

Code: Alles auswählen

Attribut        | Wert
----------------------
Größe           |  230
Gewicht         |   37
Geschwindigkeit |   88
Für das rex_form bräuchte ich dann

Code: Alles auswählen

n1     | v1    | n2       | v2  | n3               | v3  | usw.
---------------------------------------------------------------
Größe  | 230   | Gewicht  | 37  | Geschwindigkeit  | 88  | usw.

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

2. Mär 2010, 00:26

Hi wolfgang!

Jetzt hatte ich schon eine schöne Antwort geschrieben und wollte lang und breit erklären, wie das mit Views funktioniert, muss mich nun aber entschuldigen und einfach plump sagen, dass es gar nicht funktioniert.

Wahrscheinlich wirst du also nicht drum herum kommen, entweder deine eigenen INSERT- und UPDATE-Statements zu schreiben oder z. B. mit Stored Procedures zu arbeiten. Wobei ich bei letzerem genauso falsch wie bei den Views liegen könnte. Da fehlt mir einfach die praktische Erfahrung.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

wolfgang
Beiträge: 126
Registriert: 20. Okt 2005, 20:52
Wohnort: 23966 Tressow
Kontaktdaten: Website

2. Mär 2010, 09:08

Danke Euch! - Auch das ist ja eine Hilfe.
Ich werde Euch über die Ergebnisse berichten.
Allen einen wunderschönen Tag,
Wolfgang
ps - schon sehr gespannt auf die 4.3 Beta ...

wolfgang
Beiträge: 126
Registriert: 20. Okt 2005, 20:52
Wohnort: 23966 Tressow
Kontaktdaten: Website

2. Mär 2010, 18:50

Hallo,
hier also das Ergebnis.
Ist noch ziemlich Patchwork, sodass ich es nicht komplett hier rein stellen kann.
Ich habe es folgendermaßen gelöst.
Eine View auf die entsprechenden Tabellen gesetzt - vielen Dank für die Hinweise hierzu.

CREATE VIEW rex_350_machinery_attributes2values AS SELECT rex_350_machinery_values.id as values_id, machine_id, attribute_id, value, pid, name, unit, clang, prio FROM rex_350_machinery_values INNER JOIN rex_350_machinery_attributes ON attribute_id = pid;

Damit hatte ich dann immerhin schon den Parameternamen (Länge / Length ...) usw., ist ja mehrsprachig - mit dem jeweiligen Wert zusammengebracht.
Anschließend habe ich die rex_a350_form Klasse so umgebogen, dass sie nicht meckert, wenn sie keine Table übergeben bekommt:

Zeile 24

Code: Alles auswählen

if ($tableName && $tableName != $REX['TABLE_PREFIX'].'350_'.$page)
Anschließend mussten noch die Felder generiert werden:

Code: Alles auswählen

  $sql = new rex_sql;
  $sql->debug = true;
  $qry = "SELECT values_id, name, unit, value FROM ".$table."_attributes2values WHERE clang = $clang AND machine_id = ".rex_request('oid','int')." ORDER BY prio";
  $sql->setQuery($qry);
  $attribute_fields = $sql->getArray();


  $form4 = new rex_a615_form2();
  $form4->addParam('clang', $clang);

  foreach ($attribute_fields as $attributes) {
      $field =& $form4->addTextField("attr_".$attributes['values_id'],$attributes['value']);
      $field->setLabel($attributes['name']." (".$attributes['unit'].")");
  }
Fürs Speichern gibt es dann wieder eine eigene save() Funktion:

Code: Alles auswählen

	function save() {
		global $REX;
		$sql = rex_sql::getInstance();
		foreach($this->getFieldsets() as $fieldsetName) {
			$fieldValues = $this->fieldsetPostValues($fieldsetName);
			foreach($fieldValues as $fieldName => $fieldValue) {
				$sql = new rex_sql;
				$qry = 'UPDATE rex_350_machinery_values SET value="'.$fieldValue.'" WHERE id = '.substr($fieldName,5);
				$sql->setQuery($qry);
			}
		}
		return true;
	}
Ist vielleicht nicht alles fürs Lehrbuch und auch nicht fertig. Wer mitwirken oder reinschauen will, bekommt gerne ftp und Redaxo Daten per pn.

Gruß Wolfgang

Zurück zu „Allgemeines [R4]“