• User

    Problema CodeIgniter e database Mysql

    Buon pomeriggio,
    come da titolo, ho un problema con l'estrazione e visualizzazione dei dati e il framework menzionato, sto facendo delle prove per imaparare CodeIngiter. Ho 2 tabelle, una "utenti" con i campi id, user e password, e tabella l'altra "menu" con i campi id e nav, che non sono relazionate tra loro, per il momento le voglio indipendenti una dall'altra.
    Ho creato i metodi per il controller ed il model per l'estrazione dei dati dentro le 2 tabelle dentro una pagina view. I dati vengono visualizzati, ma a video vengono stampati anche deli errori. Posto il codice PHP per farvi capire meglio dove sbaglio.
    Se potete aiutarmi a risolvere i seguenti errori, grazie in anticipo.

    core.php nel controller:
    [PHP]
    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

    class Core extends CI_Controller
    {
    public function index()
    {
    $this->home();
    $this->menu();
    }

    public function home()
    {
        $this->load->model('getdb');
        $data['user'] = $this->getdb->dati();
        $this->load->view('utenti',$data);
    }
    
    public function menu()
    {
        $this->load->model('menudb');
        $datas['navbar'] = $this->menudb->datis();
        $this->load->view('utenti',$datas);
    }
    

    }
    [/PHP]

    getdb.php nel model:
    [PHP]
    <?php
    class Getdb extends CI_Model
    {
    public function dati()
    {
    $query = $this->db->get("utenti");

        if($query->num_rows() > 0)
        {
        foreach ($query->result() as $row)
        $data[] = $row;
        
        return $data;
        }
        
    }
    

    }
    [/PHP]

    menudb.php nel model:
    [PHP]
    <?php
    class Menudb extends CI_Model
    {
    public function datis()
    {
    $sql = $this->db->get("menu");

        if($sql->num_rows() > 0)
        {
        foreach ($sql->result() as $rows)
        $menus[] = $rows;
        
        return $menus;
        }
        
    }
    

    }
    [/PHP]

    utenti.php nella view:
    [PHP]
    <?php

    foreach ($user as $dati) 
    {
         $id[] = $dati->ID;
         $utente[] = $dati->utente;
         $password[] = $dati->password;
    }
    
    
    foreach ($navbar as $datos) 
    {
         $nav[] = $datos->nav;
         
    }    
    

    ?>

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <title>Utenti</title>
    </head>
    <body>

    <div id="container">
    <div id="title">
    <h1>Utente page</h1>
    </div>
    <div id="nav">
    <ul>
    <li><a href=?#?><?php echo $nav[0]; ?></a></li>
    <li><a href=?#?><?php echo $nav[1]; ?></a></li>
    <li><a href=?#?><?php echo $nav[2]; ?></a></li>
    <li><a href=?#?><?php echo $nav[3]; ?></a></li>
    </ul>
    </div><br><br>
    <div id="page">
    <?php

           echo $id[0]. "<br>"; 
        echo $utente[0] . "<br>"; 
        echo $password[0] . "<br><br>";
        
        echo $id[1]. "<br>"; 
        echo $utente[1] . "<br>"; 
        echo $password[1] . "<br><br>";
        
        ?>
    

    </div>

    </div>

    </body>
    </html>
    [/PHP]

    Output del codice html prodotto con tutti gli errori:

    
    **
    <div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
    
    <h4>A PHP Error was encountered</h4>
    
    <p>Severity: Notice</p>
    <p>Message:  Undefined variable: navbar</p>
    <p>Filename: views/utenti.php</p>
    <p>Line Number: 11</p>
    
    </div><div style="border:1px solid;padding-left:20px;margin:0 0 10px 0;">
    
    <h4>A PHP Error was encountered</h4>
    
    <p>Severity: Warning</p>
    <p>Message:  Invalid argument supplied for foreach()</p>
    <p>Filename: views/utenti.php</p>
    <p>Line Number: 11</p>
    **
    
    </div>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Utenti</title>
    </head>
    <body>
    
    <div id="container">
        <div id="title">
            <h1>Utente page</h1>
        </div>
        <div id="nav">
            <ul>
                <li><a href=?#?><div style="border:1px solid;padding-left:20px;margin:0 0 10px 0;">
    
    **
    <h4>A PHP Error was encountered</h4>
    
    <p>Severity: Notice</p>
    <p>Message:  Undefined variable: nav</p>
    <p>Filename: views/utenti.php</p>
    <p>Line Number: 53</p>
    
    </div></a></li>
                <li><a href=?#?><div style="border:1px solid;padding-left:20px;margin:0 0 10px 0;">
    
    <h4>A PHP Error was encountered</h4>
    
    <p>Severity: Notice</p>
    <p>Message:  Undefined variable: nav</p>
    <p>Filename: views/utenti.php</p>
    <p>Line Number: 54</p>
    **
    
    </div></a></li>
                <li><a href=?#?><div style="border:1px solid;padding-left:20px;margin:0 0 10px 0;">
    **
    <h4>A PHP Error was encountered</h4>
    
    <p>Severity: Notice</p>
    <p>Message:  Undefined variable: nav</p>
    <p>Filename: views/utenti.php</p>
    <p>Line Number: 55</p>
    
    </div></a></li>
                <li><a href=?#?><div style="border:1px solid;padding-left:20px;margin:0 0 10px 0;">
    
    <h4>A PHP Error was encountered</h4>
    
    <p>Severity: Notice</p>
    <p>Message:  Undefined variable: nav</p>
    <p>Filename: views/utenti.php</p>
    <p>Line Number: 56</p>
    **
    
    </div></a></li>
           </ul>
       </div><br><br>
       <div id="page">
               1<br>Mario<br>1234<br><br>2<br>Pino<br>4321<br><br>  </div>    
        
    
    </div>
    
    </body>
    </html>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Utenti</title>
    </head>
    <body>
    
    <div id="container">
        <div id="title">
            <h1>Utente page</h1>
        </div>
        <div id="nav">
            <ul>
                <li><a href=?#?>home</a></li>
                <li><a href=?#?>about</a></li>
                <li><a href=?#?>mappa</a></li>
                <li><a href=?#?>contatto</a></li>
           </ul>
       </div><br><br>
       <div id="page">
               1<br>Mario<br>1234<br><br>2<br>Pino<br>4321<br><br>  </div>    
        
    
    </div>
    
    </body>
    </html>
    
    

  • User Attivo

    Come dice il codice evidenziato, in utenti.php stai facendo girare gli array $user e $navbar, ma non esistono tali array. Non so cosa dovrebbero contenere, ma prova a dichiarare $user = array(); e $navbar = (); se proprio devono stare vuoti


  • User

    Gli Array $user e $nav devono contenere i dati che vengono visualizzati a video, ma insieme ci sono anche gli errori.


  • ModSenior

    Ciao,
    è normale sia cosi per come è fatto lo script.
    Perchè hai 2 metodi nel controller che richiamano la stessa view?


  • User

    Ho 2 metodi nel controller che richiamo due file diversi nel model, e richiamo anche la view 2 volte.
    E scorretto questo?


  • ModSenior

    Non ha molto senso come cosa, tu quando vai su sito.ext/nome_controller/nome_metodo col browser, ti ritrovi nel view o solo utenti o solo navbar.
    Per cui il view unico non ha senso.

    Di preciso cosa vuoi realizzare?


  • User

    Sto facendo delle prove, nel browser richiamando url:
    sito.ext/nome_controller/nome_metodo, vorrei estrarre dal database e visualizzare i dati dei di 2 tabelle non relazionate tra loro, nella view utenti.php


  • ModSenior

    Devi fare:
    [php]
    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

    class Core extends CI_Controller
    {
    public function index()
    {
    $data = array();
    $this->load->model('getdb');
    $data['user'] = $this->getdb->dati();

        $this->load->model('menudb');
        $data['navbar'] = $this->menudb->datis();
    
        $this->load->view('utenti',$data);
    }
    

    }
    [/php]

    Stavo preparando una guida su CodeIgniter, tra un pò la posto nella sottosezione di questo forum, penso ti sarà utile leggerla per capire qual'è il problema.


  • User

    E corretto! Grazie mille!
    Sono nuovo al PHP ad oggetti ed Codeigniter, la tua guida la leggero volentieri, avvisami quando la hai postata.
    magari aggiungi anche una parte su come estrarre i dati dal database con 2 tabelle relazionate usando il JOIN.


  • ModSenior

  • User

    Ho letto la tua guida, molto chiara e precisa, ho appreso dei concetti basilari ma importantissimi per lavorare con Codeigniter.