Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Guten Morgen,

Momentan habe ich noch eine settings.cfg in der ich die Einstellungen (z.B. Titel der Website in der index.php, oder Namen von Menüpunkten) nur mit einem FTP Client verändern kann.

Ich wollte, um meine Hauptinformationen über mein Backend zu bearbeiten, die settings in eine Tabelle auslagern.

Habe dazu ein Template von einer älteren Homepage genommen (die ich nicht selber Programmiert habe) und die Codeschnipsel in meine settings.cfg eingefügt.

Problem an meiner Version: wenn $aConfig = array(array()); nicht auskommentiert ist, erhalte ich eine komplett weiße Seite (deutet auf nen Syntaxfehler hin, oder?)

meine Version (zusammengesetzt aus den Schnipseln):

$this -> initSettings();
$aConfig = array(array());
public function initSettings()
{
$cfgQuery = mysql_query("select * from dbo._settings");
while($row = mysql_fetch_array($cfgQuery))
{
//$row['ValueName'] = $row['Value'];
//$row['Value'] = $row['ValueName'];
$this -> aConfig[$row['ValueName']] = $row['Value'];
}
}
*/


$website_title = $row['hs1'];[/PHP]

Original Files

Index.php

[PHP]
<?php
require_once('config.php');
require_once('core.php');
global $core;
$core = new core();
core::$sql-> changeDB('acc');?><!DOCTYPE html>
<html lang="en">
<head>
<title><?php echo $core -> aConfig['WebsiteName']; ?></title>
//WebsiteName ist der WertName aus der dbo.setting

core.php


class core
{
public $aConfig = array(array());

function __construct()
{
session_start();
//$this -> _loadClasses();
$this -> initCore();
$this -> initSettings();
$this -> setIniVariables();
}

private function initSettings()
{
$isQuery = mysql_query("select * from settings");
while($row = mysql_fetch_array($isQuery))
{
$this -> aConfig[$row['WertName']] = $row['Wert'];
}
}

}[/PHP]

Ich vermute (wie bereits irgendwo mal gesagt, ich bin kein PHP-Fachmann, lerne es gerade selber noch), dass es bei dir "knallt" weil du zuerst einmal ein zweidimensionales Arrays initialisierst

$aConfig [] [] (zweidimensional

dann weißt du diesem aber ein Wert zu:

aConfig[$row['ValueName']] = $row['Value'];

also $aConfig[] = $value

das müsste dann ja

$aConfig[][] = $value sein, wenn ich mich nicht irre.

Also müsstest du glaube ich deine doppelte Arrays initialisierung ändern in eine Einfache... weil am Ende willst du so wie ich verstehe ein eindimensionales-assoziatives Array.

PS: Schau dir mysqli_ oder PDO an ... mysql ist veraltet. Zusätzlich habe ich mal irgendwo aufgeschnappt, dass "SELECT * ..." unschön ist. Schreibe lieber alle Spalten genau hin. Hat den vorteil, dass Sich die Abfrage NICHT verändert, wenn du mal die Tabelle änderst (Spalten hinzufügst, oder entfernst)

Gruß

Edit: Oder es liegt evtl. an der sichtbarkeit deiner variable ? Du benutzt es scheinbar innerhalb einer Klasse, hast aber nicht public vorgeschrieben ... kann natürlich auch sein, dass du dies weiter oben getan hast...

Vergiss, was ich oben geschrieben habe... Bei den Originalfiles klappt es ja. Müsste an der Sichtbarkeit der Variable $aConfig liegen. Bei den Originalfiles ist es eine public Eigenschaft der Klasse und wird mit $this-> angesprochen. Bei dir auch, nur ist bei dir die Variable keine public Eigenschaft der Klasse.

Hast du die PHP-Feldermeldungen aktiviert in deiner Entwicklungsumgebung? :D

Bearbeitet von fiae12

  • Autor

Das Array müsste so eig. passen

array(array()); ist ja ein zweidimensionales array

Das mit mysqli und pdo ist ja wie gesagt schön und gut, aber ich will erstmal das Grundgerüst jetzt endlich fertig kriegen. Danach kann man sich ja über modifikationen gedanken machen. Die Syntaxen aller querys bleibt ja fast gleich. aber ich fang jetzt nicht mitten drin an alles auf mysqli zu stellen.

:)

Hab jetzt public $aConfig = array(array()); gemacht krieg aber immer noch weißes Fenster.

Das Array müsste so eig. passen

array(array()); ist ja ein zweidimensionales array

...

Hab jetzt public $aConfig = array(array()); gemacht krieg aber immer noch weißes Fenster.

Konnte meinen Beitrag irgendwie nichtmehr bearbeiten. Du hast Recht mit dem Array, sollte so passen.

Nochmal: Hast du die PHP-Fehlermeldungen an? Mach sonst mal rechtsklick auf den Browserfenster und Quelltext anzeigen und guck mal was da so steht.

Sonst würde ich mal vermuten, dass deine SQL-Abfrage aus irgendeinem Grund nichts zurückliefert? Steht was in der Tabelle? Ist der Tabellenname richtig? Sprichst du nach dem hinzufügen der Werte zum Array bei der Ausgabe die Indizes des Arrays wieder richtig an? etc.

Gruß :)

  • Autor

Der Quelltext ist leer wenn ich ihn Anzeigen lasse.

Php Fehlermeldungen sind aus.

Ja, die Namen sind definitiv richtig.

Habe jetzt error_reporting(E_ALL); auf der index eingebunden, sehe dennoch noch keinen Error.

Bearbeitet von tschulian

Php Fehlermeldungen sind aus.

Dann mach Sie doch mal an ... und guck mal was dir für ein Fehler ausgespuckt wird.

Soweit ich weiß in der php.ini und/oder in der config Datei deines Webservers ...

:D

Nee.... nicht echo.

echo ist ja eine Ausgabe...


// Muss in die erste Zeile des Scripts
error_reporting(E_ALL);
[/PHP]

Einfach die Einstellung setzten, darauf dass alle Fehler angezeigt werden sollen ..

Wenn die Seite komplett weiß ist, kannst du ja mal im "seiten-Quelltext" (Je nach Browser heisst das anders) nachschauen. Dorthin werden dann oft PHP Fehler rausgeschrieben.

Ein paar Anmerkungen sind wir noch am Quellcode aufgefallen.

Du übernimmst ja den Code aus einer Klasse, übernimmst du nur die Klasse oder nur die Funktion?

Nach der Public Function steht ein "*/" im Raum, gehört das dahin oder Wurde der gesamte Block auskommentiert?

Generell sollte man aufpassen, wenn man fremdem Code kopiert den man eventuell noch nicht ganz durchschaut hat.

Bearbeitet von feuerjinn

  • Autor

der Code ist von meiner anderen Homepage, die ich vor 2 Jahren als Schulprojekt erstellen musste.

Jetzt wollte ich die class.user.php auflösen und die Klassen und Funktionen die ich nicht brauche entfernen. Habe dann die hier benötigte Funktion mit allen Teilen in die setttings kopiert und jetzt entsteht ein Fehler.

Ja die Seite ist komplett weiß, aber wenn ich den Quelltext anzeigen lassen, sehe ich genau nichts.

Also wie ich verstehe hast du error_reporting(E_ALL) gesetzt. Umfänglicher wäre u.U. noch error_reporting(-1), das zeigt dir wirklich alle Fehler an. Evtl. musst du, damit du die Fehler auch siehst, in der php.ini noch display_errors=On setzen, dann solltest du aber definitiv nen Fehler sehen...

Habe es ebend bei meinem PHP-Code getestet.

Dieses */ verursacht den fehler.

$this -> aConfig[$row['ValueName']] = $row['Value'];

}

}

------->>>> */

$website_title = $row['hs1'];

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.