Problem mit PHP Skripten / phplib / SQL

Gesperrt
Eisi
Beiträge: 102
Registriert: So 3. Nov 2002, 18:50
Kontaktdaten:

Problem mit PHP Skripten / phplib / SQL

Beitrag von Eisi »

Hallo,
der alte Thread ist mir zu sehr in eine andere Richtung gedriftet, darum noch mal neu:

Ich möchte ein PHP-Skript einbinden. Es handelt sich dabei im Prinzip um das Skript phpbb_fetch_all.php, falls das jemand kennt. Es holt News-Postings aus meinem Forum (phpbb2), bzw. soll das machen...

Das Skript lässt sich einbinden und läuft. Aber die nächste Datenbankabfrage von Contenido, z.B. für das Navi-Modul produziert einen "call to undefinded function: query()......eval'd code in blabla" error.

Kann ich dagegen irgendwas machen, oder sind die skripte einfach inkompatibel? Das fetch_post skript includiert eine Menge anderer Skripte, die eben z.T. die Datenbankfunktionen enthalten. Ich kann die Skripte nicht umschreiben, es sind "Original"-skripte von PhpBB.

Für eure Hilfe, schon mal vielen Dank!
Eisi
Beiträge: 102
Registriert: So 3. Nov 2002, 18:50
Kontaktdaten:

Beitrag von Eisi »

Wenn ich

Code: Alles auswählen

$db = new DB_Contenido;
ans ende meines Skripts setze, kommt der Error nicht. Das nachgelagerte Navi-Modul produziert nun allerdings keinen Output.

Jemand ne Idee, wie ich Contenido wieder auf seine Datenbank ansetzen kann? ;)
Björn
Beiträge: 276
Registriert: Di 17. Sep 2002, 18:25
Kontaktdaten:

Beitrag von Björn »

Ich denke, die Skripte bekriegen sich gegenseitig und da das phpbb keine kleine Soft ist, kann der Fehler überall liegen.

Warum benutzt Du nicht Webgrab dafür?
Eisi
Beiträge: 102
Registriert: So 3. Nov 2002, 18:50
Kontaktdaten:

Beitrag von Eisi »

@Björn:
Webgrab hilft mir nichts, ich will ja datenbankinhalte aus dem Forum ziehen. Das Skript läuft ja auch.

So wie ich das (als Laie) sehe, liegt es daran, dass beide die phplib sql funktionen und Variablen nutzen. Mein Skript legt $db auf die phpBB Datenbank. Dadurch dass ich das wieder rückgängig gemacht habe, indem ich den obigen code eingefügt habe, gibt es keinen Fehler mehr.

Es muss also noch einen Code-Schnipsel geben, der das Navi-Modul wieder mit Leben erfüllt, wenn ich ihn ans Ende meines Skriptes packe. Ein Contenido-Entwickler kann doch sicherlich sagen, was das sein könnte. Es muss ja etwas mit den verwendeten variablen zutun haben.
Sven777b
Beiträge: 503
Registriert: Mi 18. Sep 2002, 00:00
Wohnort: Sachsen
Kontaktdaten:

Beitrag von Sven777b »

sorry - bin kein Entwickler - trotzdem mal die Frage... welche Navigation meinst du? also das Modul "Navigation" das standardmäßig enthalten ist? Damit ich weiß, wo ich suchen soll... ich versuche das mal bei mir nachzuvollziehen
Module zum anschauen:
bei Sven: http://contenido-module.de
bei Pulk : http://spielwiese.pulk.net

Der-Dirigent: http://der-dirigent.de
Sven777b
Beiträge: 503
Registriert: Mi 18. Sep 2002, 00:00
Wohnort: Sachsen
Kontaktdaten:

Beitrag von Sven777b »

das mit dem $db = new DB_Contenido; funktioniert nicht - produziert bei mir den selben Fehler...

am besten du sicherst vorher die Variable $db in eine andere und holst sie danach zurück *gg*
also im OUTPUT an den Anfang:

$dbsik = $db;

und ans Ende

$db = $dbsik;

das hat bei mir zumindest geklappt.
Module zum anschauen:
bei Sven: http://contenido-module.de
bei Pulk : http://spielwiese.pulk.net

Der-Dirigent: http://der-dirigent.de
Eisi
Beiträge: 102
Registriert: So 3. Nov 2002, 18:50
Kontaktdaten:

Beitrag von Eisi »

@Björn:
Ja, das Contenido, original, Navigations-Modul

@Sven777b:
Hmmm.

Ich hab jetzt an den Anfang meines Skriptes

$db_vamostemp = $db;

gesetzt, und am Ende dann wieder andersrum.
Der Fehler wird immer noch unterdrückt, aber es kommt auch immer noch kein output.

Testweises auskommentieren von

$db = $db_vamostemp;
zu
// $db = $db_vamostemp;

erzeugt wieder den Error. Aber wie geht's nu weiter? :)

Noch andere Ideen? Ich poste mal den Code des Navi-Moduls (Original). Vielleicht sieht jemand auf den ersten Blick, woran es haken könnte.

Auf http://www.vamosonline.de seht ihr das Ergebnis. Auf der Startseite erscheint rechts das Menü (Impressum, Kontakt), auf der Seite "Aktuelles" dagegen nicht. Wenn ich das Skript nicht includiere, erscheint das Navi-Modul, wie auf der Startseite auch, es ist also prinzipiell lauffähig. ;)


Code: Alles auswählen

if ("CMS_VALUE[4]" == 0) {$navmod_id = $idcat;}
else {$navmod_id = "CMS_VALUE[4]";}

if ("CMS_VALUE[5]" != "0")
{$sql = "SELECT * FROM $cfgTab_upl WHERE idupl='CMS_VALUE[5]'";
$db->query($sql);$db->next_record();$navmod_img = "".$db->f("dirname")."/".$db->f("filename")."";}

if ("CMS_VALUE[2]" == "")
{if ("CMS_VALUE[3]" == "ja")
{$sql = "SELECT A.title AS title,A.idside AS idside,B.idcat AS idcat,C.parentid AS parentid FROM $cfgTab_side_lang AS A,$cfgTab_cat_side AS B,$cfgTab_cat AS C WHERE A.idside=B.idside AND B.idcat=C.idcat AND C.idclient='$client' AND B.idcat='$navmod_id' AND idlang='$lang' AND online='1'";}

else {$sql = "SELECT A.title AS title,A.idside AS idside,B.idcat AS idcat,C.parentid AS parentid FROM $cfgTab_side_lang AS A,$cfgTab_cat_side AS B,$cfgTab_cat AS C WHERE A.idside=B.idside AND B.idcat=C.idcat AND C.idclient='$client' AND B.idcat='$navmod_id' AND idlang='$lang' AND online='1' AND is_start='0'";}}

else {$sql = "SELECT name AS title,A.idcat AS idcat,A.idtree AS idtree FROM $cfgTab_cat_tree AS A, $cfgTab_cat AS B, $cfgTab_cat_lang AS C WHERE A.idcat=B.idcat AND B.idcat=C.idcat AND B.idclient='$client' AND C.idlang='$lang' AND B.parentid='$navmod_id' AND C.visible='1' ORDER BY A.idtree";}

$db->query($sql);

if ($db->num_rows() != 0 & "CMS_VALUE[0]" != 0)
{echo "<span id=\"fontCMS_VALUE[0]\">";}
for ($i=0; $i<$db->num_rows(); $i++)
{$db->next_record();
if ("CMS_VALUE[2]" == "") {$navmod_link ="front_content.php?client=$client&lang=$lang&parent=$parent&subid=".$db->f("parentid")."&idcat=".$db->f("idcat")."&idside=".$db->f("idside")."";}
else {$navmod_link ="front_content.php?client=$client&lang=$lang&parent=$parent&subid=".$db->f("idtree")."&idcat=".$db->f("idcat")."&idside=".$db->f("idside")."";}

if ("CMS_VALUE[1]" == "")
	{if ($db->f("idside") != $idside)
	{echo "<a href=\"".$sess->url("$navmod_link")."\" onMouseOver=\"on('".$db->f("title")."');return true;\" onMouseOut=\"off();return true;\" id=\"fontCMS_VALUE[0]\">".$db->f("title")."</a>";}
	else {echo "".$db->f("title")."";}
	if ("$i" != $db->num_rows()-1)
	{if (!"$navmod_img") {echo " CMS_VALUE[6] ";}
	else {echo " <img src=\"$navmod_img\" border=\"0\"> ";}}}

else
{if ("$i" != $db->num_rows()-1)
{if (!"$navmod_img") {echo "CMS_VALUE[7] ";}
else {echo "<img src=\"$navmod_img\" border=\"0\"> ";}
echo "<a href=\"".$sess->url("$navmod_link")."\" onMouseOver=\"on('".$db->f("title")."');return true;\" onMouseOut=\"off();return true;\" id=\"fontCMS_VALUE[0]\">".$db->f("title")."</a><br>";}
else {if (!"$navmod_img") {echo "CMS_VALUE[7] ";}
else {echo "<img src=\"$navmod_img\" border=\"0\"> ";}
echo "<a href=\"".$sess->url("$navmod_link")."\" onMouseOver=\"on('".$db->f("title")."');return true;\" onMouseOut=\"off();return true;\" id=\"fontCMS_VALUE[0]\">".$db->f("title")."</a>";}}}

if ($db->num_rows() != 0 & "CMS_VALUE[0]" != 0)
{echo "</span>";}
Björn
Beiträge: 276
Registriert: Di 17. Sep 2002, 18:25
Kontaktdaten:

Beitrag von Björn »

Wenn kein Output kommt, hast Du sicher Fehlermeldungen im Lofile logs/errorlogs.txt . Kannst Du die mal posten?
Björn
Beiträge: 276
Registriert: Di 17. Sep 2002, 18:25
Kontaktdaten:

Beitrag von Björn »

Noch eine Idee:
Hast Du das phpbb in einer anderen Datenbank liegen?
Wenn ja, mußt Du mit

mysql_select_db (string ContenidoCMSdatenbank)

nach dem phpbbinclude wieder zurückwechseln in Deine CMS- Datenbank.

Nachtrag Webgrab:
Das würde auch funktionieren. Du legst den webgrab_no_path einfach auf das phpbb_fetch_all.php Skript. Eigentlich nichts anderes als das: http://feg-borna.de/cms/frontend/front_ ... &idside=28
Eisi
Beiträge: 102
Registriert: So 3. Nov 2002, 18:50
Kontaktdaten:

Beitrag von Eisi »

Keine Errors vorhanden, hab's extra noch ein paar mal aufgerufen.

phpBB liegt in der gleichen Datenbank.
Hast Du ein snipplet, mit dem ich mal das $db bzw. $sql array durchlaufen könnte und das mir dann einfach alles echod? wenn das leer bleibt, muss ja unterwegs was verloren gegangen sein.. :)

Ich probier mal Webgrab und meld mich dann wieder.

[EDIT]
Es ist jetzt 1:54 MEZ und es LÄUFT! :)
Danke für die Hilfe, ich weiß zwar immer noch nicht woran es gelegen hat, aber mit Webgrab ging es dann doch. Ich musste zwar noch einigen Header -Output in webgrab ausstellen, da ansonten auch Fehler auftraten (Header already sent), aber nu klappt's.

Falls doch noch jemand eine Idee hat, woran es ursprünglich gelegen haben könnte, wäre ich trotzdem dankbar.

Gute Nacht! :)
idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Beitrag von idea-tec »

TIPP!!!

wenn ihr dinge wie $sess, $db und ähnliches auslesen (echoen) wollt könnt ihr ganz einfach folgendes benutzen:

Code: Alles auswählen

print_r (die Variable -> z.B.: $db)
dadurch bekommt ihr Arrays und Objekte sauber angezeigt
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)
Eisi
Beiträge: 102
Registriert: So 3. Nov 2002, 18:50
Kontaktdaten:

Beitrag von Eisi »

Danke, den Befehl hab ich gesucht. Hatte ich vergessen...

Aaaaber (Achtung:Laie! :)), ist $db denn nicht ein Object und kein Array? :)
Björn
Beiträge: 276
Registriert: Di 17. Sep 2002, 18:25
Kontaktdaten:

Beitrag von Björn »

soweit ich weiß, bekoomst Du dann bei einem print mindestens die Ausgabe Object oder Array auf den Screen.
idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Beitrag von idea-tec »

mit "print_r" bekommt man sowohl Arrays als auch Objekte ordentlich aufgebröselt angezeigt...

wenn man NUR "print" angibt bekommt man nur angezeigt, dass es ein Objekt oder ein Array ist....


Notation: PRINT_R (aber bitte und um gottes willen KLEIN schreiben, SO GROSS ist es nur für die blinden geschrieben ;-))
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)
Gesperrt