Welcome, Guest. Please login or register.
Did you miss your activation email?
May 26, 2012, 11:10:40 PM

Login with username, password and session length
Search:     Advanced search
Wollen Sie dem WebsiteBaker Team beitreten?
Nähere Informationen finden Sie unter hier und auf unserer neuen Webseite.
155556 Posts in 21715 Topics by 7737 Members
Latest Member: gx-world
* Home Help Search Login Register
Pages: [1]   Go Down
Print
Author Topic: Modul CODE & php - Syntax wie?  (Read 432 times)
Stephan_Muc
Guest
« on: November 09, 2011, 02:36:19 PM »

Hallo,

versuche eine Webseite mit php Code zu erstellen. Läuft eigentlich auf jedem Server, mit jeder Domain, auch mit anderen CMS-Systemen... nur mit Websitebaker bekmme ich das Ganze nicht zum Laufen...
Ich vermute es liegt an der Syntax!?

Habe eine Seite mit Modul CODE erstellt und versuche folgendes zum Laufen zu bringen:

mysql_connect("localhost","web118","passwortxxx");
  mysql_select_db("usr_web118_1");
   $abfrage = "SELECT * FROM links order by id asc";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_array($ergebnis, MYSQL_ASSOC))
     {
           {echo '<table border="0">
      <tr><td width="200" valign="top" align="left"><A HREF="http://' . $row['url'] . '" TARGET="_blank">' . $row['url'] . '</a></td><td width="*" valign="top" align="left">' . $row['beschreibung'] . '</td>
           </tr></table>';
                     }
                          }


Habe schon mit der Syntax gespielt " gegen ' getauscht etc.. alles sinnlos und ohne Erfolg.
Forumsuche hier hat mir auch nicht weiter geholfen.

Felhermeldung lautet:
Fatal error: Call to a member function numRows() on a non-object in /var/www/web79/html/framework/class.database.php on line 151

in Zeile 151 class.database.php habe ich nachgeschaut... komme aber nicht weiter.

Kann mir hier jemand einen Tipp geben?
Würde mir sehr helfen.
Danke & Grüße
Stephan

Logged
pcwacht
AddOn Development
*
Offline Offline

Posts: 2859



WWW
« Reply #1 on: November 09, 2011, 03:32:33 PM »

Sie machen ein neue connection zum database mysql wo mit die wb connection aufhalt.
Sie mussen danach wieder die db class von SWB erstellen
Etwa wie
$database = new database();
am ende deiner code um wb wieder ein database connection zu geben

Gruss,
John
Logged

http://www.ictwacht.nl = Dutch ICT info
http://www.pcwacht.nl = My first
both still work in progress, since years.....
Stephan_Muc
Guest
« Reply #2 on: November 09, 2011, 03:49:01 PM »

Super! DANKE!
Hat funktioniert! wink

Vielen vielen vielen Dank!
Grüße
S.
PS: Aber leider habe ich nicht verstanden, warum es funktioniert...  wink
Logged
pcwacht
AddOn Development
*
Offline Offline

Posts: 2859



WWW
« Reply #3 on: November 09, 2011, 04:00:29 PM »

WB braucht die database und macht einer connection welcher er fest halt,
wenn code ein anderes connection macht geht die connection verloren.

Nach dein code muss wb noch andere sachen machen, aber die db ist weg, so gibt's die fehler.

Gans einfach eigentlich

Ich hoffe sie verstehen meiner deutsch...

John
Logged

http://www.ictwacht.nl = Dutch ICT info
http://www.pcwacht.nl = My first
both still work in progress, since years.....
kweitzel
Forum administrator
*****
Offline Offline

Posts: 6977


WWW
« Reply #4 on: November 09, 2011, 05:45:26 PM »

Für den Fall das John's Ausführungen etwas zu stolperig sind:

WebsiteBaker benötigt ja auch eine Datenbankverbindung . Mit Öffnen der neuen Datenbankverbindung wird die WB Datenbankverbindung geschlossen. Jetzt versucht WB selber aber auch noch Daten zu laden, kann dies aber nicht. Darum muss die WB Datenbankverbindung für WB neue aufgebaut werden. Das geschieht mit der Codezeile von John.

Gruß

Klaus
Logged

WebsiteBaker Org e.V. - for WebsiteBaker

DarkViper
Development Team
*****
Offline Offline

Posts: 1254


« Reply #5 on: November 09, 2011, 06:28:01 PM »

Fast richtig die Erklärungen. (zumindest sinngemäss) wink

Das ganze basiert auf dem Default-Verhalten des mySQL-Clients von PHP.
Wenn nicht bei jedem einzelnen mySQL-Kommando explizit angegeben wird, für welche Verbindung das Kommando gelten soll, so nutzt der Client grundsätzlich die zuletzt verwendete Verbindung.
Zudem war/ist die derzeitige Klasse 'database' von WB von Anbegin an nicht auf den Zugriff auf verschiedene Verbindungen ausgelegt.

Also passiert folgendes: Sobald Du eine neue Datenbankverbindung öffnest, greifen alle nachfolgenden mySQL-Kommandos auf diese neue Verbindung zu. Selbstverständlich machen das auch die nachfolgenden Datenbankzugriffe von WB und gehen damit dann logischerweise in's Leere. Die alte, ursprüngliche Verbindung besteht weiterhin, kann jedoch nicht so ohne weiteres wieder angesprochen werden.

Als einfache Abhilfe genügt es, z.B. am Ende des eigenen Codes folgenden Befehl aufzurufen um die Verbindung wieder auf die ursprüngliche 'zurückzuschalten':

Code:
<?php
mysql_ping
$GLOBALS['database']->db_handle );
?>

... und schon ist die alte WB - Datenbankverbindung wieder aktiv.

Warum, wieso, weshalb das genau so und nicht anders funktioniert, kann hier (PHP Manual) nachgelesen werden.

Zur Zeit wird die Klasse überarbeitet, so dass problemlos beliebig viele, voneinander unabhängige Verbindungen geöffnet und auch gleichzeitig genutzt werden können. Die geänderte Klasse wird in einem der nächsten Fixes veröffentlicht.
Logged

Anleitungen lesen und selber nachdenken ist anstrengend...  Da lass ich doch lieber andere für mich denken...

In 1984:  Nineteen Eighty-Four is a unrealistic utopia!!
In 2012:  Nineteen Eighty-Four is a little piece only of our reality!!
Pages: [1]   Go Up
Print
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!