Seiten "direkt" editieren geht nicht mehr (Uncatched exception)

Luisehahne

Da war Franky schneller als ich,

Quote(escape durch Apostrophe)
kann HGS nicht wissen. Sind natürlich Backticks, wie dbs beschrieben hat. Auch Feldnamen sollten in Backticks eingeschlossen werden.

Danke an alle. Sollten da noch mehr fehlende Backticks auffallen, kurze PM an mich.

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

dbs

Wer auch immer jacobi22 ist, good job!
Eigentlich wird ja alles in `Backticks` gepackt heute, aber an dieser Stelle wohl übersehen.
So einfach kann's sein.
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

hgs

Die Lösung hat jacobi22 gefunden, Danke dafür (Y)
Das Problem tritt auf, wenn man keinen Table-Prefix verwendet. Dann steht groups allein dort, ist aber ein in mysql geschütztes Schlüsselwort.

Wird das als Tabellen- oder Feldname benutzt, muß es maskiert werden (escape durch Apostrophe)
In der admin/pages/index.php sind da ab Zeile 267 zwei gleich lautende Abfragen, die beide geändert werden müssen auf
$query = 'SELECT * FROM `'.TABLE_PREFIX.'groups`';
LG Harald

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

hgs

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

LudwigSt

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?
SELECT * FROM wb_groups



LG Ludwig

Wissen ist Macht - aber nix wissen macht auch nix.

klaumich

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. ......
Immer in der Hoffnung, dass das Licht am Ende des Tunnels der Ausgang ist ...
[WB vers. 2.13.0 r63]

dbs

Nur sicherheithalber gefragt, nach deinem WB Upgrade ging das alles, ja?
Erst nach DB Änderung des Hosters nicht mehr?
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

LudwigSt

Quote from: klaumich on September 22, 2021, 07:37:54 AM

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

Wissen ist Macht - aber nix wissen macht auch nix.

klaumich

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]

dbs

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.
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

klaumich

Quote from: LudwigSt on September 21, 2021, 03:26:22 PM
Hallo,

die Fehlermeldung
QuoteCall 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]

LudwigSt

Hallo,

die Fehlermeldung
QuoteCall 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.

klaumich

Quote from: dbs 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.

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]

dbs

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.
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

klaumich

Quote from: dbs 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?

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]

dbs

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?
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

klaumich

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]

Luisehahne

Quote from: dbs 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. :-)

Korrekt  (Y)

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

dbs

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. :-)
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

bytex

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

dbs

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.
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

bytex

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.

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