vytvorenie tabulky + okamzita praca s nou

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Matej123
Člen | 150
+
0
-

Potrebujem v kode dynamicky vytvorit tabulku, nieco na ten styl:

<?php
	$this->database->query("CREATE TABLE TEMP_TABLE  AS (SELECT * FROM TABLE)");
?>

ak takto vytvorim tabulku chcel by som s nou okamzite dalej v kode pracovat, napr.:

<?php
	$data = $this->database->table("temp_table")->fetchAll();
?>

ale to mi vypise ze tu tabulku nepozna . Az nasledne ak vymazem cache tak uz ju spozna. Je mozne nejakym sposobom to osetrit, aby tu tabulku poznalo hned po vytvarani?

PS: viem ze to nie je velmi dobra cesta vytvarania tabulky, ale toto mi prislo ako najjednoduchsie riesenie mojho problemu.

CZechBoY
Člen | 3608
+
0
-

Tak napis ten problem, treba to pujde lip.

Matej123
Člen | 150
+
0
-

existuje nejaky sposob ako mazat cache? Aby poznalo tu tabulku hned po vytvoreni?

CZechBoY napsal(a):

Tak napis ten problem, treba to pujde lip.

CZechBoY
Člen | 3608
+
0
-

Můžeš mazat cache samozřejmě. Otázka je proč potřebuješ takhle za běhu vytvářet tabulky.
Děláš nějakej instalační skript?

Matej123
Člen | 150
+
0
-

potrebujem dynamicky vypisovat obsah pohladu. Zistil som ze s pohladom sa dost tazko pracuje pri vypise ( narozdiel od tabulky ). Ak som dynamicky vypisoval data z tabulky tak som to robil takto:

V presenteri:

<?php
   $this->template->data = $this->database->table("table")->fetchAll();

   $this->template->columns = $this->database->getStructure()->getColumns("table);

?>

V Latte :

<?php
	<div class="table-responsive">
                <table class="table table-striped">
                    <tr>
                        <th> # </th>
                            {foreach $columns as $column}
                                {if $column['name']!='temp_id'}
                                <th>  {$column['name']} </th>
                                {/if}
                            {/foreach}
                    </tr>
                    {foreach $data as $value}
                        <tr>
                            <td> {$iterator->counter}</td>
                            {foreach $columns as $column}
                                         <td> {$value[$column['name']]} <td>
                            {/foreach}
                        </tr>

                    {/foreach}
                </table>
            </div>
?>

Skusal som takymto sposobom robit aj s pohladom ale tam nefungovali funkcie ( vyhodilo chybu, ze tieto tabulky neexistuju, oni ani neexistuju, lebo su to pohlady) :

<?php
	$this->database->table("view")->fetchAll();
	$this->database->getStructure()->getColumns("view");
?>

ALE uz sa mi podarilo vymazat cache takze to je v poriadku :)

CZechBoY napsal(a):

Můžeš mazat cache samozřejmě. Otázka je proč potřebuješ takhle za běhu vytvářet tabulky.
Děláš nějakej instalační skript?

Editoval Matej123 (20. 4. 2016 10:31)

Unlink
Člen | 298
+
+1
-

Toto je strašne zlá cesta, pri väčšom objeme dát zabiješ databázu.
Tie pohľady fungujú, len potrebuješ mať aktuálnu nette/database

CZechBoY
Člen | 3608
+
0
-

Navíc by mělo k řádku jít přistupovat jako k asociativnímu poli, ne?

{foreach $rows as $row}
	<ul>
	{foreach $row as $key => $value}
		<li>{$key}: {$value}</li>
	{/foreach}
	</ul>
{/foreach}
Matej123
Člen | 150
+
0
-

ako sa to aktualizuje? ta nette/database?

Unlink napsal(a):

Toto je strašne zlá cesta, pri väčšom objeme dát zabiješ databázu.
Tie pohľady fungujú, len potrebuješ mať aktuálnu nette/database