"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

[PHP] daten in einer anderen datei verändern

tomstig 05.08.2004 - 22:34 734 10
Posts

tomstig

OC Addicted
Avatar
Registered: Nov 2003
Location: /home/tomstig/
Posts: 1341
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?

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
keine LAME .php config-files verwenden, sondern ne datenbank?

semteX

Risen from the banned
Avatar
Registered: Oct 2002
Location: Pre
Posts: 14358
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

moidaschl

Vollzeit-Hackler
Avatar
Registered: Aug 2002
Location: 1210, ABK-D/L
Posts: 4029
Code: PHP
//index.php
<?PHP

 require("vars.php"); # vars.php einbinden
 $blabla = 1; # die var $blabla auf eins setzen

?>

nur bleibt dann natürlich blabla nur solang auf eins, bis das script durchlaufen wurde :)
aber ich denke was anderes solls ja ned sein

wenn ned kann ich dir nur
fopen und fread ans herz legen

BuSHidO

ist süß
Registered: Jul 2001
Location: galaxie
Posts: 542
das script mit vars.php?blabla=1 aufrufen ...
oder sessions verwenden

tomstig

OC Addicted
Avatar
Registered: Nov 2003
Location: /home/tomstig/
Posts: 1341
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 />";
?>

vars.php
Code: PHP
<?php
$user_online = 0;
$user_name = "max";
$user_favourite_number = 2;
?>

fehlermeldung: Warning: No ending delimiter '$' found in g:\www\cms\wert ändern\index.php on line 12
(habs getestet, es liegt an dem $file..)

tia

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
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
:rolleyes:

3:
Ich geb dir jetzt nen vorschlag, machs mit ner ini:
config.ini
Code: PHP
user_online = 0
user_name = "max"
user_favourite_number = 2

index.php
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);
?>
Bearbeitet von watchout am 06.08.2004, 22:00

Jehul

Big d00d
Avatar
Registered: Nov 2000
Location: lnz
Posts: 295
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.

tomstig

OC Addicted
Avatar
Registered: Nov 2003
Location: /home/tomstig/
Posts: 1341
na grüß gott...

Zitat von watchout
du hast nen schuss:

nein, definitiv nicht...

Zitat

1:
db quote: "datenbank mag ich dafür nicht verwenden, hab mirs eh schon überlegt..."
wtf is das problem daran?

ich 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

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
:rolleyes:

stimmt, 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

@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 ;)

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von tomstig
ich 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 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 tomstig
stimmt, 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
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:
bei deinem string nun "$", jetzt hat der parser nach dem 2. dollar gesucht, aber keinen gefunden... dollar wäre übrigens eine eher schlechte wahl... ($ wird vom parser als ende der zeile/string gesehen) am besten man nimmt einzeichen, welches nicht in der pattern vorkommt/vorkommen kann.

Zitat 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 ;)
funktionieren tut es - das kann ich dir versichern ;) ich hatte nur einen fehler beim test, und das war ein tippfehler bei ner variablen :p

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25381
Zitat
keine LAME .php config-files verwenden, sondern ne datenbank?
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).
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz