Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 显示对象属性的更好迭代_Php_Object_Foreach - Fatal编程技术网

Php 显示对象属性的更好迭代

Php 显示对象属性的更好迭代,php,object,foreach,Php,Object,Foreach,我正在寻找一种更好的方法来迭代对象并显示其内容 表单控制器: public function run(){ $tabteachers=''; if(!empty($_SESSION['apply']) && !empty($_SESSION['application'])){ $tabteachers = DB::getInstance()->select_teacher_id($_SESSION['login']);

我正在寻找一种更好的方法来迭代对象并显示其内容
表单控制器:

public function run(){ $tabteachers=''; if(!empty($_SESSION['apply']) && !empty($_SESSION['application'])){ $tabteachers = DB::getInstance()->select_teacher_id($_SESSION['login']); } require_once(VIEW_PATH.'formdeux.php'); } public function select_teacher_id($login){ $query = 'SELECT * FROM teachers,internships,students WHERE teachers.email_teacher = internships.email_responsible_internship AND students.registry_number_student = internships.registry_student_internship AND internships.registry_student_internship = '. $this->_db->quote ( $login ); $result = $this->_db->query ( $query ); if ($result->rowcount () != 0) { while ( $row = $result->fetch () ) { $teacher[]= new teacher ( $row->email_teacher,$row->firstname_teacher,$row->lastname_teacher,$row->responsible_internship_teacher,NULL); } return $teacher; } }
    <table>
        <thead>
            <tr>
                <th width="20%" class="decoration">contact</th>
            </tr>
        </thead>
            <tbody>
            <?php foreach ($tabteachers as $teacher) { ?>
                <tr>
                    <td>Lastname: <td>
                    <input type="text" name="lastnamepro" value="<?php echo $teacher->lastname_teacher() ?>" size="100px">
                </tr>
                <tr>
                    <td>Firstname: <td>
                    <input type="text" name="firstnamepro" value="<?php echo $teacher->firstname_teacher() ?>" size="100px">
                </tr>
                <tr>
                    <td>Email address: <td>
                    <input type="text" name="emailpro" value="<?php echo $teacher->email_teacher() ?>" size="100px">
                </tr>
                <tr>
                    <td>Service: <td>
                    <input type="text" name="servicepro" value="null" size="100px">
                </tr>
                <tr>
                    <td>mobile number: <td>
                    <input type="text" name="phonenumberpro" value="aucun numero" size="100px">
                </tr>
            <?php } ?>
            </tbody>
    </table><br>
private static $instance = null; private $_db; private function __construct() { try { $this->_db = new PDO ('mysql:host=localhost;dbname=ProjectWeb;charset=utf8', 'root', '' ); $this->_db->setAttribute ( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $this->_db->setAttribute ( PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ ); } catch ( PDOException $e ) { die ( 'Erreur de connexion à la base de donnée : ' . $e->getMessage () ); } } // Pattern Singleton public static function getInstance() { if (is_null ( self::$instance )) { self::$instance = new Db (); } return self::$instance; } 公共功能运行(){ $tabteachers=''; 如果(!empty($_会话['apply'])和&!empty($_会话['application'])){ $tabteachers=DB::getInstance()->选择_teacher_id($_SESSION['login']); } 需要一次(查看路径'formdeux.php'); } Db.class函数():

public function run(){ $tabteachers=''; if(!empty($_SESSION['apply']) && !empty($_SESSION['application'])){ $tabteachers = DB::getInstance()->select_teacher_id($_SESSION['login']); } require_once(VIEW_PATH.'formdeux.php'); } public function select_teacher_id($login){ $query = 'SELECT * FROM teachers,internships,students WHERE teachers.email_teacher = internships.email_responsible_internship AND students.registry_number_student = internships.registry_student_internship AND internships.registry_student_internship = '. $this->_db->quote ( $login ); $result = $this->_db->query ( $query ); if ($result->rowcount () != 0) { while ( $row = $result->fetch () ) { $teacher[]= new teacher ( $row->email_teacher,$row->firstname_teacher,$row->lastname_teacher,$row->responsible_internship_teacher,NULL); } return $teacher; } }
    <table>
        <thead>
            <tr>
                <th width="20%" class="decoration">contact</th>
            </tr>
        </thead>
            <tbody>
            <?php foreach ($tabteachers as $teacher) { ?>
                <tr>
                    <td>Lastname: <td>
                    <input type="text" name="lastnamepro" value="<?php echo $teacher->lastname_teacher() ?>" size="100px">
                </tr>
                <tr>
                    <td>Firstname: <td>
                    <input type="text" name="firstnamepro" value="<?php echo $teacher->firstname_teacher() ?>" size="100px">
                </tr>
                <tr>
                    <td>Email address: <td>
                    <input type="text" name="emailpro" value="<?php echo $teacher->email_teacher() ?>" size="100px">
                </tr>
                <tr>
                    <td>Service: <td>
                    <input type="text" name="servicepro" value="null" size="100px">
                </tr>
                <tr>
                    <td>mobile number: <td>
                    <input type="text" name="phonenumberpro" value="aucun numero" size="100px">
                </tr>
            <?php } ?>
            </tbody>
    </table><br>
private static $instance = null; private $_db; private function __construct() { try { $this->_db = new PDO ('mysql:host=localhost;dbname=ProjectWeb;charset=utf8', 'root', '' ); $this->_db->setAttribute ( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $this->_db->setAttribute ( PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ ); } catch ( PDOException $e ) { die ( 'Erreur de connexion à la base de donnée : ' . $e->getMessage () ); } } // Pattern Singleton public static function getInstance() { if (is_null ( self::$instance )) { self::$instance = new Db (); } return self::$instance; } 公共函数选择教师id($login){ $query='从教师、实习、学生中选择*,其中teachers.email\u teacher=internips.email\u responsible\u internival和student.registry\u number\u student=internips.registry\u student\u internival='。$this->\u db->quote($login); $result=$this->\u db->query($query); 如果($result->rowcount()!=0){ 而($row=$result->fetch()){ $teacher[]=新教师($row->email\u teacher,$row->firstname\u teacher,$row->lastname\u teacher,$row->responsible\u实习教师,空); } 返回$teacher; } } 表单视图:

public function run(){ $tabteachers=''; if(!empty($_SESSION['apply']) && !empty($_SESSION['application'])){ $tabteachers = DB::getInstance()->select_teacher_id($_SESSION['login']); } require_once(VIEW_PATH.'formdeux.php'); } public function select_teacher_id($login){ $query = 'SELECT * FROM teachers,internships,students WHERE teachers.email_teacher = internships.email_responsible_internship AND students.registry_number_student = internships.registry_student_internship AND internships.registry_student_internship = '. $this->_db->quote ( $login ); $result = $this->_db->query ( $query ); if ($result->rowcount () != 0) { while ( $row = $result->fetch () ) { $teacher[]= new teacher ( $row->email_teacher,$row->firstname_teacher,$row->lastname_teacher,$row->responsible_internship_teacher,NULL); } return $teacher; } }
    <table>
        <thead>
            <tr>
                <th width="20%" class="decoration">contact</th>
            </tr>
        </thead>
            <tbody>
            <?php foreach ($tabteachers as $teacher) { ?>
                <tr>
                    <td>Lastname: <td>
                    <input type="text" name="lastnamepro" value="<?php echo $teacher->lastname_teacher() ?>" size="100px">
                </tr>
                <tr>
                    <td>Firstname: <td>
                    <input type="text" name="firstnamepro" value="<?php echo $teacher->firstname_teacher() ?>" size="100px">
                </tr>
                <tr>
                    <td>Email address: <td>
                    <input type="text" name="emailpro" value="<?php echo $teacher->email_teacher() ?>" size="100px">
                </tr>
                <tr>
                    <td>Service: <td>
                    <input type="text" name="servicepro" value="null" size="100px">
                </tr>
                <tr>
                    <td>mobile number: <td>
                    <input type="text" name="phonenumberpro" value="aucun numero" size="100px">
                </tr>
            <?php } ?>
            </tbody>
    </table><br>
private static $instance = null; private $_db; private function __construct() { try { $this->_db = new PDO ('mysql:host=localhost;dbname=ProjectWeb;charset=utf8', 'root', '' ); $this->_db->setAttribute ( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $this->_db->setAttribute ( PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ ); } catch ( PDOException $e ) { die ( 'Erreur de connexion à la base de donnée : ' . $e->getMessage () ); } } // Pattern Singleton public static function getInstance() { if (is_null ( self::$instance )) { self::$instance = new Db (); } return self::$instance; }

接触
姓氏:

我看到您已经将默认的fetch模式设置为fetch_OBJ,在这种特殊情况下,尽管我认为您可以使用PDO的fetchAll方法将整个结果集作为数组获取,然后对其进行迭代

 public function select_teacher_id($login){
   $query = 'SELECT * FROM teachers,internships,students WHERE
   teachers.email_teacher = internships.email_responsible_internship
  AND students.registry_number_student = internships.registry_student_internship
  AND internships.registry_student_internship = '. $this->_db->quote ( $login );


   $result = $this->_db->query ( $query );
       if ($result->rowcount () != 0) {
         //fetch the entire result set as a multi-dimensional assoc array
         $teachers_result = $result->fetchAll(PDO::FETCH_ASSOC); 
         return $teachers_result;
       }
 }
//看法

<table>
    <thead>
        <tr>
            <th width="20%" class="decoration">contact</th>
        </tr>
    </thead>
        <tbody>
        <?php foreach ($tabteachers as $teacher) { ?>
            <tr>
                <td>Lastname: <td>
                <input type="text" name="lastnamepro" value="<?php echo $teacher['lastname_teacher'] ?>" size="100px">
            </tr>
            <tr>
                <td>Firstname: <td>
                <input type="text" name="firstnamepro" value="<?php echo $teacher['firstname_teacher'] ?>" size="100px">
            </tr>
            <tr>
                <td>Email address: <td>
                <input type="text" name="emailpro" value="<?php echo $teacher['email_teacher'] ?>" size="100px">
            </tr>
            <tr>
                <td>Service: <td>
                <input type="text" name="servicepro" value="null" size="100px">
            </tr>
            <tr>
                <td>mobile number: <td>
                <input type="text" name="phonenumberpro" value="aucun numero" size="100px">
            </tr>
        <?php } ?>
        </tbody>
</table><br>

接触
姓氏:

有人能帮我吗?目前的设置有什么问题?您是否面临任何错误?或者你想优化它?@Vincent我收到一个错误,警告:为foreach()提供的参数无效。它来自我实现的foreach。好的,你在Db类中使用PDO包装器吗?请查看下面的答案,如果你仍然看到foreach的参数无效错误,请在你的控制器中检查方法是否选择了\u teacher\u id()返回任何数据,使用print_r()或var_dump()进行调试如果您是对的,则select_teacher_id()函数在使用var_dump进行测试时返回null。我已经意识到,出于某种原因,$\u会话['login']没有按应有的方式保存登录id。另一方面,您显示元素的方式非常好。您可以这样做,或者如果您希望像前面一样将其作为对象,您可以传递PDO::FETCH_OBJ标志,而不是FETCH_ASSOC,并在视图中相应地调用属性,即使这样也可以..完成一些测试后,我可以确认我的$_会话['login']为空,你说得对。但是我不明白为什么我给$\u SESSION[]的值不再存在了。我使用$u POST表保存了一个用户名。谢谢你的帮助,我真的很感激!