[PHP] object füllen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Atkaz, 29. Mai 2011 .

Schlagworte:
  1. 29. Mai 2011
    object füllen

    Hallo Leute,

    ich habe ein folgenden Problem.

    Es geht darum, dass ich eine Funktion habe, die Daten aus der DB ausließt und diese dann mit return ausgibt. Die Funktion sieht wie folgt aus:
    PHP:
         public function  get_mail_list () 
        {
            
    $user_id  mysql_real_escape_string ( $_SESSION [ 'user' ][ 'ID' ]);
            
    $result = '' ;
            
                  
    // Laden des Maileingangs
            
    $eingang  mysql_query ( "SELECT * FROM Mail__Eingang
                             WHERE Empfaenger = '
    $user_id
                         GROUP BY Referer 
                         ORDER BY Datum"
    );
            
    // while 
            
             
    while( $row = mysql_fetch_object ( $eingang ) )
            {
                
    $result .= $row ;  
            }
             return 
    $result ;
        }
    dieser wird dann wie folgt ausgelesen:

    PHP:
                for( $i = 0 ; $i < count ( $mail_list ); $i ++) 
          {
                                
            echo 
    '<tr>
                <td><input type="checkbox" name="mid" value="'
    . $mail_list -> ID . '"></td>
                 <td>Logo</td>
                                     <td>'
    . $mail_list -> Absender_Name . '</td>
            <td>'
                                            
    . $mail_list -> Betreff . '<br/>'
                                            
    . substr ( $mail_list -> Mail , 0 , 150 ). '</td>
                                        <td>'
    . $mail_list -> Datum . '</td>
                                        
         </tr>'
    ;
                                    
        }

    Leider geht klappt das ganze nicht, so dass ich eine Fehlermeldung bekomme:
    "Object of class stdClass could not be converted to string"

    Ich habe schon antstatt von fetch_object fetch_assoc() verscht, leider besteh tdabei das Problem, dass ich nicht auf die Einzelnen keys (z.. array['Absender_Name']) zugreifen kann.

    Würde micht freuen, wenn ihr einen Tipp bzw. einen alternativen Lösungsweg hättet.


    vG
    atkaz
     
  2. 29. Mai 2011
    AW: object füllen

    Du versuchst mit der Zeile hier:
    PHP:
              while( $row = mysql_fetch_object ( $eingang ) )
            {
                
    $result .= $row ;  
            } 
    Das Objekt $row in den String $result zu schreiben..
    Du kannst nicht einfach die Daten immer anhängen...

    Wenn dann musst du ein Array aus Objects machen...
    PHP:
              while( $row = mysql_fetch_object ( $eingang ) )
            {
                
    $result [] =  $row ;  
            } 
    Dann sollte der Rest deines Codes auch funktionieren!

    MfG
     
  3. 29. Mai 2011
    AW: object füllen

    funktioniert wunderbar, danke dir.

    Hab die den code noch wie folgt ergänzt:

    PHP:
         for( $i = 0 ; $i  < count ( $mail_list ); $i ++) 
        {
                                
            echo 
    '<tr>
                <td><input type="checkbox" name="mid" value="'
    . $mail_list [ $i ]-> ID . '"></td>
                <td>Logo</td>
                                <td>'
    . $mail_list [ $i ]-> Absender_Name . '</td>
                <td>'
                                            
    . $mail_list [ $i ]-> Betreff . '<br/>'
                                            
    . substr ( $mail_list [ $i ]-> Mail , 0 , 150 ). '</td>
                                        <td>'
    . $mail_list [ $i ]-> Datum . '</td>
                                        
              </tr>'
    ;
                                    
        }
     
  4. 30. Mai 2011
    AW: object füllen

    warum läßt du zwei schleifen durchlaufen?
    1. für dein result
    2. result wieder ausgeben

    mach doch eine
    PHP:
    public function  get_mail_list () 
    {
        
    $user_id  mysql_real_escape_string ( $_SESSION [ 'user' ][ 'ID' ]);
        
         
    // Laden des Maileingangs
        
    $eingang  mysql_query ( "SELECT * FROM Mail__Eingang
                         WHERE Empfaenger = '
    $user_id
                     GROUP BY Referer 
                     ORDER BY Datum"
    );
        
    // ggf noch prüfen
        
    return  $eingang ;
    }  

    $result  get_mail_list ();

    while(
    $row = mysql_fetch_object ( $result ) )
    {
        
    print_r $row ;

     
  5. 31. Mai 2011
    AW: object füllen

    zwei sachen die mich stören:

    1. wo ist der mysql-handle?
    -> auch wenn man diesen für eine einzige verbindung nicht angeben muss ist es dennoch empfehlenswert.

    2. warum mysql_ ?
    -> mit pdo hast du eine methode namens "fetchAll" mit der du direkt alle datensätze in einem array ablegen kannst.

    PHP:
    <? php

    $pdoh 
    = new  PDO (...); 

    $stmt  $pdoh -> prepare ( '
        SELECT * FROM Mail__Eingang
        WHERE Empfaenger = :user_id
        GROUP BY Referer 
        ORDER BY Datum'
    );

    $stmt -> bindParam ( ':user_id' $user_id PDO :: PARAM_INT );
    $stmt -> execute ();

    // datensätze
    $data  $stmt -> fetchAll ( PDO :: FETCH_OBJ );
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.