php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 10-02-2009, 08:45
Dani Düsentrieb
 Newbie
Links : Onlinestatus : Dani Düsentrieb ist offline
Registriert seit: Jun 2006
Beiträge: 32
Dani Düsentrieb ist zur Zeit noch ein unbeschriebenes Blatt
Standard Existenz von Objekten

Hallo Leute

ich versuche mich gerade mit PHP-Objekten. Folgenes Szenario: Ich habe 3 Dateien index.php, config.php, und regform.php. In der config.php gibts ne Klasse content und in der Klasse content gibts ne public function query mit der ne MySQL Datenbank abgefragt wird. In der index includiere ich die config.php.Mit $cont = new content wird in der index.php ein neues Objekt erstellt. Danach includiere ich die regform.php in die index.php und möchte da die function query aufrufen $cont ->query("SELECT * FROM test WHERE name = \"Daniel\"");.
Das klappt aber nicht denn folgender Fehler kommt: Fatal error: Call to a member function query() on a non-object in D:\regform.php on line 16. Daraus entnehme ich das es das Objekt $cont was in der index.php angelegt wurde in der regform nach dem include nicht mehr gibt. Wenn ich in der regform.php das Qbjekt neu anlegen will geht das aber auch nicht denn Fatal error: Cannot redeclare class content in D:\config.php on line 2. Selbst wenn ich einen anderen Namen verwende passiert das gleiche.
Wie muss ich die Klasse gestalten beziehungsweise das Objekt erstellen damit ich dieses in jeder anderen includierten Datei verwenden kann?
Mit Zitat antworten
  #2 (permalink)  
Alt 10-02-2009, 09:11
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Vielleicht zeigst du lieber mal den echten Quelltext her statt versuchen zu zitieren und dabei Quatsch zu erzählen. Und vorweg: Nimm HTML-Gedrisse direkt raus.
Mit Zitat antworten
  #3 (permalink)  
Alt 10-02-2009, 09:11
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

http://php.net/is_object
http://php.net/method_exists
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #4 (permalink)  
Alt 10-02-2009, 10:03
php_fussel
 Newbie
Links : Onlinestatus : php_fussel ist offline
Registriert seit: Jan 2009
Beiträge: 120
php_fussel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
$cont = new content 
... so erzeugst Du ein Objekt? Glaub ich nicht!
Ich weiss nicht wie Deine Klasse aufgebaut ist,
aber es sollte mindestens so ...

PHP-Code:
$cont = new content(); 
... aussehen!
Erwartet das Objekt keine Parameter?
Wie unset schon sagte, ohne Quellcode wirds schwierig!

Gruß phpfussel
Mit Zitat antworten
  #5 (permalink)  
Alt 10-02-2009, 10:53
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Die Variable wird in deiner regform.php sicher nicht gefunden, weil du das Objekt in einer Funktion erzeugst oder in einer Funktion nach der globalen Variablen suchst. Aber zeig doch mal einfach ein bissl Code her.

@php_fussel: Das ist natürlich Grütze, beide Aufrufe sind gültig und führen an das gleiche Ziel.
Mit Zitat antworten
  #6 (permalink)  
Alt 10-02-2009, 11:14
Dani Düsentrieb
 Newbie
Links : Onlinestatus : Dani Düsentrieb ist offline
Registriert seit: Jun 2006
Beiträge: 32
Dani Düsentrieb ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So also hier der Quelltext der config.php:
PHP-Code:
class content{
  private 
$connection NULL;
  private 
$result NULL;

  public function 
connect() {
        
$host "localhost";
        
$db "test";
        
$user "sel";
        
$passw "****";
        
    
$this->connection mysql_connect ("$host""$user""$passw");
        
        if(
$this->connection != false){
            
mysql_select_db("$db"$this->connection);
        }else{
            exit;
        }
  }
 
  public function 
disconnect() {
    if (
is_resource($this->connection)) {
      
mysql_close($this->connection);
    }
  }
 
  public function 
query($query,$quest) {
        
$this->connect();
    if (
is_resource($this->connection)) {
      if (
is_resource($this->result)) {
        
mysql_free_result($this->result);
      }

      
$this -> result mysql_query($query,$this->connection);
            echo 
mysql_error();
            switch(
$quest){
                case 
"assoc":
                    if (
is_resource($this->result)) {
                        if (
mysql_num_rows($this->result) > 1){
                            
$count 1;
                            while(
$row mysql_fetch_assoc($this->result)){
                                
$ergrow[$count] = $row;
                                
$count++;
                            }
                            return 
$ergrow;
                        }else{
                            
$row mysql_fetch_assoc($this->result);
                            if (
is_array($row)) {
                                return 
$row;
                            } else {
                                return 
FALSE;
                            }
                        }
                    }
                break;
                
                case 
"num_rows":
                    if (
is_resource($this->result)) {
                        
$row mysql_num_rows($this->result);
                        return 
$row;
                    }
                break;
            }
    }
        
$this -> disconnect();
  } 
In der index.php die fürs Layout zuständig ist stehen in den ersten Zeilen nur:
PHP-Code:
<?php
    
include "texte/config.php";
    
$cont = new content;
?>
Dann kommt HTML.
Da wo der Inhalt der SQL DB rein soll steht:
PHP-Code:
$text $cont->query("SELECT * FROM `test` WHERE name=\"Daniel\"","assoc");
echo 
$text["text"];
include 
"texte/regform.php"
So der Inhalt der regform.php ist noch nicht großartig ausgeprägt aber es soll in der DB überprüft werden ob ein best. Name vorhanden ist.
PHP-Code:
        $usrindb $cont->query("SELECT user FROM `test` WHERE `user`=\"".$_POST["user"]."\"","num_rows");
        if (
strlen(trim($_POST["user"])) < 3  || $usrindb 0){
            
$fehlerfrei FALSE;
            
$fehleruser TRUE;

Das Scriopt läuft bis zur Stelle der Userabfrage aus der DB. Da kommt dann die Fehlermeldung!
Mit Zitat antworten
  #7 (permalink)  
Alt 10-02-2009, 13:28
php_fussel
 Newbie
Links : Onlinestatus : php_fussel ist offline
Registriert seit: Jan 2009
Beiträge: 120
php_fussel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@PHP-Desaster: Du hast natürlich Recht ... mir ging es mehr um das ';' .. egal!

Vorher kennt die 'regform.php' Deine query-Funktion/Methode? Die index.php kennt die Funktion, da die config.php includiert wurde, somit kann in der index.php auch ein Objekt der Klasse erzeugt werden, die diese Methode beinhaltet. Wenn die 'regform.php' in die index.php includiert wird, dann kennt die index.php auch dessen Inhalt, aber woher kennt die 'regform.php' die Objekt-Variable $cont sowie die damit verbundene Funktion query ... ?
Du rufst in der regform.php ein Objekt auf, das die regform.php gar nicht aufrufen kann, da sie die Klasse nicht kennt ... oder bin ich jetzt aufm Holzweg?

Geändert von php_fussel (10-02-2009 um 13:31 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 10-02-2009, 13:31
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von php_fussel
... oder bin ich jetzt aufm Holzweg?
Ja, bist du vermutlich.

Einbindung von Scriptcode per include/require ist im Normalfall nichts weiter als Copy&Paste - so, als haettest du den Code gleich selber an der entsprechenden Stelle untergebracht.
Was den Gueltigkeitsbereich von Variablen angeht, gelten da also keine "Sonderregeln".
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:29 Uhr.