#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 + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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>' ; } + Multi-Zitat Zitieren
#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 ;} + Multi-Zitat Zitieren
#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 ); + Multi-Zitat Zitieren