No, index non deve assolutamente interagire col database, senno' la classe a che serve? La tua classe deve restituire un array con tutti i risultati estratti dal database, e in index devi solo scorrere quell'array per stamparli.
No, index non deve assolutamente interagire col database, senno' la classe a che serve? La tua classe deve restituire un array con tutti i risultati estratti dal database, e in index devi solo scorrere quell'array per stamparli.
l'applicazione va suddivisa in layer, questo è un concetto che ti manca
la logica non deve essere inserita all'interno delle viste, come ti ha detto k.b lì devi limitare ad inviare i dati da stampare.
comunque se proprio vuoi iniziare affrontando il database, usa PDO per effettuare la connessione e tutto il resto...
altrimenti quello che hai un semplice facade o.o
il concetto l'ho capito ma nn riesco a implementarlo.
il metodo select mi restituisce un array associativo giusto?
come faccio a scorrere il risultato del metodo da un'altra "pagina"?
per il discorso PDO, un pò già lo conosco.
solo che devo giusto fare due pagine quindi pensavo di lasciarlo per un altro progetto un pò più grande.
Nel metodo select scorri tutto il recordset restituito dalla query ed inserisci tutti i record in un array che sara' poi il valore di ritorno del metodo. Sara' questo grosso array di record che tu andrai a scorrere nella pagina di visualizzazione.Originariamente inviato da fermat
il concetto l'ho capito ma nn riesco a implementarlo.
il metodo select mi restituisce un array associativo giusto?
come faccio a scorrere il risultato del metodo da un'altra "pagina"?
Ma scusa a maggior ragione se devi fare solo due pagine non ha senso che tu ti metta a reinventare la ruota creando la milionesima classe che interagisce con mysql, usa una libreria gia' fatta: fai prima e hai meno problemi.Originariamente inviato da fermat
per il discorso PDO, un pò già lo conosco.
solo che devo giusto fare due pagine quindi pensavo di lasciarlo per un altro progetto un pò più grande.
Pensavo che il tuo fosse un esercizio didattico, per fare due select stare a costruire una classe di astrazione non ha senso.
bhe è un pò e un pò, nel senso che devo fare queste due pagine per un amico e ho pensato che potesse essere un buon esercizio.
allora vado di PDO e vedo che riesco a fare!!
allora mi sono documentato un pò:
questa è la classe per la connessione che usa PDO.Codice PHP:<?php
class Config {
private $host;
private $user;
private $pass;
private $db;
public function __construct() {
$this->host = '';
$this->user = '';
$this->pass = '';
$this->db = '';
}
public function select() {
$result = array();
$strQuery = "SELECT * FROM contatti";
$dns = "mysql:host" . $this->host . ";dbname=" . $this->db . ";user=" . $this->user . ";password=" . $this->pass;
try {
$pdo = new PDO($dns);
$stmt = $pdo->query($strQuery);
foreach ($stmt as $row) {
$result[] = $row;
}
return $result;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "
";
die();
}
}
}
poi:
ottengo questo errore:Codice PHP:<?php
<?php
include_once 'config.php';
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Email DB</title>
</head>
<body>
<?php
$result = array();
$select = new Config();
$select->select();
foreach ($select as $row) {
$result = $row;
}
?>
</body>
</html>
Error!: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
ok ho messo a posto il config:
ottengo pagina bianca.Codice PHP:<?php
class Config {
private $pdo;
public function __construct() {
try {
$this->pdo = new PDO('mysql:host=;dbname=', "", "");
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "
";
die();
}
}
public function select() {
$result = array();
$strQuery = "SELECT * FROM contatti";
try {
$stmt = $this->pdo->query($strQuery);
foreach ($stmt as $row) {
$result[] = $row;
}
return $result;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "
";
die();
}
}
}
penso che l'errore sia nell'iterazione, ma nn riesco a venirne a capo.
ho fatto un passo avanti:
in index:Codice PHP:public function select() {
$result = array();
$strQuery = "SELECT * FROM contatti";
try {
$stmt = $this->pdo->query($strQuery);
foreach ($stmt as $key => $row) {
$result[$key] = $row;
}
return $result;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "
";
die();
}
}
ottengo solo la scritta Array.Codice PHP:<?php
$result = array();
$select = new Config();
foreach ($select->select() as $key => $row) {
$result[$key] = $row;
echo $row;
}
?>
ok allora:
Codice PHP:public function select() {
$result = array();
$strQuery = "SELECT * FROM contatti";
try {
$stmt = $this->pdo->query($strQuery);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
return $result;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "
";
die();
}
}
così ottengo il risultato ma in forma scomoda:Codice PHP:<?php
$result = array();
$select = new Config();
foreach ($select->select() as $key => $row) {
$result[$key] = $row;
echo $row;
}
?>
1nomecognomeprova@email.itroma
come faccio a separare i campi??