| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

05-06-2011, 16:04
|
|
cxxl
Registrierter Benutzer
|
|
Registriert seit: Mar 2011
Beiträge: 12
|
|
$POST array in Datei schreiben
Hallo zusammen,
Heute versuch ich mich an einer Sache die mir nicht so ganz einleuchten mag.
Ich lese eine Datei Zeilenweise ein, trenne sie an einer bestimmten Stelle um die Werte mit eine einigen Inputfeldern zu bearbeiten. Soweit weit so gut.
Nun sollen diese neuen Werte natürlich auch wieder zurück in die Datei.
Ab hier gibt es Probleme. Den funktionierenden $_POST bekomm ich hin, aber nicht mehr das Schreiben in die Datei
Hier meine Testdatei im Überblick
PHP-Code:
<?php
// $_POST und Datei schreiben if (isset($_POST['eintragen'])) { // Maskierende Slashes aus POST entfernen $_POST = get_magic_quotes_gpc() ? array_map('stripslashes',$_POST) : $_POST;
// Inhalte der Felder aus POST holen $language = $_POST['language']; $adapter = $_POST['adapter']; $performance = $_POST['3D_Performance']; $resolution_W = $_POST['Resolution_W']; $resolution_H = $_POST['Resolution_H']; $resolution_Bpp = $_POST['Resolution_Bpp']; $windowed = $_POST['Windowed'];
// Testausgabe print "<pre>"; print_r($_POST); print "</pre>";
// ... wie bekomm ich jetzt das array wieder in die Datei geschrieben? }
// Datei einlesen $file = file('arma2_co.cfg'); foreach($file as $line) { // Schleife läuft so lang bis alle Zeilen durch sind $row = explode("=", $line); // Zerteilung der Zeilen $key = trim($row[0]); // Leerzeichen am Anfang und Ende Löschen $val = trim($row[1]); // Leerzeichen am Anfang und Ende Löschen
// Test - Zeichen "; entfernen $test = array("\"", ";"); $raffel[$key] = str_replace($test,"",$val);
// Testausgabe print "<pre>"; print_r($raffel); print "</pre>"; }
?> <form name="mu" action="" method="post" enctype="text/html"> <input type="text" name="language" value="<?php echo $raffel['language']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="adapter" value="<?php echo $raffel['adapter']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="3D_Performance" value="<?php echo $raffel['3D_Performance']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="Resolution_W" value="<?php echo $raffel['Resolution_W']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="Resolution_H" value="<?php echo $raffel['Resolution_H']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="Resolution_Bpp" value="<?php echo $raffel['Resolution_Bpp']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="Windowed" value="<?php echo $raffel['Windowed']; ?>" size="20" maxlength="50" /> <br /> <input type="submit" name="eintragen" id="eintragen" value="Abschicken" /> </form>
Kann mir dabei mal jemand weiter helfen?
Ich such und lese seit Stunden im Netz, aber entweder finde ich nichts vergleichbares oder ich versteh es einfach nicht
|

05-06-2011, 16:56
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.308
|
|
Ich weiß nicht, wo das Problem liegt? Du hast die einzelnen POST-Werte. Daraus baust du dir per Zeichenkettenverknüpfung einen String und den haust du per file_put_contents in eine Datei. Also vom Prinzip her so:
PHP-Code:
$bla = $_POST['bla'];
$blubb = $_POST['blubb'];
$str = 'bla='.$bla."\n";
$str .= 'blubb='.$blubb."\n";
file_put_contents ('dateiname', $str)
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

05-06-2011, 17:08
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Aus meiner Wühlkiste mal eine "configurator.php":
(Vorsicht: Es wird automaltisch eine config_auto.php erstellt)
PHP-Code:
<?php
//konfigurator.php
error_reporting(-1);
ini_set('display_errors', TRUE);
function array2phpfile(Array $array, $filename)
{
$content = "<\x3fphp \n";
$content .= "return \n";
$content .= var_export($array,TRUE)."; \n";
file_put_contents($filename,$content);
}
function file2array($filename)
{
return include $filename;
}
// Testcode
$configdatei = "./config_auto.php"; // Die Datei, wo es dann drin ist
$configuration = array();
if(empty($_POST['action']))
{
if(file_exists($configdatei))
$configuration = file2array($configdatei);
}else
{
if(!empty($_POST['config']))
$configuration = $_POST['config'];
if(!empty($_POST['key']))
$configuration[$_POST['key']]=$_POST['value'];
array2phpfile($configuration,$configdatei);
}
?>
<form action="" method="post">
<input type="hidden" name="action" value="saveconfig">
<table>
<tr>
<th>Key</th>
<th>Value</th>
</tr>
<?php
foreach($configuration as $key => $value)
{
echo '<tr><td>';
echo htmlentities($key).'</td><td>'.
'<input type="text"
name="config['.htmlentities($key).']"
value="'.htmlentities($value).'"
>
<br /> ';
echo '</td></tr>';
}
?>
<tr>
<td><input type="text" name="key" value=""></td>
<td><input type="text" name="value" value=""></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Speichern"></td>
</tr>
</table>
</form>
<pre>
<?php
// print_r($configuration)
?>
</pre>
|

05-06-2011, 17:20
|
|
cxxl
Registrierter Benutzer
|
|
Registriert seit: Mar 2011
Beiträge: 12
|
|
Ich sage dir wo das Problem liegt.
Mir raucht schon mittelschwer der Kopf vor lauter Schleifen, String(tanga)`s, und Array`s.
Im Ernst, ich arbeite noch nicht so lange mit PHP und versuch es zu verstehen, aber ab und an überfordert das noch leicht. Dann scheitert das wohl schon an so einer grundlegenden Sache wie die hier oben genannten.
Hätte mit dem Zeugs doch in jungen Jahren anfangen sollen
ps. eine tolle Seite hast du da Peter! Einen halben Tag eingelesen und ich musste mir Bier kaltstellen
|

05-06-2011, 18:13
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.308
|
|
Zitat:
Zitat von cxxl
ps. eine tolle Seite hast du da Peter! Einen halben Tag eingelesen und ich musste mir Bier kaltstellen 
|
Mach weiter, dann lernst du es auch. Und Bier ist immer eine gute Idee.
Peter
PS: Vermeide den Deppen-Apostroph
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

05-06-2011, 18:54
|
|
cxxl
Registrierter Benutzer
|
|
Registriert seit: Mar 2011
Beiträge: 12
|
|
Sooo es lüppt..
Danke euch beiden für die Hilfe/Anregung.
Abschließend noch eine Frage zu dem Array, die ich noch nicht ganz verstehe.
PHP-Code:
$file = file('arma2_co.cfg'); foreach($file as $line) { // Schleife läuft so lang bis alle Zeilen durch sind $row = explode("=", $line); // Zerteilen $key = trim($row[0]); // Leerzeichen am Anfang und Ende Löschen $val = trim($row[1]); // Leerzeichen am Anfang und Ende Löschen
$test = array("\"", ";"); $raffel[$key] = str_replace($test,"",$val);
// Debug print "<pre>"; print_r($raffel); print "</pre>";
Normal schaut das gesamte Array ja so aus:
Array (
[language] => German
[adapter] => -1
[3D_Performance] => 1
[Resolution_W] => 800
[Resolution_H] => 600
[Resolution_Bpp] => 32
[Windowed] => 0
[MinBandwidth] => 320000
[MaxBandwidth] => 2147483647
[MaxMsgSend] => 256
[MaxSizeGuaranteed] => 1024
[MaxSizeNonguaranteed] => 64
[MinErrorToSend] => 0.0049999999
[MaxCustomFileSize] => 1600000
)
Ein print_r gibt mir folgendes:
Array (
[language] => German
)
Array (
[language] => German
[adapter] => -1
)
Array (
[language] => German
[adapter] => -1
[3D_Performance] => 1
)
usw usw
Hab ich da einen Fehler in meiner foreach-Schleife oder ist das so korrekt ?
Funktionell geht das alles (freu) aber besser ich frag mal nach.
|

05-06-2011, 20:56
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.308
|
|
Zitat:
Zitat von cxxl
Hab ich da einen Fehler in meiner foreach-Schleife oder ist das so korrekt ?
|
Das Verhalten ist völlig korrekt, da du das Array in der Schleife peu à peu aufbaust. Setzt das print_r mal hinter das foreach.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

05-06-2011, 21:04
|
|
cxxl
Registrierter Benutzer
|
|
Registriert seit: Mar 2011
Beiträge: 12
|
|
So schnell ist der Ofen aus Mr.Orman...
Was so eine kleine Klammer doch aus macht.
Jetzt raff ich das.
Danke dir Keule
|

05-06-2011, 21:12
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.308
|
|
Zitat:
Zitat von cxxl
Was so eine kleine Klammer doch aus macht.
|
Dann war das tatsächlich der Originalcode? Ich dachte nur, du hättest den nicht komplett gepostet.
Peter
PS: Wer ist Mr. Orman? Und sag nicht Keule. Das war früher die Bezeichung für eine Freundin!
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

05-06-2011, 21:19
|
|
cxxl
Registrierter Benutzer
|
|
Registriert seit: Mar 2011
Beiträge: 12
|
|
Jepp, möchte das nachher in meine Case-Struktur einbauen (Formular in die content.php und die Anweisungen zum Inhalt schreiben in die process.php)
Das hier brauch ich bisweilen nur um das ganzen Wust zu verstehen und zu lernen wie was wo warum.
Hier die ganze Datei die nun eine zweite config.cfg bearbeitet
PHP-Code:
<?php
if (isset($_POST['eintragen'])) { // Maskierende Slashes aus POST entfernen $_POST = get_magic_quotes_gpc() ? array_map('stripslashes', $_POST) : $_POST;
// Inhalte der Felder aus POST holen // Config $host = $_POST['hostname']; $pwd = $_POST['password']; $pwda = $_POST['passwordAdmin']; $rip = $_POST['reportingIP']; $log = $_POST['logFile']; $motd = $_POST['motd[]']; $mi = $_POST['motdInterval']; $mp = $_POST['maxPlayers']; $kd = $_POST['kickDuplicate']; $vs = $_POST['verifySignatures']; $vmp = $_POST['voteMissionPlayers']; $vt = $_POST['voteThreshold']; $dv = $_POST['disableVoN']; $vcq = $_POST['vonCodecQuality']; $pers = $_POST['persistent']; $ouc = $_POST['onUserConnected']; $oud = $_POST['onUserDisconnected']; $did = $_POST['doubleIdDetected']; $rc = $_POST['regularCheck']; $oudata = $_POST['onUnsignedData']; $ohdata = $_POST['onHackedData']; $oddata = $_POST['onDifferentData']; $be = $_POST['BattlEye'];
// Debug print "<pre>"; print_r($_POST); print "</pre>";
$str = 'hostname=' ."\"" .$host. "\";\n"; $str .= 'password=' ."\"" .$pwd. "\";\n"; $str .= 'passwordAdmin=' ."\"" .$pwda. "\";\n"; $str .= 'reportingIP=' ."\"" .$rip. "\";\n"; $str .= 'logFile=' ."\"" .$log. "\";\n"; $str .= 'motd[]=' ."\"" .$motd. "\";\n"; $str .= 'motdInterval=' .$mi. ";\n"; $str .= 'maxPlayers=' .$mp. ";\n"; $str .= 'kickDuplicate=' .$kd. ";\n"; $str .= 'verifySignatures=' .$vs. ";\n"; $str .= 'voteMissionPlayers=' .$vmp. ";\n"; $str .= 'voteThreshold=' .$vt. ";\n"; $str .= 'disableVoN=' .$dv. ";\n"; $str .= 'vonCodecQuality=' .$vcq. ";\n"; $str .= 'persistent=' .$pers. ";\n"; $str .= 'onUserConnected=' ."\"" .$ouc. "\";\n"; $str .= 'onUserDisconnected=' ."\"" .$oud. "\";\n"; $str .= 'doubleIdDetected=' ."\"" .$did. "\";\n"; $str .= 'regularCheck=' ."\"" .$rc. "\";\n"; $str .= 'onUnsignedData=' ."\"" .$oudata. "\";\n"; $str .= 'onHackedData=' ."\"" .$ohdata. "\";\n"; $str .= 'onDifferentData=' ."\"" .$oddata. "\";\n"; $str .= 'BattlEye=' .$be. ";\n";
file_put_contents('server_co.cfg', $str); }
$file = file('server_co.cfg'); foreach($file as $line) { // Schleife läuft so lang bis alle Zeilen durch sind $row = explode("=", $line); // Zerteilen $key = trim($row[0]); // Leerzeichen am Anfang und Ende Löschen $val = trim($row[1]); // Leerzeichen am Anfang und Ende Löschen
$test = array("\"", ";"); $raffel[$key] = str_replace($test,"",$val);
// Debug
} print "<pre>"; print_r($raffel); print "</pre>"; ?> <form name="mu" action="" method="post" enctype="text/html">
<input type="text" name="hostname" value="<?php echo $raffel['hostname']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="password" value="<?php echo $raffel['password']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="passwordAdmin" value="<?php echo $raffel['passwordAdmin']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="reportingIP" value="<?php echo $raffel['reportingIP']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="logFile" value="<?php echo $raffel['logFile']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="motd[]" value="<?php echo $raffel['motd[]']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="motdInterval" value="<?php echo $raffel['motdInterval']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="maxPlayers" value="<?php echo $raffel['maxPlayers']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="kickDuplicate" value="<?php echo $raffel['kickDuplicate']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="verifySignatures" value="<?php echo $raffel['verifySignatures']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="voteMissionPlayers" value="<?php echo $raffel['voteMissionPlayers']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="voteThreshold" value="<?php echo $raffel['voteThreshold']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="disableVoN" value="<?php echo $raffel['disableVoN']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="vonCodecQuality" value="<?php echo $raffel['vonCodecQuality']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="persistent" value="<?php echo $raffel['persistent']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="onUserConnected" value="<?php echo $raffel['onUserConnected']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="onUserDisconnected" value="<?php echo $raffel['onUserDisconnected']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="doubleIdDetected" value="<?php echo $raffel['doubleIdDetected']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="regularCheck" value="<?php echo $raffel['regularCheck']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="onUnsignedData" value="<?php echo $raffel['onUnsignedData']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="onHackedData" value="<?php echo $raffel['onHackedData']; ?>" size="20" maxlength="50" /> <br /> <input type="text" name="onDifferentData" value="<?php echo $raffel['onDifferentData']; ?>" size="20" maxlength="50" /> <br />
<input type="text" name="BattlEye" value="<?php echo $raffel['BattlEye']; ?>" size="20" maxlength="50" /> <br />
<input type="submit" name="eintragen" id="eintragen" value="Abschicken" /> </form>
ps: (KULT) -> Mr. Ormond aka Mr.Ormän -> Das Krokodil und sein Nilpferd ? Wikipedia
Geändert von cxxl (05-06-2011 um 21:25 Uhr)
|

05-06-2011, 21:40
|
|
Jones3211
Registrierter Benutzer
|
|
Registriert seit: Jun 2011
Beiträge: 8
|
|
Mit solchen Sachen hatte ich am Anfang auch meine Probleme - PHP ist Anfangs echt nicht so einfach.
|

05-06-2011, 21:53
|
|
cxxl
Registrierter Benutzer
|
|
Registriert seit: Mar 2011
Beiträge: 12
|
|
Zitat:
Zitat von Jones3211
Mit solchen Sachen hatte ich am Anfang auch meine Probleme - PHP ist Anfangs echt nicht so einfach.
|
Oh ja, manchmal ist es leichter mit voller Montur auf einen 3000er zu sprinten als so einen 5Zeiler zu verstehen
Mal im Ernst, ich bin/war selber schuld.
Habe die Sache hier gänzlich falsch angefangen.
Hatte vom Programmieren kaum Ahnung und wollte gleich alles. Also hab ich mir zig Scripte angeschaut und versucht diese ohne elementares Hintergrundwissen zu verstehen. So nach dem Motto, anschauen verstehen und dann geht das schon.
Es geht auch, aber nur als "light-version". Gerade mit diesen Array hab ich echt so meine Schmerzen gehabt. Und mal ehrlich, sich das Wissen nur zu erlesen ist ab dann sinnfrei, wenn man es nicht wirklich versteht und keiner in der Nähe ist, der dir das anhand eines Beispiels erläutert.
Bist in einem Seminar,Kurs oder CodebashGuru wo dir die Theorie mit Praxisbeispielen nochmals in die Birne gezimmert wird, dann ist das was ganz anderes, als wenn man alle paar Minuten vor einem neuen Problem/Phänomen steht und du dich totgoogelst. Wobei es auch noch jeder anders macht und du dann gar nicht mehr durchblickst unter Umständen.
Es läuft zwar alles das ws ich mir vorstellte, aber schön ist anders. Diesen Mißstand gilt es nun endlich mal zu beheben
Und wenn man dann noch ein Forum/Community findet die auch mit Anfängern ordentlich umgeht und nicht von oben herab behandelt, dann wird das schon!
Geändert von cxxl (05-06-2011 um 21:57 Uhr)
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|