|
| Autor |
Nachricht |
BiBaButzemann Erfahrener [User]

Anmeldung: 25.06.06 Beiträge: 91 Wohnort: Moers
|
Verfasst am: 09.09.2007, 10:20 Titel: Klassen Instanz in anderer Datei verfügbar machen |
|
|
Hallo.
Ich habe ein kleines Problem.
Ich möchte gerne eine bestimmte Klasseninstanz meiner Klasse MySQL in einer nachfolgend per include eingebundenen Datei verfügbar machen
Also - ich habe in Datei 1 die Klasse aufgerufen mit der Variable $sql.
So - jetzt hab ich danach eine Datei functions.php per include eingebunden und möchte gerne auf die Klasse (Instanz) mit der gleichen Variable $sql zugreifen!
Wie bekomme ich das hin? Ich weis es leider nicht!
Hoffe das ihr mir da helfen könnt _________________ Mit freundlichen Grüßen
BiBaButzemann
|
|
| Nach oben |
|
 |
TNDAriakas Beliebter [User]


Anmeldung: 30.07.07 Beiträge: 277 Wohnort: Bremen
|
Verfasst am: 09.09.2007, 11:00 Titel: |
|
|
Ohne Code kann ich jetzt nur blind drauf los raten. Aber heir mal eine möglichkeit:
Also deine mysql.php wird wohl irgemndwie so aussehen:
| Code: | class mysql
{
function mysql() // Constructor
{ }
function TuWas( $was_denn )
{
echo $was_denn;
}
}
$sql = new mysql(); // das ist wichtig, um die variable global zu machen, darf sie nicht mit in der classen dekleration stehen |
Und deine functions.php, in der du auf die $sql variable zugreifen möchtetst,könnte so aussehen
| Code: | class FooBar
{
function FooBar() // Constrcutor
{ }
function Tu_Was_Mit_SQL( $was_denn )
{
global $sql; // das hier ist der knackpunkt. Damit kannst du dann auf deklarierte globale variablen zugreifen.
$sql->TuWas( $was_denn );
}
}
$foobar = new FooBar();
$foobar->Tu_Was_Mit_SQL( "Bla bla bla" ); |
Meinste das so? Wenn nciht poste mal deinen code  _________________ So long...Ari
Error! Reality.sys is corrupt. Smash head on keyboard to restart universe.
Google ist dein Freund
|
|
| Nach oben |
|
 |
BiBaButzemann Erfahrener [User]

Anmeldung: 25.06.06 Beiträge: 91 Wohnort: Moers
|
Verfasst am: 09.09.2007, 11:33 Titel: |
|
|
Hi, nicht ganz!
Nein - wie ich eine Klasse in einer anderen Klasse verfügbar mache weis ich. Aber das brauch ich nicht ^^. Da in der functions.php nur Funktionen (ohne Klassen) drin stehen.
Meine Codes sieht so aus:
index.php:
| Code: | $config = $root."includes/config.php";
$functions = $root."includes/functions.php";
if(!file_exists($config)) {
die("<font color=\"#FF0000\"><b>Kritischer Fehler:</b></font><br>\nEs wurde keine Konfigurationsdatei auf <b>$root</b> gefunden");
}
include $config;
$sql = new MySQL('connect');
.....
include $functions;
include $tplfile;
|
und die functions.php:
| Code: | function sitenews() {
$newsq = $sql->getQuery('SELECT hj_news.newsid, hj_news.newstitle, hj_news.newscat, hj_news.newstext, hj_news.newsautor, hj_news.newsdate, hj_news_cat.ncatid, hj_news_cat.ncattitle, hj_news_cat.ncatdesc FROM hj_news, hj_news_cat WHERE hj_news.newscat = hj_news_cat.ncatid = 1 ORDER BY hj_news.newsdate desc');
if(mysql_num_rows($newsq) > 0) {
} else {
die("Es sind zur Zeit keine News für die Homepage vorhanden");
}
} |
Die Klasse hat eigentlich nichts damit zu tun, deshalb hab ich den Code hier nicht gepostet.
Falls du noch mehr brauchst - ich bin online  _________________ Mit freundlichen Grüßen
BiBaButzemann
|
|
| Nach oben |
|
 |
TNDAriakas Beliebter [User]


Anmeldung: 30.07.07 Beiträge: 277 Wohnort: Bremen
|
Verfasst am: 09.09.2007, 11:42 Titel: |
|
|
Also wenn ich dich jetzt richtig verstehe, dann kannst du in der funktion sitenews nicht auf $sql zugreifen?
Probiers doch mal stumpf mit  _________________ So long...Ari
Error! Reality.sys is corrupt. Smash head on keyboard to restart universe.
Google ist dein Freund
|
|
| Nach oben |
|
 |
BiBaButzemann Erfahrener [User]

Anmeldung: 25.06.06 Beiträge: 91 Wohnort: Moers
|
Verfasst am: 09.09.2007, 11:49 Titel: |
|
|
^^ hab ich schon
geht nicht (
in einem anderen Forum sagte man mir das ich gar nicht die Klasse neu einbinden muss (was ja eh nicht geht) - das ich diese einfach benutzen könnte (
Aber - das ist ja nicht so! Sieht man ja ( _________________ Mit freundlichen Grüßen
BiBaButzemann
|
|
| Nach oben |
|
 |
TNDAriakas Beliebter [User]


Anmeldung: 30.07.07 Beiträge: 277 Wohnort: Bremen
|
Verfasst am: 09.09.2007, 11:53 Titel: |
|
|
Gibt er denn einen fehler raus? _________________ So long...Ari
Error! Reality.sys is corrupt. Smash head on keyboard to restart universe.
Google ist dein Freund
|
|
| Nach oben |
|
 |
BiBaButzemann Erfahrener [User]

Anmeldung: 25.06.06 Beiträge: 91 Wohnort: Moers
|
Verfasst am: 09.09.2007, 11:54 Titel: |
|
|
^^
den hier:
| Code: | Notice: Undefined variable: sql in /home/www/web2/html/v2/includes/functions.php on line 19
Fatal error: Call to a member function getQuery() on a non-object in /home/www/web2/html/v2/includes/functions.php on line 19 |
Line 19 ist die SQL Abfrage wie oben gepostet _________________ Mit freundlichen Grüßen
BiBaButzemann
|
|
| Nach oben |
|
 |
TNDAriakas Beliebter [User]


Anmeldung: 30.07.07 Beiträge: 277 Wohnort: Bremen
|
Verfasst am: 09.09.2007, 12:12 Titel: |
|
|
Ich hab mal ein bissel in der PHP Doc und im inet rumgesucht und es müsste mit global gehen. Vllt haste irgendwo einen fehler in deinem script nach $sql = new MySQL('connect');
Hast du irgendwo nach $sql = new MySQL('connect'); die variable nochmal neu zugewiesen? Also überschrieben?
was gibt er denn aus wenn du das machst:
| Code: | function sitenews() {
global $sql;
print_r( $sql );
/* $newsq = $sql->getQuery('SELECT hj_news.newsid, hj_news.newstitle, hj_news.newscat, hj_news.newstext, hj_news.newsautor, hj_news.newsdate, hj_news_cat.ncatid, hj_news_cat.ncattitle, hj_news_cat.ncatdesc FROM hj_news, hj_news_cat WHERE hj_news.newscat = hj_news_cat.ncatid = 1 ORDER BY hj_news.newsdate desc');
// if(mysql_num_rows($newsq) > 0) {
// } else {
// die("Es sind zur Zeit keine News für die Homepage vorhanden");
} */
} |
Aso vergessen:
du solltest auch schaun ob das dann mit dem hier übereinstimmt:
| Code: | $sql = new MySQL('connect');
print_r( $sql ); |
Wenn nciht haste irgendwo mitten drin den fehler _________________ So long...Ari
Error! Reality.sys is corrupt. Smash head on keyboard to restart universe.
Google ist dein Freund
|
|
| Nach oben |
|
 |
BiBaButzemann Erfahrener [User]

Anmeldung: 25.06.06 Beiträge: 91 Wohnort: Moers
|
Verfasst am: 09.09.2007, 12:29 Titel: |
|
|
hi, guck mal bitte selber ^^
da gibt es etliches aus:
http://happyjumble.de/v2/index.php?menue=default
aber nur unter default gucken ^^ die anderen haben nicht den Funktionsaufruf drin im switch _________________ Mit freundlichen Grüßen
BiBaButzemann
|
|
| Nach oben |
|
 |
TNDAriakas Beliebter [User]


Anmeldung: 30.07.07 Beiträge: 277 Wohnort: Bremen
|
Verfasst am: 09.09.2007, 12:35 Titel: |
|
|
Hast das jetzt so gemacht wie ich geschrieben habe? Wenn ja, müsste das er die $sql var mot global auch in deiner funktion finden. Beides ist ein MySQL Object.
Gibt er immer noch den fehler aus wenn du das hier schreibst:
| Code: | function sitenews() {
global $sql;
$newsq = $sql->getQuery('SELECT hj_news.newsid, hj_news.newstitle, hj_news.newscat, hj_news.newstext, hj_news.newsautor, hj_news.newsdate, hj_news_cat.ncatid, hj_news_cat.ncattitle, hj_news_cat.ncatdesc FROM hj_news, hj_news_cat WHERE hj_news.newscat = hj_news_cat.ncatid = 1 ORDER BY hj_news.newsdate desc');
if(mysql_num_rows($newsq) > 0) {
} else {
die("Es sind zur Zeit keine News für die Homepage vorhanden");
}
} |
_________________ So long...Ari
Error! Reality.sys is corrupt. Smash head on keyboard to restart universe.
Google ist dein Freund
|
|
| Nach oben |
|
 |
BiBaButzemann Erfahrener [User]

Anmeldung: 25.06.06 Beiträge: 91 Wohnort: Moers
|
Verfasst am: 09.09.2007, 12:44 Titel: |
|
|
Nein, er gibt gar nichts mehr aus.
Jetzt weis ich nicht ob das Script funktioniert. Aber - es kann ja eigentlich nicht funktionieren - denn wenn es so wäre würde er die Seite richtig darstellen oder? ^^
macht er aber nicht, wenn du mal auf Fotogalerie (?menue=galerie) gehst oder so z.B. sieht das ganz anders aus. So - wie es auch eigentlich aussehen sollte!
Da wäre dann auch noch meine Frage: Wieso mach ich die Variable erst in der functions.php global verfügbar? und nicht in der index?
Wenn ich diese zwei Zeilen nach den Query schreibe
| Code: | $newsr = mysql_fetch_assoc($newsq);
echo $newsr;
| sollte eigentlich die Ausgabe für $newsr Array lauten.
So - er gibt aber einfach nichts mehr aus  _________________ Mit freundlichen Grüßen
BiBaButzemann
Zuletzt bearbeitet von BiBaButzemann am 09.09.2007, 13:07, insgesamt einmal bearbeitet
|
|
| Nach oben |
|
 |
TNDAriakas Beliebter [User]


Anmeldung: 30.07.07 Beiträge: 277 Wohnort: Bremen
|
Verfasst am: 09.09.2007, 13:06 Titel: |
|
|
Also echo und print_r sind imemr ne super sache um fehler zu finden
Probiers mal:
| Code: | function sitenews() {
global $sql;
$newsq = $sql->getQuery('SELECT hj_news.newsid, hj_news.newstitle, hj_news.newscat, hj_news.newstext, hj_news.newsautor, hj_news.newsdate, hj_news_cat.ncatid, hj_news_cat.ncattitle, hj_news_cat.ncatdesc FROM hj_news, hj_news_cat WHERE hj_news.newscat = hj_news_cat.ncatid = 1 ORDER BY hj_news.newsdate desc');
if(mysql_num_rows($newsq) > 0) {
} else {
die("Es sind zur Zeit keine News für die Homepage vorhanden");
}
print_r( "NEWSQ: ".$newsq );
} |
wenn da nix kommt, erschiess dich Nein, dann will ich mal deinen ganzejn code sehen, dann finden wir den fehelr leichter. Denn irgendwo ahst du defenitiv einen drinne  _________________ So long...Ari
Error! Reality.sys is corrupt. Smash head on keyboard to restart universe.
Google ist dein Freund
|
|
| Nach oben |
|
 |
BiBaButzemann Erfahrener [User]

Anmeldung: 25.06.06 Beiträge: 91 Wohnort: Moers
|
Verfasst am: 09.09.2007, 13:08 Titel: |
|
|
Sorry, da haben wir beide gleichzeitig nen Post bearbeitet
"...
Wenn ich diese zwei Zeilen nach den Query schreibe
Code:
$newsr = mysql_fetch_assoc($newsq);
echo $newsr;
sollte eigentlich die Ausgabe für $newsr Array lauten.
So - er gibt aber einfach nichts mehr aus Traurig ..."
- welche Codes brauchst du alle? _________________ Mit freundlichen Grüßen
BiBaButzemann
|
|
| Nach oben |
|
 |
TNDAriakas Beliebter [User]


Anmeldung: 30.07.07 Beiträge: 277 Wohnort: Bremen
|
Verfasst am: 09.09.2007, 13:12 Titel: |
|
|
naja den der relevant ist für die seite
Ich schick dir mal per PN meine ICQ nummer... _________________ So long...Ari
Error! Reality.sys is corrupt. Smash head on keyboard to restart universe.
Google ist dein Freund
|
|
| Nach oben |
|
 |
|
|