- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Problema CodeIgniter e database Mysql
-
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]
<?phpforeach ($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">
<?phpecho $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>
-
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
-
Gli Array $user e $nav devono contenere i dati che vengono visualizzati a video, ma insieme ci sono anche gli errori.
-
Ciao,
è normale sia cosi per come è fatto lo script.
Perchè hai 2 metodi nel controller che richiamano la stessa view?
-
Ho 2 metodi nel controller che richiamo due file diversi nel model, e richiamo anche la view 2 volte.
E scorretto questo?
-
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?
-
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
-
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.
-
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.
-
La puoi ora trovare qui:
http://www.giorgiotave.it/forum/scripting-e-risorse-utili/198679-guida-codeigniter.html
-
Ho letto la tua guida, molto chiara e precisa, ho appreso dei concetti basilari ma importantissimi per lavorare con Codeigniter.