Avatar billede angelenglen Nybegynder
12. august 2003 - 22:22 Der er 9 kommentarer og
1 løsning

problemer med arrays og smarty

jeg sidder og bikser lidt med at lave en side der bruger arrays i php's smarty...


problemet ligger i, at jeg gerne vil trække indholdet af array'en ud af min database - men jeg kan ikke helt finde ud af hvordan...

som det kan ses i filerne, kører jeg en while-løkke, som samler id'erne i en variabel, og derefter smider jeg variablen ind i array'en, i håber om at denne så ville bruge det som jeg havde håbet.

som eksempel, er der følgende id'er i databasen:
1
2
3
4

-efter løkken er kørt, er indholdet følgende:
(ved fx "echo $array_id;")
'1','2','3','4'

-det burde i teorien virke, således at når indsat her:
$smarty->assign('ids',array($array_id));
-ville det være det samme som at skrive:
$smarty->assign('ids',array('1','2','3','4'));
-men det er det ikke - hvorfor?

hvis jeg i php filen skriver:
1. $smarty->assign('ids',array($array_id));
eller
2. $smarty->assign('ids',array('1','2','3','4'));

får jeg følgende outputs:
1:
This is an ID from the database: '1','2','3','4'!

2:
This is an ID from the database: 1!
This is an ID from the database: 2!
This is an ID from the database: 3!
This is an ID from the database: 4!


-hvorfor vil den ikke bruge min variabel som input til array'en?


-her er mine filer:


################### index.tpl ###################
{* Smarty *}

{* include the color-config file here *}
{config_load file="colors.conf"}

{* include the header file here *}
{include file="header.tpl"}




{* outputting the array 'ids' *}
{foreach from=$ids item=id}
    This is an ID from the database: {$id}!<br>
{/foreach}




{* include the footer file here *}
{include file="footer.tpl"}
################### index.tpl ###################




################### index.php ###################
<?
require('setup.php');

$smarty = new Spark_Page;

        // start news loop
        $c = "0";

$c_get_max = mysql_query("SELECT id FROM zabersoft_news");
$c_max = mysql_num_rows($c_get_max);


        $select="SELECT * FROM zabersoft_news ORDER BY id DESC";
        $query = @mysql_query($select);

        while ($list = @mysql_fetch_object($query)) {
                $id        = $list->id;
                $c++;
               
                    if ($c != $c_max) {
                $array_id     = $array_id."'".$id."', ";
                    }
                    elseif ($c == $c_max) {
                $array_id     = $array_id."'".$id."'";
                    }
        }

                // end news loop

$smarty->assign('ids',array($array_id));

$smarty->display('index.tpl');


?>
################### index.php ###################


håber virkeligt nogen kan hjælpe her...
Avatar billede tipsen Nybegynder
12. august 2003 - 23:05 #1
Prøv følgende, hvor der er lavet en hel del rettelser - bare spørg til de dele du ikke forstår.

$smarty = new Spark_Page;
// start news loop
$c = 0;
$res = mysql_query('SELECT max(id) FROM zabersoft_news');
$c_max = mysql_get_result($res, 0);

$sql = 'SELECT id FROM zabersoft_news ORDER BY id DESC';
$res = mysql_query($sql);
$id = array();
while ($row = mysql_fetch_row($res)) {
    $id[] = $row[0];
}
// end news loop
$smarty->assign('ids',array($id));
$smarty->display('index.tpl');
Avatar billede angelenglen Nybegynder
12. august 2003 - 23:27 #2
hmm:
Fatal error: Call to undefined function: mysql_get_result() in index.php on line 7
Avatar billede tipsen Nybegynder
12. august 2003 - 23:31 #3
$c_max = mysql_result($res, 0);
Avatar billede angelenglen Nybegynder
12. august 2003 - 23:33 #4
mystisk, den outputter:

This is an ID from the database: Array!
Avatar billede tipsen Nybegynder
12. august 2003 - 23:34 #5
prøv:

$smarty->assign('ids', $id);
Avatar billede angelenglen Nybegynder
12. august 2003 - 23:35 #6
This is an ID from the database: 5!
This is an ID from the database: 4!
This is an ID from the database: 2!
This is an ID from the database: 1!

-Mange tak!!!!!
Avatar billede tipsen Nybegynder
12. august 2003 - 23:47 #7
You're most welcome - den manual der følger med Smarty er forøvrigt ikke helt tosset.
Avatar billede angelenglen Nybegynder
12. august 2003 - 23:50 #8
nej, den er totalt god, men jeg syntes ikke der står ret meget om array's, og det jeg fandt på php.net hjalp mig heller ikke :(
Avatar billede tipsen Nybegynder
13. august 2003 - 00:00 #9
Har du læst tutorial-afsnittet om arrays på php.net?
Avatar billede tipsen Nybegynder
13. august 2003 - 00:01 #10
(Det grundlæggende problem i din kodestump var basal forståelse af arrays - brugen af smarty var såmænd fin nok!)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester