Pagina 1 di 2
[PHPBB]Passare Blocco di variabili al Template
Inviato: 26/05/2012, 22:02
da xX_Simon_Xx
Io vorrei passare un gran numero di variabili per creare una tabella ora mi spiego meglio
allora io seleziono le variabili così
la tabella "case" è così strutturata:

quindi io vorrei passare al template tutte queste variabili per fare una tabella di questo tipo
IDCASA | PROPRIETARIO
1 | Tizio
2 | Caio
3 | Sempronio
e così via per tutti gli ID
per caricare le variabili avevo pensato a una cosa del genere
Codice: Seleziona tutto
foreach($result as $row)
{
$template->assign_block_vars('case', array(
'ID' => $row[id],
'PROPRIETARIO' => $row[Proprietario],
));
}
e poi nell template così
Codice: Seleziona tutto
<table>
<!-- BEGIN case -->
<tr>
<td>{case.ID}</td>
<td>{case.PROPRIETARIO}</td>
</tr>
<!-- END case -->
</table>
penso si a tutto giusto ma da questo errore
non conoscendo bene il foreach non riesco a capire dove sta il problema
Re: [PHPBB]Passare Blocco di variabili al Template
Inviato: 26/05/2012, 22:55
da xX_Simon_Xx
Ho provato anche a fare in questo modo
Codice: Seleziona tutto
$result = mysql_query("SELECT * FROM `case`");
$num = mysql_numrows($result);
$i=0;
while ($i < $num)
{
$id = mysql_result($result,$i,"id");
$propr = mysql_result($result,$i,"Proprietario");
$template->assign_block_vars('case', array(
'ID' => $id,
'PROPRIETARIO' => $template,
));
}
ma da questo errore
Codice: Seleziona tutto
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 72 bytes)
evidentemente la query è troppo pesante D: datemi una mano
Re: [PHPBB]Passare Blocco di variabili al Template
Inviato: 27/05/2012, 11:55
da Lady R
se provi a fare un echo dei valori funziona? intendo, il problema è nella creazione della variabile del template o del fetch da database?
Re: [PHPBB]Passare Blocco di variabili al Template
Inviato: 27/05/2012, 18:11
da xX_Simon_Xx
Lady R ha scritto:se provi a fare un echo dei valori funziona? intendo, il problema è nella creazione della variabile del template o del fetch da database?
Allora io ho provato a fare così
Codice: Seleziona tutto
$result = mysql_query("SELECT * FROM `case`");
$num = mysql_numrows($result);
for ($i = 1; $i <= $num ; $i++)
{
$result = mysql_query("SELECT `id`,`Proprietario` FROM `case` WHERE `id` = '$i'");
if(mysql_num_rows($result) !=0)
{
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$id = $row['id'];
$prop = $row['Proprietario'];
}
$template->assign_block_vars('case', array(
'ID' => $id,
'PROPRIETARIO' => $prop,
));
}
else
{
continue;
}
}
$template->set_filenames(array(
'body' => 'registro-body.html',
));
funaziona perfettamente l'unico problema è che se io ad esempio nel mio database ho 449 case
se io provo ad eliminare la 448
nella tabella del template la lista si ferma alla 447 perchè???
il mysql_numrows($result) ritorna 448 quindi giustamente il for arriva fino al 448 ma non esistendo il 448 mostra solo fino al 447
come faccio quindi per mostrare anche ail 449??
Re: [PHPBB]Passare Blocco di variabili al Template
Inviato: 27/05/2012, 21:59
da Carlo
Nel primo codice fornito, invece di usare un ciclo
foreach, usa questo:
Re: [PHPBB]Passare Blocco di variabili al Template
Inviato: 27/05/2012, 22:29
da xX_Simon_Xx
Carlo ha scritto:Nel primo codice fornito, invece di usare un ciclo
foreach, usa questo:
da questo errore
Codice: Seleziona tutto
Fatal error: Call to undefined method dbal_mysqli::sql_fetch()
Re: [PHPBB]Passare Blocco di variabili al Template
Inviato: 28/05/2012, 18:23
da Carlo
Sì, scusa, il metodo si chiama sql_fetchrow e non sql_fetch.
Re: [PHPBB]Passare Blocco di variabili al Template
Inviato: 28/05/2012, 19:09
da xX_Simon_Xx
Codice: Seleziona tutto
$result = mysql_query("SELECT * FROM `case`");
while($row = $db->sql_fetchrow($result))
{
$id = $row['id'];
$prop = $row['Proprietario'];
$valore = $row['Costo'];
$template->assign_block_vars('case', array(
'ID' => $id,
'PROPRIETARIO' => $prop,
'VALORE' => $valore,
));
}
non appare nulla
l'unico sistema che funziona è con il for in questo modo
Codice: Seleziona tutto
for ($i = 1; $i < 1000 ; $i++)
{
$result = mysql_query("SELECT `id`,`Proprietario`,`Costo` FROM `case` WHERE `id` = '$i'");
if(mysql_num_rows($result) !=0)
{
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$id = $row['id'];
$prop = $row['Proprietario'];
$valore = $row['Costo'];
}
$template->assign_block_vars('case', array(
'ID' => $id,
'PROPRIETARIO' => $prop,
'VALORE' => $valore,
));
}
else
{
continue;
}
}
però ad esempio se io supero 1000 nella tabella del database (cosa improbabile) devo star li a cambiare di volta in volta il numero tu dici che con il foreach si può risolvere??
PS: è un piacere rivederti carlo

Re: [PHPBB]Passare Blocco di variabili al Template
Inviato: 28/05/2012, 23:33
da Carlo
Devi usare le funzioni specifiche di phpBB per lavorare con il database.
Ovvero, al posto di usare mysql_query() devi usare $db->sql_query().
Re: [PHPBB]Passare Blocco di variabili al Template
Inviato: 29/05/2012, 11:45
da xX_Simon_Xx
Carlo ha scritto:Devi usare le funzioni specifiche di phpBB per lavorare con il database.
Ovvero, al posto di usare mysql_query() devi usare $db->sql_query().
al posto di $db devo mettere la mia varibile della connnsesisone???
tipo
Codice: Seleziona tutto
$con = mysql_connect(SQL_SERVER, SQL_USERNAME, SQL_PASSWORD);
mysql_select_db(SQL_DB, $con);
$con->sql_query()