URL: https://www.overclockers.at/coding-stuff/php_daten_in_einer_anderen_datei_veraendern_121191/page_1 - zur Vollversion wechseln!
angenommen ich hab in vars.php den wert $blabla = 0; und ich möchte von index.php aus diesen wert auf 1 stellen, sprich: $blabla = 1;
wie mach ich das am simpelsten?
keine LAME .php config-files verwenden, sondern ne datenbank?
du liest die vars.php aus, speicherst alles
dann machst string replace und schreibst die file wieder.
tada the end
oder einfach auf config files sch.... und datenbank verwenden
Code: PHP//index.php <?PHP require("vars.php"); # vars.php einbinden $blabla = 1; # die var $blabla auf eins setzen ?>
das script mit vars.php?blabla=1 aufrufen ...
oder sessions verwenden
ich mag die variable in der anderen datei ändern, nicht im script...
datenbank mag ich dafür nicht verwenden, hab mirs eh schon überlegt...
hab mich schon mit file, preg_replace, fopen, fwrite, fclose gespielt, aber irgendwie wirds nix, weil ich mich nicht mit den depperten suchbegriffen auskenn, die man bei preg_replace braucht...
folgender code bis jetzt:
index.php
Code: PHP<?php include("vars.php"); echo "Useronline: " . $user_online . "<br />"; echo "Username: " . $user_name . "<br />"; echo "Lieblingszahl: " . $user_favourite_number . "<br />"; echo "<br /><br />"; #$handle = fopen("vars.php","r+"); $array = file("vars.php"); $file = implode("\n", $array); preg_replace("\$user_online = 0","\$user_online = 1",$file); echo "<br /><br />"; include("vars.php"); echo "Useronline: " . $user_online . "<br />"; echo "Username: " . $user_name . "<br />"; echo "Lieblingszahl: " . $user_favourite_number . "<br />"; ?>
Code: PHP<?php $user_online = 0; $user_name = "max"; $user_favourite_number = 2; ?>
du hast nen schuss:
1:
db quote: "datenbank mag ich dafür nicht verwenden, hab mirs eh schon überlegt..."
wtf is das problem daran?
2:
du verwendest regexp kennst dich net aus
du erkennst (vermeintlich) das problem erkennen und änderst nix daran?
du kopierst unvollständig aus irgendwelchen beispielen
3:
Ich geb dir jetzt nen vorschlag, machs mit ner ini:
config.ini
Code: PHPuser_online = 0 user_name = "max" user_favourite_number = 2
Code: PHP<?php function vars_load($s_filename = 'config.ini') { // daten aus der ini-datei lesen return parse_ini_file($s_filename); } function vars_save(&$am_vars,$s_filename = 'config.ini') { // string generieren $s_filecontent = ''; foreach($am_vars as $s_varname => $m_vardata) { $s_filecontent.= $s_varname.' = "'.$m_vardata.'"'.chr(10); } // datei schreiben $r_fp = fopen($s_filename,'w'); fwrite($r_fp,$s_filecontent); return fclose($r_fp); } function vars_output(&$am_vars) { foreach($am_vars as $s_varname => $m_vardata) { echo $s_varname.' = "'.$m_vardata.'"<br />'; } } // test // daten in array $a_vars laden $am_vars = vars_load(); // ausgeben vars_output($am_vars); // daten ändern $am_vars['user_name']='maxi'; // speichern, neu laden & ausgeben vars_save($am_vars); $am_vars = vars_load(); vars_output($am_vars); ?>
hoi!
ich würde mal gern wissen, was der sinn des scriptes ist *G*
würd sicher andre möglichkeiten auch geben.
zum script:
der fehler liegt im preg_replace
so sollts funktionieren:
preg_replace('!\$user_online = 0!','\$user_online = 1',$file);
oder über string-replace:
str_replace('$user_online = 0','$user_online = 1',$file);
mfg.
na grüß gott...
Zitat von watchoutdu hast nen schuss:
Zitat
1:
db quote: "datenbank mag ich dafür nicht verwenden, hab mirs eh schon überlegt..."
wtf is das problem daran?
Zitat
2:
du verwendest regexp kennst dich net aus
du erkennst (vermeintlich) das problem erkennen und änderst nix daran?
du kopierst unvollständig aus irgendwelchen beispielen
und wenn du jetzt einfach das file erst dann erstellst wenn der user eben diese daten eingibt? - klar, bleibt noch die möglichkeit einer späteren änderung, aber is die frage wieviel dann überhaupt noch von deinem script läuft...Zitat von tomstigich mag das script schreiben, damit, wenn jem. die site zum ersten mal betritt, auf die konfigurationsseite weitergeleitet wird. dort kann er selber bestimmen, wie die db heißen soll, die dann später verwendet wird. natürlich könnte ich eine anlegen, reinschreiben, dass er schon da war, und wenn er eine neue, mit einem eigenen namen macht, die alte löschen. ich könnte auch ganz simpel cookies erstellen, aber die löschen sich auch irgendwann. oder ich könnte irgendeine datei erstellen (z.b. blabla.php) und dann mit file_exists() prüfen, ob so eine schon existiert, wenn nicht, dann war er anscheinend noch nicht auf dieser seite. und deshalb möchte ich es in einer datei speichern, wo ich auch noch andere optionen speichern kann, wenn ich will
und das anhand von beispielen, denn anders geht's ja nicht..., is egal - übrigens liegt dein fehler darin (wie von jehul zwar erkannt, aber nicht direkt angesprochen) dass in pcre-regexp der pattern einen delimiter braucht. dafür wird ganz einfach das erste zeichen im string angenommen:Zitat von tomstigstimmt, mit regexp kenn ich mich nicht aus, ich hab einfach nur herumexperimentiert.
nein, ich hab das problem nicht erkannt, weil ich mich mit regexp nicht auskenne
nein, ich hab keine unvollständigen bsps kopiert, ich hab mir das bisher selber zusammengedichtet
funktionieren tut es - das kann ich dir versichernZitat von tomstig@3: danke fürs script, ich werds noch ausprobieren, aber ich fahr in 10 min nach melk zum "im namen der rosa" (open-air-theater) und wollte noch schnell antworten
full ack! mit db arbeiten ist 100x leichter, webserver unabhängiger und _sicherer_ als mit config.php dateien arbeiten. größter vorteil ist die leichte bearbeitung der datensätze (zB alle löschen, oder alle der vorjahres löschen).Zitatkeine LAME .php config-files verwenden, sondern ne datenbank?
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025