Zum Inhalt springen

PHP - array(array());


Empfohlene Beiträge

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]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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