Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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]

Geschrieben (bearbeitet)

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
Geschrieben

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.

Geschrieben
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ß :)

Geschrieben (bearbeitet)

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
Geschrieben
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

Geschrieben

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 ..

Geschrieben (bearbeitet)

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
Geschrieben

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.

Geschrieben

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...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...