+ Antworten
Ergebnis 1 bis 3 von 3

Thema: SQL-Abfrage im Modul

  1. #1
    War schon öfter hier
    Registriert seit
    02.01.2005
    Beiträge
    205
    Bedankte sich
    27
    1 Danksagung in 1 Beitrag

    Standard SQL-Abfrage im Modul

    Hallo,
    ich sitze nun an meinem ersten Modul, was aus einer Datenbank Werte auslesen und anzeigen soll.

    Dafür habe ich mich an die Anleitung openbook.galileocomputing.de gehalten und so sind folgende Dateien enstanden:

    Für die Anzeige "default.php"
    PHP-Code:
     <?php 
      defined
    '_JEXEC' ) or die( 'Restricted Access' ); 
      
    ?> 
      <font> 
      Hallo <?php echo $username?>!
      Geld: <?php echo $db_geld?>
      </font>
    Für die Vermittlung zwischen Anzeige und Berechnung "mod_api.php":
    PHP-Code:
    <?php 
      defined
    '_JEXEC' ) or die( 'Restricted Access' ); 
      require_once(
    dirname(__FILE__).DS.'helper.php');  
      
    $username ModAPIHelper::getUserName(); 
      
    $db_geld ModAPIHelper::getGeld();
      require_once(
    JModuleHelper::getLayoutPath('mod_api')); 
      
    ?>
    Und zuletzt die Berechnungsdatei selber "helper.php":
    PHP-Code:
    <?php 
      defined
    '_JEXEC' ) or die( 'Restricted Access' ); 
      class 
    ModAPIHelper 
         
        public function 
    getUserName() { 
           
    $user =& JFactory::getUser(); 
           if (
    $user->id == 0) { 
              return 
    "Besucher"
           } else { 
              return 
    $user->username
           } 
        }
        
         public function 
    getGeld() { 
           
    $user =& JFactory::getUser();
           
    $usr_id $user->get('id');
      
           
    $query "SELECT Wert FROM #__game_geld 
                           WHERE idUser = $usr_id"

           
    $db_geld->setQuery($query); 
           
           if ( !
    $db_geld->query() ) { 
               return 
    "Login now"
            } else { 
          
           return 
    $db_geld
        } 
     } 
    ?>
    Bisher klappte die Anzeige des Usernamens super. Jetzt habe ich versucht eine Abfrage zum Geld des User einzubauen. Im Moment erscheint nur eine weiße Seite und nichts weiter.

    Die DB ist eine normale Joomla-DB und ich habe eine neue Tabelle "jos_game_geld" hinzugefügt mit den Spalten:
    idgeld (int)
    idUser (int)
    Wert (int)

    Die Tabelle ist mit einem Datensatz gefüllt.

    Ich glaube, dass der Hase in der Abfrage begraben liegt... Weiß jemand Rat?

    LG.
    digitalspecht
    Schaun wa mal, dann sehn wa mal!

  2. #2
    War schon öfter hier
    Registriert seit
    02.01.2005
    Beiträge
    205
    Bedankte sich
    27
    1 Danksagung in 1 Beitrag

    Standard

    Also ich habe Dank der Hilfe von Matrikular ein bisschen dran gewerkelt. Die helper.php sieht nun so aus, funktioniert jedoch immer noch nicht:
    PHP-Code:
    <?php 
      defined
    '_JEXEC' ) or die( 'Restricted Access' ); 
      class 
    ModAPIHelper 
         
        public function 
    getUserName() { 
           
    $user JFactory::getUser(); 
           if ( 
    $user->get'guest' ) ) { 
              return 
    "Besucher"
           } else { 
              return 
    $user->get'username' );
           } 
        }
        
        public function 
    getGeld() { 
            
    $user JFactory::getUser();
            
    $usr_id $user->get('id');
            
    $db JFactory::getDBO();
            
    $query "SELECT Wert FROM #__game_geld 
                           WHERE idUser = '$usr_id'"
    ;
             
    $db->setQuery$query );

            
            if ( 
    $db->getErrorNum() ) {
        
                    echo 
    $db->stderr();
                 return 
    false;
            }

            return 
    $db_geld;
          }
      } 
    ?>
    Schaun wa mal, dann sehn wa mal!

  3. #3
    Hat hier eine Zweitwohnung
    Registriert seit
    14.01.2006
    Ort
    Nienburg
    Alter
    32
    Beiträge
    1.237
    Bedankte sich
    115
    Erhielt 471 Danksagungen
    in 368 Beiträgen

    Standard

    zum einen wird '$usr_id' im query string wahrscheinlich garnicht aufgeloest.

    weiterhin hast du das beispiel fast 1:1 uebernommen, kann so nicht klappen.

    Wert ist das was du abfragen willst, gibt es in deiner tabelle #__game_geld das feld Wert ? wie sieht die tabelle generell aus, welche felder stehen zur verfuegung ?

    nach der abfrage ob ein datenbank fehler aufgetaucht ist, schreibst du return $db_geld; da steht aber nichts drin, denn der variable wurden noch keine werte bzw. kein wert zugewiesen.

    ich hatte dir dazu den hinweis zum wiki gegeben, wo es um generelle abfragen von datenbanken geht.

    http://wiki.joomla-nafu.de/joomla-do...Factory/getDBO

    ansatzweise koennte es so aussehen:
    PHP-Code:
    //
    $user JFactory::getUser();

    //
    $db JFactory::getDBO();

    //
    $query =  ' SELECT WASWILLICH FROM #__NAMEDERTABELLE '
             
    .' WHERE idUser = '.(int)$user->get'id' );

    //
    $db->setQuery$query );

    //
    $db_geld $db->getObjectList(); // oder $db->getResult(); oder, oder, oder

    if ( $db->getErrorNum() ) {

        
    /**
         *  Error handling
        **/
        
    }

    //
    return $db_geld
    das ist nur ein ansatz, es macht beispielsweise nicht viel sinn, oder ... ist unnoetig in beiden methoden zu schauen ob der user angemeldet ist, das koennte einmal generell gemacht werden, um dann vor der datenbankabfrage zu schauen ob es einen user gibt, wenn nicht, brauch die datenbankabfrage auch nicht ausgefuehrt werden und man setzt $db_geld gleich auf leer oder null, oder was auch immer drin stehen soll => muss also garnicht in einen helper springen.

    wie du auf $db_geld dann zugreifst bzw den inhalt ausgibst haengst davon ab ob du getResult(); getObject(), getObjectList(); usw. gewaehlt hast.

    erneut, uebernimm das bitte nicht 1:1 sondern setze deine werte / namen ein und schau in die verschiedenen tutorials.

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein