Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenbank Ausgabe geht nicht..

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datenbank Ausgabe geht nicht..

    Hey

    ich habe ein Problem wenn ich Daten aus meiner Datenbank auslesen will.

    Ich greife mit diesem Code:

    PHP-Code:
    echo $event->findEvents($user->data()->id'userid'); 
    auf die Funktion:

    PHP-Code:
    public function findEvents($field$userid) {

            
    // Holt Daten aus Datenbank
            
    $data $this->_db->get('events', array($userid'='$field));

            
    //Überprüft ob etwas gefunden wurde
            
    if($data->count()) {
                
                echo 
    "heyhoo";    
                
            }else {
                return 
    false;
            }
        } 
    zu. Diese Funktion verwendet:

    PHP-Code:
            public function get($table$where) {
                return 
    $this->action('SELECT *'$table$where);
                
            } 
    und:

    PHP-Code:
             public function action($action$table$where = array()) {
                if(
    count($where) === 3) {
                    
    $operators = array('=''>''<''>=''<=');
                    
                    
    $field         $where[0]; 
                    
    $operator     $where[1];
                    
    $value         $where[2];

                    if(
    in_array($operator$operators)) {
                        
    $sql "{$action} FROM {$table} WHERE {$field} {$operator} ?";

                        if(!
    $this->query($sql, array($value))->error()) {
                             return 
    $this;
                        }
                    }
                }
                return 
    false;
            } 
    und

    PHP-Code:
            public function query($sql$params = array()) {
                
    $this->_error false;
                if(
    $this->_query $this->_pdo->prepare($sql)){
                    
    $x 1;
                    if(
    count($params)) {
                        foreach(
    $params as $param) {
                            
    $this->_query->bindvalue($x$param);
                            
    $x++;
                        }
                    }


                    if(
    $this->_query->execute()) {
                        
    $this->_results $this->_query->fetchAll(PDO::FETCH_OBJ);
                        
    $this->_count $this->_query->rowCount();
                    }else {
                        
    $this->_error true;
                    }
                }
                return 
    $this;
            } 
    .

    Da diese:

    PHP-Code:
            if($data->count()) {
                
                echo 
    "heyhoo";    
                
            }else {
                return 
    false;
            } 
    Abfrage ja zurückgibt das Einträge vorhanden sind funktioniert bis dahin ja alles. Doch wenn ich dann $data ausgeben will kommt ein Error
    Catchable fatal error: Object of class DB could not be converted to string in

    Jedoch weis ich jetzt nicht genau wie ich das beheben kann habs auch schon unendliche male versucht.

    Ich hoffe ich habe mein Problem genau genug beschrieben

    Mfg Snope.

    p.s: Das Script ist bis auf meine Fehl function von phpacademy


  • #2
    Nunja, wenn $data ein Objekt ist kannst du es eben nicht ohne weiteres auf dem Bildschirm ausgeben.

    Zwei Möglichkeiten:
    1. Du benutzt var_dump($data). Dann bekommst du den Namen der Klasse + die Objektvariablen + deren Werte angzeigt.
    2. Du implementierst __toString() in deiner Klasse und legs selber fest wie die String-Repräsentation deiner Klasse aussieht.

    Kommentar


    • #3
      Danke schonmal Jetzt muss ich nurnoch anders darauf zugreifen können^^

      Müsste ich jetzt dann eigentlich nicht mit:

      PHP-Code:
      $this->_data $data->first();
                  return 
      true
      PHP-Code:
          public function data() {
              return 
      $this->_data;
          } 
      PHP-Code:
              public function first() {
                   return 
      $this->results()[0];
                 } 
      Auf die Daten so zugreifen können: $event->data()->eventname; ??

      Oder fehlt da was?

      Kommentar


      • #4
        Ich bin nicht ganz sicher was du meinst, da dein Code so zerstückelt ist. Vor allem weiß ich nicht was der 3. Block mit first() damit zu tun hat.
        Aber ja, ansonsten funktioniert der Zugriff so. Der Array-Zugriff wie du ihn bei first() versuchst, funktioniert aber erst seit PHP 5.4.

        Kommentar


        • #5
          Der komplette Code:

          PHP-Code:
          <?php
          class Event {
              private 
          $_db,
                      
          $_data;

              public function 
          __construct() {
                  
          $this->_db DB::getInstance();
              }

              public function 
          update($fields = array(), $id null) {
                  if(!
          $this->_db->update('events'$id$fields)) {
                      throw new 
          Exception("There was a problem updating.");
                  }
              }

              public function 
          create($fields = array()) {
                  if(!
          $this->_db->insert('events'$fields)) {
                      throw new 
          Exception('There was a problem creating an account');
                  }
              }

              public function 
          find($event null) {
                  
                      
          $field = (is_numeric($event)) ? 'id' 'eventname';
                      
          $data $this->_db->get('events', array($field'='$event));

                      if(
          $data->count()) {
                          
          $this->_data $data->first();
                          return 
          true;
                      }

                  return 
          false;
              }

              public function 
          data() { 
                  return 
          $this->_data;
              }


              public function 
          findEvents($field$userid) {

                  
          // Holt Daten aus Datenbank
                  
          $data $this->_db->get('events', array($userid'='$field));

                  
          //Überprüft ob etwas gefunden wurde
                  
          if($data->count()) {
                      
                      
          $this->_data $data->first();
                      return 
          true;
                      
                  }else {
                      return 
          false;
                  }
              }
          }
          ?>
          Und dann halt noch die first() function in der DB Class:
          PHP-Code:
                  public function first() {
                       return 
          $this->results()[0];
                     } 
          Wenn ich jetzt dies schreibe:

          PHP-Code:
          $event->data()->eventname
          Kommt dieser Error:

          Notice: Undefined property: stdClass::$eventname in C:\xampp\htdocs\mobile\desktop\admin.php on line 39

          --Mir fällt gerade auf das ich noch sehr vieel lernen muss um mal selbständig was fertig zu bekommen

          Kommentar


          • #6
            Ich weiß nicht was $event->data() für ein Objekt zurückgeben sollte, aber offensichtlich gibt es die Eigenschaft "eventname", auf die du zugreifen willst, eben nicht. Lass dir mal mit var_dump($event->data) ausgeben was da tatsächlich drinsteckt.

            Kommentar


            • #7
              Bei var_dump($event->data); bekomme ich einen error ich glaube du mienst var_dump($event->data());

              Da bekomme ich die daten in einem Array herraus:

              object(stdClass)#5 ( { ["eventid"]=> string(1) "1" ["userid"]=> string(1) "1" ["name"]=> string(12) "asdasdasdads" ["city"]=> string(14) "asdasdasdsdasd" ["street"]=> string(15) "asdasdasdasdasd" ["description"]=> string(0) "" ["date"]=> string( "0000-00-" ["time"]=> string( "08:00:00" }

              Kommentar


              • #8
                Ja, meinte ich in der Tat, ich habe offensichtlich auf die Klammern vergessen.

                Naja, an der Ausgabe siehst du das Problem ja schon, oder? Es gibt keine Eigenschaft "eventname". Entweder meinst du "name" oder du hast einen Fehler dort wo dieses Objekt erzeugt wird (z.B. du wählst beim SELECT nicht die richtigen Spalten).

                Kommentar


                • #9
                  Ach scheiße^^. Ich sollte vll. immer die selben Namen verteilen

                  Mal ne Frage was schlauer wäre:

                  Wenn ich jetzt mit einer Schleife mehrere "Events" auslesen will wäre es schlauer dafür eine neue function zu machen oder in die bereits vorhandene einzubauen?

                  Kommentar

                  Lädt...
                  X