Einstellungen speicherbar machen (CMS)
Wir werden in unserem CMS den DB-Manager jetzt erstmal in Ruhe lassen und zurück zu der Basis des CMS kommen. Denn die ist ja eigentlich das wichtige.
Einige Beiträge zurück haben wir im Admin-Menü unter Einstellungen die Einstellungen aus der Settings-Tabelle angezeigt. Diese wurden bisher noch nicht gespeichert. Das ändert sich heute!
Als erstes müssen wir in der /system/settings.php eine Funktion namens setSetting erstellen, welche die jeweilige Einstellung speichern kann. Diese sieht so aus (Heute leider wieder ohne Syntax-Highlighting):
function setSetting($property,$value){
global $dbpraefix;
$property = mysql_real_escape_string($property);
$value = mysql_real_escape_string($value);
mysql_query(„UPDATE „.$dbpraefix.“settings SET value = ‚“.$value.“‚ WHERE property = ‚“.$property.“‚“);
}
Kommen wir zum Aufruf der Methode in /admin/includes/settings.php. Hier habe ich neben den Aufruf auch noch htmlentities eingefügt, damit es später keine Probleme mit Anführungszeichen etc. geben wird:
<h1>Einstellungen</h1>
<?PHP
if($_POST[’save‘]){
foreach($_POST as $property=>$value){
if($property != „save“){
setSetting($property,$value);
}
}
}
?><form action=“/admin/index.php?page=settings“ method=“POST“>
<fieldset>
<legend>Einstellungen ändern</legend>
<?PHP
$res = mysql_query(„SELECT * FROM „.$dbpraefix.“settings WHERE activated = 1“);
while($row = mysql_fetch_assoc($res)){
echo „<label for=““.htmlentities($row[‚property‘]).““>“;
echo $row[‚description‘].“:“;
echo „</label>“;
echo „<input name=““.htmlentities($row[‚property‘]).““ value=““.htmlentities($row[‚value‘]).““ />“;
}
?>
<br /><input type=“submit“ name=“save“ value=“Speichern“ />
</fieldset>
</form>
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
Kommentare
Daniel schrieb am 26.10.2009:
Hmm, mein System speichert die Änderungen nicht, sondern stellt den Ursprung nach dem Klick auf Speichern wieder her. Ohhh mein Guru ;-), was mache ich falsch. Syntaktisch ist alles i.O. .
Renner schrieb am 26.10.2009:
Habs selber noch nicht ausprobiert aber auf die schnelle seh ich kein fehler .. alle geänderten dateien hochgeladen?? *ganz dumm fragt* :D
Renner schrieb am 26.10.2009:
also habe es eben getestet und es geht. Schau mal bitte in der zeile: $res = mysql_query("SELECT * FROM ".$dbpraefix."settings WHERE activated = 1"); bei ... WHERE activated = 1" ... da war bei mir ein komisches ' < du sagst zwar es stimmt alles aber auch die besten können was übersehen *gg
Daniel schrieb am 26.10.2009:
Ich teste in einer lokalen XAMPP-Umgebung. Bei mir war das Anführungszeichen ein Fragezeichen. Das Problem habe ich gefunden. Aber es funktioniert immer noch nicht. Kann mal einer seine Dateien zum download ins Forum stellen. Ich müsste mal beide Dateien nebeneinander stellen. MfG Daniel
Daniel schrieb am 26.10.2009:
HAbe den Fehler gefunden. Es waren ein paar falsche einfache Anführungszeiten.
Renner schrieb am 26.10.2009:
Servus jo eben das meinte ich .. wenn Stevie hier ohne Syntax arbeite wandelt Worpress alle "hochkommas" in irgendwelche anderem um .. totaler schwachsinn ^^
Daniel schrieb am 27.10.2009:
Demnach kommt WP im Plainmodus nicht mit htmlentities klar. Schon arm für ein ausgewachsenes Blogscript. Aber irgendwas wandelt er doch um. Ein Fall für die Mythbusters. ^^
Renner schrieb am 27.10.2009:
loool da hast recht *gg
Stefan Wienströer schrieb am 27.10.2009:
Gute Nachricht: Der Syntax-Highlighting Dienst istw wieder online. Jetzt kann der nächste Artikel hoffentlich wieder im alten Stil veröffentlicht werden ;-) Sorry für die kleinen Fehler.
Daniel schrieb am 28.10.2009:
Da konntest Du doch nichts dafür. Es werden ja "Augenscheinliche" einfache Hochkommata angezeigt. Markiert und kopiert wird was anderes. MfG Daniel
Daniel schrieb am 28.10.2009:
Achso dein Blog läuft auf Sommerzeit. :-D
Stefan Wienströer schrieb am 28.10.2009:
Wie, ist der Sommer schon vorbei? Scherz, werd's umstellen^^
erxxlu schrieb am 06.04.2010:
Ich habe ich habe irgendeinen Schritt verpasst, bei mir gibts in den cms_settings keine activated spalte wie es hier in der Abfrage in der WHERE-Clause steht
erxxlu schrieb am 06.04.2010:
Außerdem gibt es in der tabelle auch kein feld description... ich habe wirklich irgendwas verpasst ^^ hilfe :/
Über uns
Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project