Hilfe: Fehler in verschiedenen Themes

Begonnen von EdeWuff, 24 Mai 2002, 19:54:46

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

EdeWuff

Hi all,

ich übe gerade lokal mit zwei Portalen in einer Datenbank. Das klappt auch soweit ganz gut. Jetzt habe ich ein Problem mit verschiedenen THEMES.

Warning: Supplied argument is not a valid MySQL result resource in C:\apache\htdocs\ls\includes\sql_layer.php on line 235

erscheint beispielsweise bei BlueChrome dort, wo die Textnavigation am Seitenkopf erscheint. In der sql_layer.php steht an der Stelle

case "MySQL":
        $rows=mysql_num_rows($res);
        return $rows;
    break;;

Das Dumme ist, das das Portal VKP 5.5 in einer etwa 6 Wochenalten Version alles richtig anzeigt. Die zugehörigen Tabellen haben dort den Präfix nuke (war meine Erstinstallation).
Mit der aktuellen Version (+ Proxima Update) und einem anderen Präfix habe ich halt diesen Fehler -- aber nich bei allen Themes. Die sql_layer.php`s sind an der Stelle gleich. Ich habe in der Datenbank nach Unterschieden in Tabellen gesucht, aber nichts festgestellt.

Hat jemand schon einemal hiermit zu tun gehabt ?

Danke, Peter

Micro

Tach.

Es ist in den aller seltensten Fällen wirklich die sql_layer.php.

Es werden aus den einzelnen PHP Dateien sogenannte Funktionsaufrufe an die sql_layer übergeben, die wiederrum den Kontakt zur Datenbank herstellt. Das hat die Bewandtnis, das man nicht nur MySQL nutzen könnten sondern jede andere Datenbank ebenso. Das nur mal kurz dazu.

Das Problem bei Dir sind sicher einige eingebaute Abfragen an nicht vorhandene Tabellen. So kann z.B. in der Admin Anzeige in der Tabelle der Galeria nachgefragt werden, ob neue Bilder gepostet worden sind. Wenn Du diese Tabelle aber nicht benutzt/hast, dann gibt es solchen Fehler wie eben von Dir beschrieben.

Checke mal die Datenbankabfragen im Thema selbst. Kann ja sein das dies schon zur Lösung des Problems führt.

Mirko

EdeWuff

okay - danke,

die "böse Stelle" ist diese:

echo " | <a href=\"admin.php?op=CalendarAdmin\">Termine: $num</a>\n";           
           $res=sql_query("select * from $prefix"._reviews_add."", $dbi);
           $num = sql_num_rows($res, $dbi);
           echo " | <a href=\"admin.php?op=reviews\">Tests: $num</a>\n";           
           
           $res=sql_query("select * from $prefix"._nukebook_queue."", $dbi);
           $num = sql_num_rows($res, $dbi);
           echo " | <a href=\"admin.php?op=NukebookAdmin\">Gästebuch: $num</a>\n";

Die Tabellen nukebook und nukebook_queue gab es mit dem neuen Präfix nicht. Jetzt klappt es.

Micro: ich habe noch mal einen Kommentar zu dem Artikel "Themen selber schreiben" geschrieben. Schon gelesen ?

Micro

Ne, nochnicht gelesen, weil ich nen paar Tage nicht zum weiterschreiben gekommen bin.
Denn es fehlen noch einige wichtige Absätze. ;o)

Mirko

Vielleicht gibt`s noch einen Tip !?

ich krieg die Proxima Tabelle nicht in die Strato Datenbank:

SQL-Befehl :

CREATE TABLE ls_proxima_blocks (
  mid int(10) NOT NULL default '0',
  bid int(10) NOT NULL auto_increment,
  bkey varchar(15) NOT NULL default '',
  title varchar(60) NOT NULL default '',
  content text NOT NULL,
  url varchar(200) NOT NULL default '',
  position char(1) NOT NULL default '',
  weight int(10) NOT NULL default '1',
  active int(1) NOT NULL default '1',
  refresh int(10) NOT NULL default '0',
  time varchar(14) NOT NULL default '0',
  blanguage varchar(30) NOT NULL default '',
  blockfile varchar(255) NOT NULL default '',
  view int(1) NOT NULL default '0',
  PRIMARY KEY (mid,bid)
) TYPE=MyISAM


MySQL meldet:

Incorrect table definition; There can only be one auto column and it must be defined as a key

Ich habe sie sogar schon "zu Fuß" eingegeben. Da hat er über ein Feld mit Namen time gemeckert (das wär ein reservierter Begriff).

Ich habe mir ein Dump für diese eine Tabelle von meinem lokalen Server gezogen, dort funktioniert es ja, aber damit krieg`ich es auch  nicht hin.

CU, Peter

Micro

allerdings ne blöde Sache.
Ich vermute mal eine Inkompatibilität in der MySQL Server Version.

Als Tip .. der eigentlich nicht ganz so ... naja .. gut ist.
Benenne Time einfach in time2 um, installiere die Tabelle, was er dann wohl foffentlich tun sollte, wenn er nur "time" nicht will und benenne time2 in time um.
An sich sollts gehen.

Denn eigentlch is die Tabelle sauber... *grübel*

CREATE TABLE nuke_proxima_blocks (
  mid int(10) NOT NULL default '0',
  bid int(10) NOT NULL auto_increment,
  bkey varchar(15) NOT NULL default '',
  title varchar(60) NOT NULL default '',
  content text NOT NULL,
  url varchar(200) NOT NULL default '',
  position char(1) NOT NULL default '',
  weight int(10) NOT NULL default '1',
  active int(1) NOT NULL default '1',
  refresh int(10) NOT NULL default '0',
  time varchar(14) NOT NULL default '0',
  blanguage varchar(30) NOT NULL default '',
  blockfile varchar(255) NOT NULL default '',
  view int(1) NOT NULL default '0',
  PRIMARY KEY  (mid,bid)
) TYPE=MyISAM;

Das is mal meine Testversion vom ProximaPro auf MySQL 3.23.47 (auch schon etwas betagter die Version ;o))

Mirko

Darijo

was ist den proxima ??
ich habe es schon oft gelesen... aber nirgends eine eine Beschreibung gefunden

Micro

Proxima ist nicht nur eine Erweiterung vom PHP Nuke, sondern kommt eher einem Totalumbau gleich.
Aber eher das Aussehen der Webseite als die Datenbankstruktur und Userverwaltung.

Es ist ziemlich umfangreich, noch nicht richtig übersetzt und ganz ehrlich, auch nichts für jemanden der "eben" erst etwas mit Nuke, PHP, HTML, CSS und anderem gespielt hat und nur ein wenig davon kennt.

Man kann das ganze Layout Online anpassen, Blöcke von hier nach da schieben, unterschiedliche Farben, Themen komplett neu schreiben und noch vieles mehr.

Also wie gesagt, definitiv nix für Neueinsteiger oder welche die von HTML keine Ahnung haben. Denn dort Fragen hier zu beantworten, ist fast unmöglich. Weil es tausende Kombinationen und Fehlerquellen geben kann.

Am besten Du fragst Piximo dazu nochmal. Der ist derjenige, der sich damit eingehender beschäftigt.

Mirko

hi all,

ich habe einen Fehler (?) gefunden, der dazu führt, dass ich die "proxima_blocks" nicht in die Datenbank bekomme: wenn ich nämlich in der vorletzten Zeile die Definition des Primärschlüssel auf bid einschränke (oder auch mid) dann kann ich die Tabelle anlegen. bid ist der Favorit meiner Wahl, weil das Feld ja "autoincrement" ist. Die Frage ist jetzt, wieso kann ich den Primärschlüssel nicht über mehrere Felder anlegen ? Eigentlich sollte es doch gehen - oder ?

ich werde weiterforschen,

Gruß, Peter

EdeWuff

Jetzt weiss ich es genau:

CREATE TABLE ls_proxima_blocks (
mid int(10) NOT NULL default '0',
bid int(10) NOT NULL auto_increment,
bkey varchar(15) NOT NULL default '',
title varchar(60) NOT NULL default '',
content text NOT NULL,
url varchar(200) NOT NULL default '',
position char(1) NOT NULL default '',
weight int(10) NOT NULL default '1',
active int(1) NOT NULL default '1',
refresh int(10) NOT NULL default '0',
time varchar(14) NOT NULL default '0',
blanguage varchar(30) NOT NULL default '',
blockfile varchar(255) NOT NULL default '',
view int(1) NOT NULL default '0',
INDEX (bid),
PRIMARY KEY (mid,bid)
)  

Das Feld mit dem autoicrement muss als Index definiert werden, bevor es mit einem anderen Feld zusammen als Primärschlüssel funktioniert (Danke an die Hilfe aus dem Strato-Forum)