Seite 1 von 1
Problem mit PHP Skripten / phplib / SQL
Verfasst: So 3. Nov 2002, 19:56
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!
Verfasst: So 3. Nov 2002, 20:26
von Eisi
Wenn ich
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?

Verfasst: So 3. Nov 2002, 21:22
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?
Verfasst: So 3. Nov 2002, 21:52
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.
Verfasst: So 3. Nov 2002, 22:26
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
Verfasst: So 3. Nov 2002, 22:36
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.
Verfasst: So 3. Nov 2002, 23:02
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>";}
Verfasst: So 3. Nov 2002, 23:43
von Björn
Wenn kein Output kommt, hast Du sicher Fehlermeldungen im Lofile logs/errorlogs.txt . Kannst Du die mal posten?
Verfasst: So 3. Nov 2002, 23:54
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
Verfasst: Mo 4. Nov 2002, 01:23
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!

Verfasst: Mo 4. Nov 2002, 08:40
von idea-tec
TIPP!!!
wenn ihr dinge wie $sess, $db und ähnliches auslesen (echoen) wollt könnt ihr ganz einfach folgendes benutzen:
dadurch bekommt ihr Arrays und Objekte sauber angezeigt
Verfasst: Mo 4. Nov 2002, 20:49
von Eisi
Danke, den Befehl hab ich gesucht. Hatte ich vergessen...
Aaaaber (Achtung:Laie!

), ist $db denn nicht ein Object und kein Array?

Verfasst: Mo 4. Nov 2002, 22:31
von Björn
soweit ich weiß, bekoomst Du dann bei einem print mindestens die Ausgabe Object oder Array auf den Screen.
Verfasst: Mo 4. Nov 2002, 22:35
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

)