phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

[PHPBB]Passare Blocco di variabili al Template

Area di discussione relativa al linguaggio di programmazione web più conosciuto. Il forum è dedicato anche a MySQL, la piattaforma di database più utilizzata con il PHP.
Avatar utente
xX_Simon_Xx
Utente Pro
Utente Pro
Messaggi: 637
Iscritto il: 25/11/2009, 15:36
Sesso: Maschio
Versione: 3.0.10
Server: UNIX/Linux
PHP: 5.2.13
Database: MySQL(i) 5.1.34
Contatta:

[PHPBB]Passare Blocco di variabili al Template

Messaggio da xX_Simon_Xx » 26/05/2012, 22:02

Io vorrei passare un gran numero di variabili per creare una tabella ora mi spiego meglio
allora io seleziono le variabili così

Codice: Seleziona tutto

$result = mysql_query("SELECT * FROM `case`");
la tabella "case" è così strutturata:
Immagine
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

Codice: Seleziona tutto

Invalid argument supplied for foreach()
non conoscendo bene il foreach non riesco a capire dove sta il problema

Avatar utente
xX_Simon_Xx
Utente Pro
Utente Pro
Messaggi: 637
Iscritto il: 25/11/2009, 15:36
Sesso: Maschio
Versione: 3.0.10
Server: UNIX/Linux
PHP: 5.2.13
Database: MySQL(i) 5.1.34
Contatta:

Re: [PHPBB]Passare Blocco di variabili al Template

Messaggio da xX_Simon_Xx » 26/05/2012, 22:55

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

Avatar utente
Lady R
phpBB Expert
phpBB Expert
Messaggi: 900
Iscritto il: 08/11/2011, 13:43
Sesso: Femmina
Versione: 3.0.9
Server: UNIX/Linux
PHP: 5.3.8
Database: MySQLi
Contatta:

Re: [PHPBB]Passare Blocco di variabili al Template

Messaggio da Lady R » 27/05/2012, 11:55

se provi a fare un echo dei valori funziona? intendo, il problema è nella creazione della variabile del template o del fetch da database?

Avatar utente
xX_Simon_Xx
Utente Pro
Utente Pro
Messaggi: 637
Iscritto il: 25/11/2009, 15:36
Sesso: Maschio
Versione: 3.0.10
Server: UNIX/Linux
PHP: 5.2.13
Database: MySQL(i) 5.1.34
Contatta:

Re: [PHPBB]Passare Blocco di variabili al Template

Messaggio da xX_Simon_Xx » 27/05/2012, 18:11

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??

Avatar utente
Carlo
Amministratore
Amministratore
Messaggi: 9957
Iscritto il: 19/04/2009, 10:24
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 7.1.0
Database: MySQL(i) 10.0.27-MariaDB-cll-lve
Località: Puglia
Contatta:

Re: [PHPBB]Passare Blocco di variabili al Template

Messaggio da Carlo » 27/05/2012, 21:59

Nel primo codice fornito, invece di usare un ciclo foreach, usa questo:

Codice: Seleziona tutto

while($row = $db->sql_fetch($result)) 
MODs | Stili | Traduzioni MOD
Ogni MP contenente una richiesta di supporto verrà ignorato.

Avatar utente
xX_Simon_Xx
Utente Pro
Utente Pro
Messaggi: 637
Iscritto il: 25/11/2009, 15:36
Sesso: Maschio
Versione: 3.0.10
Server: UNIX/Linux
PHP: 5.2.13
Database: MySQL(i) 5.1.34
Contatta:

Re: [PHPBB]Passare Blocco di variabili al Template

Messaggio da xX_Simon_Xx » 27/05/2012, 22:29

Carlo ha scritto:Nel primo codice fornito, invece di usare un ciclo foreach, usa questo:

Codice: Seleziona tutto

while($row = $db->sql_fetch($result))
da questo errore

Codice: Seleziona tutto

Fatal error: Call to undefined method dbal_mysqli::sql_fetch()

Avatar utente
Carlo
Amministratore
Amministratore
Messaggi: 9957
Iscritto il: 19/04/2009, 10:24
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 7.1.0
Database: MySQL(i) 10.0.27-MariaDB-cll-lve
Località: Puglia
Contatta:

Re: [PHPBB]Passare Blocco di variabili al Template

Messaggio da Carlo » 28/05/2012, 18:23

Sì, scusa, il metodo si chiama sql_fetchrow e non sql_fetch.
MODs | Stili | Traduzioni MOD
Ogni MP contenente una richiesta di supporto verrà ignorato.

Avatar utente
xX_Simon_Xx
Utente Pro
Utente Pro
Messaggi: 637
Iscritto il: 25/11/2009, 15:36
Sesso: Maschio
Versione: 3.0.10
Server: UNIX/Linux
PHP: 5.2.13
Database: MySQL(i) 5.1.34
Contatta:

Re: [PHPBB]Passare Blocco di variabili al Template

Messaggio da xX_Simon_Xx » 28/05/2012, 19:09

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 :D

Avatar utente
Carlo
Amministratore
Amministratore
Messaggi: 9957
Iscritto il: 19/04/2009, 10:24
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 7.1.0
Database: MySQL(i) 10.0.27-MariaDB-cll-lve
Località: Puglia
Contatta:

Re: [PHPBB]Passare Blocco di variabili al Template

Messaggio da Carlo » 28/05/2012, 23:33

Devi usare le funzioni specifiche di phpBB per lavorare con il database.

Ovvero, al posto di usare mysql_query() devi usare $db->sql_query().
MODs | Stili | Traduzioni MOD
Ogni MP contenente una richiesta di supporto verrà ignorato.

Avatar utente
xX_Simon_Xx
Utente Pro
Utente Pro
Messaggi: 637
Iscritto il: 25/11/2009, 15:36
Sesso: Maschio
Versione: 3.0.10
Server: UNIX/Linux
PHP: 5.2.13
Database: MySQL(i) 5.1.34
Contatta:

Re: [PHPBB]Passare Blocco di variabili al Template

Messaggio da xX_Simon_Xx » 29/05/2012, 11:45

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()

Rispondi

Torna a “PHP - MySQL”

Chi c’è in linea

Visitano il forum: Nessuno e 37 ospiti