Array aktualiseren über Mini-BO
heinzi
- php
Hi zusammen,
ich stehe gerade mal ganz arg auf dem Schlauch:
ich habe in einer Datei array.php ein Array stehen, welches ich für ein Skript zur Formatierung und Konfiguration benutze.
Nun will ich ein Mini-Backoffice für dieses Array schreiben bzw. bin gerade dabei.
ich lese also in backoffice.php das Array aus und stelle es in einem Formular dar.
Hier kann ich die Werte ändern und das Ganze abschicken, damit über die Datei update.php dieses komplette POST-Array, welches von der Struktur her dem Ursprünglichen entspricht, wieder in array.php gespeichert wird.
Soweit zur groben Vorgehensweise.
Nun zum Problem: Wie ändere ich am besten die Array-Daten in array.php bzw. wie speichere ich die neuen Werte???
Stehe da vollkommen auf dem Schlauch gerade, bin für jede kurze Hilfe/Denkanstoss dankbar.
Vielen dank, Heinz I.
Hi Folks,
Nun zum Problem: Wie ändere ich am besten die Array-Daten in array.php bzw. wie speichere ich die neuen Werte???
$array[0] = "geändert";
Oder wo liegt dein Problem?
Kann ich leider aus deinem Text nicht wirklich entnehmen!
Gruß Sascha
ich würde gerne das gesamte Array ersetzen.
ich lese aus, ändere durch Input-felder und will dann das abgeschickte $_POST als Ursoprungsarray speichern...
Beispiel:
$test_array = array(
'test1'=> array(
'id' => 'test1',
'anwendungen' => array('1','2','3'),
'name' => 'Name'),
'test2' => array(
'id' => 'test2',
'anwendungen' => array('1'),
'name' => 'Name'),
);
Das abgeschickte POST sieht so aus:
$_POST = array(
'test1'=> array(
'id' => 'test1',
'anwendungen' => array('1','2','3'),
'name' => 'GEAENDERT'),
'test2' => array(
'id' => 'test2',
'anwendungen' => array('1'),
'name' => 'GEAENDERT'),
);
Ich will nun $test_array, welches in array.php steht, komplett durch $_POST, im Skript update.php ersetzen...
Da stehe ich gerade auf dem Schlauch...
Danke,Heinz
Hi Folks,
Ich will nun $test_array, welches in array.php steht, komplett durch $_POST, im Skript update.php ersetzen...
Dann setze doch an den Anfang der update.php unset($test_Array);
.
Damit hast du das Array komplett gelöscht und danach erzeugt du mit den Daten aus $_Post ein neues Array mit dem gleichen Namen.
Wichtig ist nur, dass update.php zugriff auf die array.php hat.
Zum Beispiel via include()
Gruß Sascha
Das hatte cih ja ales erstes probiert:
require_once 'array.php';
unset ($test_array);
$test_array = $_POST;
dann leite ich per header() wieder an backoffice.php weiter und es erscheinen aber wieder die alten Daten...
gruß Heinz
Hi Folks,
Das hatte cih ja ales erstes probiert:
require_once 'array.php';
unset ($test_array);
$test_array = $_POST;
>
> dann leite ich per header() wieder an backoffice.php weiter und es erscheinen aber wieder die alten Daten...
Erkläre doch mal bitte, wie die array.php jeweils in die einzelnen Seiten eingebunden wird.
Ich glaube dein Problem ist, dass du versuchst eine existierende Datei dauerhaft zu verändern.
Wenn du jetzt $test\_array = "bliblablubb"; den Wert des Arrays veränderst und die Seite schließt (das tust du bereits, indem du auf backoffice.php wechselst), dann hat $test\_array wieder seinen Ursprungswert.
Ich weiß ja nicht was du egtl vorhast, wieso du also den Wert ändern willst.
Aber vllt solltest du dich mal mit Sessions beschäftigen.
Gruß Sascha
--
\-----------------------
<a href="http://www.bohrmedia.de" target="\_blank">BohrMedia.de</a>
Tach auch.
Nun zum Problem: Wie ändere ich am besten die Array-Daten in array.php bzw. wie speichere ich die neuen Werte???
Bevor du anfängst, einen solchen "Writer" zu schreiben, schau doch mal, ob schon existierendes dir hilft.
Im Bereich PHP habe ich direkt mit dem Konzept noch nicht gearbeitet, kenne es aber aus perl gut: Serialisieren.
Damit kannst du sehr einfach eine speicherbare Repräsentation deines Daten-Objektes erzeugen (mit serialize), und mit unserialize kannst du diese dann wieder auseinanderpfriemeln.
dein array.php könnte also so aussehen:
$array = unserialize('hier der String, der von serialize erzeugt wurde');
und beim updaten schreibst du (zB)
$file = fopen('array.php', 'w');
fputs($file, '$array = unserialize(\'' . serialize($neuer_array) . '\');');
fclose($file);
Sicherlich nicht der beste Weg, den du einschlagen kannst, aber ein funktionierender.
Bis die Tage,
Matti
Moin!
Soweit zur groben Vorgehensweise.
Nun zum Problem: Wie ändere ich am besten die Array-Daten in array.php bzw. wie speichere ich die neuen Werte???
Das kommt auf die Feinheiten an.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
Hello,
*mmmh*
Mit include kannst Du aber nur eine für dem Parser lesbare, mit einem Editor oder Programm) dargestellte Form einlesen, also Quelltext.
Da steht dann in der einzubindenden Datei sowas, wie
$_meinArray = array(1,2,3,4,5);
Nach dem Einbinden steht im aktiven Script die Variable $_meinArray zur Verfügung.
In dieser Variable kannst Du die Elemente [0],[1],... ändern.
Um das geänderte Array in adäquater Form abspeichern zu können, müsstest Du wieder einen Quelltext erzeugen. Das ginge mit einer Schleife:
$out = '';
if (is_array($_meinArray))
{
$out .= 'array(' . implode(',',$_meinArray) . ');';
}
Dann kannst Du $out wegschreiben.
Schauen wir aber genauer hin, gilt dieser Ansatz nur für numerische Werte. Strings müssten anders behandelt werden, Subarrays ebenfalls, usw. Das macht das Ganze kompliziert.
Warum gibt es denn da keine fertige Lösung?
Gibt es ja! Aber eben nicht für Quelltext, sondern für Daten. PHP bietet die Serialiserung und Deserialisierung von Arrays an. http://de.php.net/manual/en/function.serialize.php
Hier kann ein Array in das Script eingelesen werden und kontrolliert einer Variablen zugewiesen werden und nach Verarbeitung und Re-Serialisierung wieder in eine Datei zurückgeschrieben werden.
Nur die Erzeugung des ersten serialierten Arrays, das in einer Datei abgelegt wurde, erfordert eben ein wenig Gehirnschmalz....
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hi,
Um das geänderte Array in adäquater Form abspeichern zu können, müsstest Du wieder einen Quelltext erzeugen. Das ginge mit
http://php.net/manual/en/function.var-export.php
MfG ChrisB
Hello,
Um das geänderte Array in adäquater Form abspeichern zu können, müsstest Du wieder einen Quelltext erzeugen. Das ginge mit
Oh ja, danke.
Diese für mich bisher immer nutzlose Funktion hatte ich vollkommen verdrängt ;-P
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg