Author Topic: Seiten "direkt" editieren geht nicht mehr (Uncatched exception)  (Read 357 times)

Offline bytex

  • Posts: 48
Seiten "direkt" editieren geht nicht mehr (Uncatched exception)
« on: September 12, 2021, 09:11:34 AM »
Hallo zusammen,

ich glaube mein Hoster hat irgendetwas verändert, so dass die folgende Funktion nicht mehr funktioniert. Kürzlich ging es noch. Vorab: Falls es dafür mittlerweile ein Droplet oder eine andere elegante Lösung gibt: Bitte nicht weiter lesen, sondern mir einen Hinweis geben.
Ich möchte, dass wenn man sich als Admin oder Editor mit den passenden Rechten anmeldet, die Seite direkt mit einem Klick editieren kann. Dazu hatte ich im Template entsprechenden Code, der dieses überprüft und ggf. ein Symbol zum Editieren einblendet. Dieses funktioniert nicht mehr. Sobald ich mich anmelde und eigentlich das Symbol zum Editieren eingeblendet werden sollte, bekomme ich eine Uncatched exception - Meldung und zwar in der Zeile mit "$database = new database();". Leider bin ich zu unwissend, das Problem zu verstehen und um den Code wirklich im Detail zu verstehen - hatte den irgendwann mal irgendwo übernommen.

Code: [Select]
<?php  
if (
is_numeric($wb->get_session('USER_ID'))) {
// Get permissons
if ($page_id) { $this_page $page_id; }
else { $this_page $wb->default_page_id; }
$database = new database();
$results $database->query("SELECT * FROM ".TABLE_PREFIX."pages WHERE page_id = '$this_page'");
$results_array $results->fetchRow();
$old_admin_groups explode(','$results_array['admin_groups']);
$old_admin_users explode(','$results_array['admin_users']);
$this_user $wb->get_session('GROUP_ID');
if (is_numeric(array_search($this_user$old_admin_groups)) )
{
?>

<a href="<?php echo ADMIN_URL?>/pages/modify.php?page_id=
<?php 
if ($page_id) { echo $page_id; }
else { echo  $wb->default_page_id; }
?>

" target="_blank"><img title='Seite bearbeiten' border=0 src="<?php echo ADMIN_URL ?>/images/modify_16.png" alt="<?php echo $HEADING['MODIFY_PAGE']; ?>" /></a>&nbsp;&nbsp;
<?php ?>     
<?php ?>

Bin für jede Hilfe dankbar.
LG
bytex

PS: Die genaue Fehlermeldung war: There was an uncatched exception
Call to private database::__construct() from invalid context
in line (208) of (/templates/xyz/index.php):

Offline dbs

  • Betatester
  • **
  • Posts: 8641
  • Gender: Male
  • tioz4ever
    • WebsiteBaker - jQuery-Plugins - Module - Droplets - Tests
Re: Seiten "direkt" editieren geht nicht mehr (Uncatched exception)
« Reply #1 on: September 12, 2021, 09:49:10 AM »
Moin, du hättest auch einmal in die Forumsuche "$database = new database();" eingeben können (oder über Google).
Jedenfalls muss die Zeile raus. Auskommentieren am Zeilenanfang mit Doppelslash // geht auch.
Hoffe hilft.

Offline bytex

  • Posts: 48
Re: Seiten "direkt" editieren geht nicht mehr (Uncatched exception)
« Reply #2 on: September 12, 2021, 11:58:32 AM »
Danke für die schnelle Hilfe.  (Y) Tatsächlich reicht es aus, diese Zeile auszukommentieren. Ich verstehe zwar nicht, warum das Programm dennoch läuft, weil $database da ja "deklariert" oder instanziiert wird. Aber ich habe leider auch zu wenig Erfahrung mit php. Offenbar gibt es $database schon vorher.

LG
bytex

Offline dbs

  • Betatester
  • **
  • Posts: 8641
  • Gender: Male
  • tioz4ever
    • WebsiteBaker - jQuery-Plugins - Module - Droplets - Tests
Re: Seiten "direkt" editieren geht nicht mehr (Uncatched exception)
« Reply #3 on: September 12, 2021, 12:21:47 PM »
WB stellt $database global bereit. Es ist also schon da, deshalb beisst sich das dann, wenn es nochmal aufgerufen wird.
Ob die Erklärung stimmt, weiß ich aber auch nicht so genau. :-)

Offline Luisehahne

  • WebsiteBaker Org e.V.
  • **
  • Posts: 4452
  • Gender: Male
Re: Seiten "direkt" editieren geht nicht mehr (Uncatched exception)
« Reply #4 on: September 12, 2021, 07:40:47 PM »
WB stellt $database global bereit. Es ist also schon da, deshalb beisst sich das dann, wenn es nochmal aufgerufen wird.
Ob die Erklärung stimmt, weiß ich aber auch nicht so genau. :-)

Korrekt  (Y)

Dietmar
Note: Once the code has been generated, it is easy to debug. It's not a bug, it's a feature!

Offline klaumich

  • Posts: 114
  • Gender: Male
  • Ziemlich Ahnungsloser
    • michler-web
Re: Seiten "direkt" editieren geht nicht mehr (Uncatched exception)
« Reply #5 on: September 21, 2021, 07:41:54 AM »
Moin zusammen,

ich weis nicht ob mein Problem einen ähnlichen Charakter hat, auch auch mein Provider hat den Datenbankserver vor ca. 2 1/2 Wochen von MySQL 5.7 auf MySQL 8 angehoben. Jetzt ist mir heute aufgefallen, dass ich im BE keine Unterseiten mehr aufrufen kann, also das grüne Plus für die Unterseiten ist vorhanden, hat aber keine Funktion mehr .....

In der Seitenansicht des BE steht unten Links:
There was an uncatched exception
Call to a member function fetchRow() on null
in line (273) of (/admin/pages/index.php):


in der admin/pages/index.php steht dort:
$admin_group_name = $get_groups->fetchRow(MYSQLI_ASSOC);

Ich schätze jetzt mal fast mit Sicherheit, dass das Problem mit dem Upgrade der SQL Version zusammenhängt .... nur wie ich das Problem beseitigen kann hab ich leider NULL Plan  :roll: .....

VG Klaus
Immer in der Hoffnung, dass das Licht am Ende des Tunnels der Ausgang ist ...
[WB vers. 2.13.0 r63]

Offline dbs

  • Betatester
  • **
  • Posts: 8641
  • Gender: Male
  • tioz4ever
    • WebsiteBaker - jQuery-Plugins - Module - Droplets - Tests
Re: Seiten "direkt" editieren geht nicht mehr (Uncatched exception)
« Reply #6 on: September 21, 2021, 10:07:17 AM »
Hi, was ist denn dein System?
WB2.12.? und welche PHP-Version?

Schon probiert auf einer Subdomain alles auf 2.13 und PHP8 zu bringen?

Offline klaumich

  • Posts: 114
  • Gender: Male
  • Ziemlich Ahnungsloser
    • michler-web
Re: Seiten "direkt" editieren geht nicht mehr (Uncatched exception)
« Reply #7 on: September 21, 2021, 12:55:28 PM »
Hi, was ist denn dein System?
WB2.12.? und welche PHP-Version?

Schon probiert auf einer Subdomain alles auf 2.13 und PHP8 zu bringen?

Ups sorry, meine Signatur war nicht up to date, die beiden Seiten laufen auf 2.13.0 r63, PHP vers. 7.4 ...... ich stelle PHP mal auf 8.x um und schaue was passiert .....
Immer in der Hoffnung, dass das Licht am Ende des Tunnels der Ausgang ist ...
[WB vers. 2.13.0 r63]

Offline dbs

  • Betatester
  • **
  • Posts: 8641
  • Gender: Male
  • tioz4ever
    • WebsiteBaker - jQuery-Plugins - Module - Droplets - Tests
Re: Seiten "direkt" editieren geht nicht mehr (Uncatched exception)
« Reply #8 on: September 21, 2021, 01:05:58 PM »
Nicht nötig mit PHP8, 7.4 ist auch ok.
Die Fehlermeldung zeigt ja eher ein Problem mit deiner Gruppe bzw. dem Auslesen der Gruppe, aber da kann ich nicht helfen.
Mal sehen ob jemand eine Lösung hat.

Offline klaumich

  • Posts: 114
  • Gender: Male
  • Ziemlich Ahnungsloser
    • michler-web
Re: Seiten "direkt" editieren geht nicht mehr (Uncatched exception)
« Reply #9 on: September 21, 2021, 01:08:36 PM »
Nicht nötig mit PHP8, 7.4 ist auch ok.
Die Fehlermeldung zeigt ja eher ein Problem mit deiner Gruppe bzw. dem Auslesen der Gruppe, aber da kann ich nicht helfen.
Mal sehen ob jemand eine Lösung hat.

Also mit PHP 8 selber "Mist", allerdings ist das nicht nur ein "Gruppenproblem" auch als Admin komme ich nicht auf die Unterseiten .......  :oops:
Immer in der Hoffnung, dass das Licht am Ende des Tunnels der Ausgang ist ...
[WB vers. 2.13.0 r63]

Offline LudwigSt

  • Posts: 388
  • Betatester
Re: Seiten "direkt" editieren geht nicht mehr (Uncatched exception)
« Reply #10 on: September 21, 2021, 03:26:22 PM »
Hallo,

die Fehlermeldung
Quote
Call to a member function fetchRow() on null
bedeutet, daß die Abfrage keinen Datensatz gefunden hat. Ich würde einmal in der Datenbank Tabelle wb_groups, oder wie auch dein Table Prefix lautet, nachschauen, ob überhaupt wenigstens ein Datensatz drin steht. An der PHP Version liegt es in diesem Fall eher nicht.
LG Ludwig

Wissen ist Macht - aber nix wissen macht auch nix.

Offline klaumich

  • Posts: 114
  • Gender: Male
  • Ziemlich Ahnungsloser
    • michler-web
Hallo,

die Fehlermeldung
Quote
Call to a member function fetchRow() on null
bedeutet, daß die Abfrage keinen Datensatz gefunden hat. Ich würde einmal in der Datenbank Tabelle wb_groups, oder wie auch dein Table Prefix lautet, nachschauen, ob überhaupt wenigstens ein Datensatz drin steht. An der PHP Version liegt es in diesem Fall eher nicht.

Hmmm .... also in der DB der einen Installation sind in der "groups" Tabelle die Benutzer "Administrators", "Redakteur" sowie "Besucher" vorhanden ..... in der zweiten DB ist die Tabelle "groups" leer, wobei es hier auch nur das Adminaccount gibt und keine anderen Benutzer oder Gruppen angelegt sind!

Was mir allerdings aufgefallen ist, dass vor allen Tabellen in der DB ein "mod_" steht, was mMn in der ursprünglichen DB nicht so war .... also mod_droplets, mod_code usw. nur die Tabellen addons und groups haben dieses "mod_" nicht vorangestellt, ist in beiden DB´s das Selbe!
Ich schätze jetzt mal, dass dies beim Upgrade auf die höhere SQL Version passiert ist ..... ich kann das in den Backups der ursprünglichen DB´s im Moment nicht prüfen, werd das aber sobald wie möglich machen ... ich denke das ist aber der Knackpunkt!
Wenn ich jetzt in einer Testinstallation einer Subdomain die Tabelle "groups" in mod_groups umbenenne und mich neu ins BE einlogge sind alle "Menüs" bis auf "Mein Profil" verschwunden ......
Benenne ich die Tabelle zurück in "groups" ist wieder alles da .... aber das Problem mit den Unterseiten bleibt  :oops: :-(
Immer in der Hoffnung, dass das Licht am Ende des Tunnels der Ausgang ist ...
[WB vers. 2.13.0 r63]

Offline dbs

  • Betatester
  • **
  • Posts: 8641
  • Gender: Male
  • tioz4ever
    • WebsiteBaker - jQuery-Plugins - Module - Droplets - Tests
Moin, zuallererst, bitte zitiere nicht die vorhergehende Antwort voll, wenn du direkt antwortest.
Das ergibt keinen Sinn, denn es steht direkt vor deinem Post.

Ansonsten bist du auf der richtigen Spur. Module haben das mod_ davor in der DB.
Warum du von zwei DB's sprichst, ist mir unklar. WB kann ja nur eine verwenden. Die, die in der config angegeben ist.

Offline klaumich

  • Posts: 114
  • Gender: Male
  • Ziemlich Ahnungsloser
    • michler-web
Moin auch,

sorry für das unnötige Zitat, da hast Du vollkommen recht .... Ich spreche von zwei Datenbanken weil es sich auch um 2 Domains/Installationen handelt!

Ich habe gerade etwas weiteres festgestellt, auch der gesamte Kontex unter dem Seitenbaum fehlt, also das erstellen von neuen Seiten und die Einstellung wer die Seiten editieren darf usw. Beide Installationen laufen unter WB 2.13 bei der Einen gibt es auch weitere Benutzer, bei der anderen nur den Admin .... Fehler ist aber der Selbe, kein Zugriff auf Unterseiten  :?

Bei einer dritten Domain/Installation mit Unterseiten und weiterem Benutzer auf dem selben Server mit PHP vers. 7.4.22 und der upgegradeten SQL Version, ist der Fehler nicht vorhanden ..... allerdings läuft diese noch mit der WB vers. 2.12.2 r379  :-o

Die Frage wäre jetzt, was passiert wenn ich diese Installation auf 2.13 upgrade ..... ?!?
 
Immer in der Hoffnung, dass das Licht am Ende des Tunnels der Ausgang ist ...
[WB vers. 2.13.0 r63]

Offline LudwigSt

  • Posts: 388
  • Betatester

 ..... in der zweiten DB ist die Tabelle "groups" leer, wobei es hier auch nur das Adminaccount gibt und keine anderen Benutzer oder Gruppen angelegt sind!


Ist die groups Tabelle jetzt leer, oder gibte es nur den Admin dort? Ganz leer darf sie nicht sein, zumindest der Ober-Admin mit Nr. 1 müsste dort drin stehen.
Und die Benutzer incl. Admin müssten in der wb_users stehen.
« Last Edit: Today at 08:56:17 AM by LudwigSt »
LG Ludwig

Wissen ist Macht - aber nix wissen macht auch nix.

Offline dbs

  • Betatester
  • **
  • Posts: 8641
  • Gender: Male
  • tioz4ever
    • WebsiteBaker - jQuery-Plugins - Module - Droplets - Tests
Nur sicherheithalber gefragt, nach deinem WB Upgrade ging das alles, ja?
Erst nach DB Änderung des Hosters nicht mehr?

Offline klaumich

  • Posts: 114
  • Gender: Male
  • Ziemlich Ahnungsloser
    • michler-web
Jetzt versteh ich es gar nicht mehr .....  :-o

@LudwigSt, nein die Tabelle "groups" hat einen Eintrag bei dieser Domain (A), nämlich den "Administrators", da hab ich scheints beim ersten Mal nicht korrekt geschaut .... MySQL ist auch nicht soo meine Welt  :roll:

Bei der anderen Installation Domain (B) gibt es 3 Einträge "Administrators", "Redakteur" sowie "Besucher" ....

Nun habe ich gerade noch eine weitere meiner Testinstallationen Domain(C) in einer Subdomain gecheckt, selber Server, PHP 7.4.22, SQL 8, WB Vers. 2.13.0 r63, mit Unterseiten usw. ....... hier ist alles im grünen Bereich .........

Domain A:


Domain B:


Domain C:


@dbs, ja nach dem Upgrade im Juni auf WB 2.13 lief das alles sauber und ohne Probleme, seit dem hab ich auch nicht´s mehr an den Webseiten, sowie Installation "gedreht", vor knapp 3 Wochen wurde dann von NetCup das Upgrade von SQL 7. irgendwas, auf SQL 8 durchgeführt ..... und gestern hat eben meine Frau festgestellt, dass sie auf ihrer Seite (Domain B) nicht mehr auf die Unterseiten zugreifen kann ..... bei meiner Seite Domain A selbes "Spiel" und es fehlt eben auch die komplette Struktur für das neu Anlegen von Seiten usw. ......
« Last Edit: Today at 10:38:18 AM by klaumich »
Immer in der Hoffnung, dass das Licht am Ende des Tunnels der Ausgang ist ...
[WB vers. 2.13.0 r63]

Offline LudwigSt

  • Posts: 388
  • Betatester
Das unten alles zum Seite erstellen fehlt, ist logisch, denn das Programm wird durch die vorhandene Fehlermeldung nicht weiter ausgeführt.
Wenn du dich mit dem PHPMyAdmin nicht so auskennst, wäre es sicher besser, wenn sich die Spezis hier die Datenbank einmal ansehen. Mit der wb_groups Tabelle muss da irgendetwas nicht stimmen, sonst käme dieser Fehler nicht zustande.

Was kommt denn, wenn du im sql-Bereich vom PHPMyAdmin das hier eingibst?
Code: [Select]
SELECT * FROM wb_groups


LG Ludwig

Wissen ist Macht - aber nix wissen macht auch nix.

Offline hgs

  • Betatester
  • **
  • Posts: 1409
    • EFG MG
Kannst du mal einen "neue Subdomäne" mit wb2.13 installieren und schauen ob der Fehler dort auch auftaucht.
LG Harald

"Fange nie an, aufzuhören - höre nie auf, anzufangen." Marcus Tullius Cicero (106-43 v.Chr.)