/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Multidimentionelt array fra DB'en ... hvor~
Fra : Martin Stender


Dato : 15-06-02 19:01

Hej Alle,

Jeg skal bruge et multidimensionel assosiativt array, og kan godt trække et
2D (key=>value) array ud fra SQL'en ... men jeg kan simpelthen ikke finde ud
af hvordan man gør det, når man skal bruge et flerdimensionelt array i
stedet.

Den her virker, hvis der er tale om et 2D array: (skrevet i pædagog-kode
....
(forbindelse til en db er forudsat her)

<?

$query = "SELECT field1, field2, field3 FROM table";
$result = mysql_query($query);

while($row = mysql_fetch_row($result))
{
$MyArray[$row[0]] = $row[1];
}

print_r;

?>

Men jeg har f.eks forsøgt ' $MyArray[$row[0]] = $row[1],$row[2] ' og meget
andet, men får en parse-fejl ligemeget hvad jeg gør. Det er heller ikke
tilsyneladende heller ikke dokumenteret på php.net

Alle forslag modtages med stor tak!

Mvh
Martin




 
 
Peter Brodersen (15-06-2002)
Kommentar
Fra : Peter Brodersen


Dato : 15-06-02 19:05

On Sat, 15 Jun 2002 20:01:00 +0200, "Martin Stender"
<martin@stender.com> wrote:

>while($row = mysql_fetch_row($result))
> {
> $MyArray[$row[0]] = $row[1];
> }

while($row = mysql_fetch_row($result))
{
$MyArray[] = $row;
}


>Men jeg har f.eks forsøgt ' $MyArray[$row[0]] = $row[1],$row[2] ' og meget
>andet, men får en parse-fejl ligemeget hvad jeg gør. Det er heller ikke
>tilsyneladende heller ikke dokumenteret på php.net

$row er et array i første omgang, så det kan du sagtens servere
videre. Alternativt må du rode med noget i stil med:

$MyArray[] = array($row[0],$row[1],$row[2]);

.... men det er jo også hvad $row indeholder i første omgang.

--
- Peter Brodersen

Martin Stender (15-06-2002)
Kommentar
Fra : Martin Stender


Dato : 15-06-02 20:28

Tak for hurtigt svar.

Har du et bud på hvad man gør, hvis man vil have et felt i databasen sat ind
som 'key' - altså, så vi ender med et assosiativt flerdimensionelt array ...
?

Jeg prøvede lige:
$MyArray[ $row->field1] = $row;
men den gik ikke ...

Mvh
Martin


"Peter Brodersen" <usenet@ter.dk> wrote in message
news:MkLO8.55222$N46.1796787@news010.worldonline.dk...
> On Sat, 15 Jun 2002 20:01:00 +0200, "Martin Stender"
> <martin@stender.com> wrote:
>
> >while($row = mysql_fetch_row($result))
> > {
> > $MyArray[$row[0]] = $row[1];
> > }
>
> while($row = mysql_fetch_row($result))
> {
> $MyArray[] = $row;
> }
>
>
> >Men jeg har f.eks forsøgt ' $MyArray[$row[0]] = $row[1],$row[2] ' og
meget
> >andet, men får en parse-fejl ligemeget hvad jeg gør. Det er heller ikke
> >tilsyneladende heller ikke dokumenteret på php.net
>
> $row er et array i første omgang, så det kan du sagtens servere
> videre. Alternativt må du rode med noget i stil med:
>
> $MyArray[] = array($row[0],$row[1],$row[2]);
>
> ... men det er jo også hvad $row indeholder i første omgang.
>
> --
> - Peter Brodersen



Peter Brodersen (15-06-2002)
Kommentar
Fra : Peter Brodersen


Dato : 15-06-02 21:19

On Sat, 15 Jun 2002 21:28:05 +0200, "Martin Stender"
<martin@stender.com> wrote:

>Jeg prøvede lige:
>$MyArray[ $row->field1] = $row;
>men den gik ikke ...

Brug fx $row[0]. $row er et array, ikke et objekt.

--
- Peter Brodersen

Christian Joergensen (16-06-2002)
Kommentar
Fra : Christian Joergensen


Dato : 16-06-02 10:26

On Sat, 15 Jun 2002 22:19:13 +0200, Peter Brodersen wrote:

>>Jeg prøvede lige:
>>$MyArray[ $row->field1] = $row;
>>men den gik ikke ...
>
> Brug fx $row[0]. $row er et array, ikke et objekt.

Lige for at illustrere hvordan det også kan gøres. Med PEAR DB objektet
(her er $dbh objektet):

<?php
$query = "SELECT field1, field2, field3 FROM table";
$foo = $dbh->getAll($query, DB_FETCHMODE_ASSOC);
?>

--
Christian Jørgensen | Do not look into the laser with remaining eye!
http://www.razor.dk |

Martin Stender (16-06-2002)
Kommentar
Fra : Martin Stender


Dato : 16-06-02 14:02

Tak.

Men nu fandt jeg ud af det:

while($row = mysql_fetch_array($result))
{
$myarray[$result[0]] = array ($result[1],$result[2],$result[3]);
}

Så får jeg et array som jeg kan bruge (og manipulere) i stedet for gentagne
db-kald - jeg behøver nemli' ikke at gemme værdierne i db'en igen, da det
kun er til en menu-struktur, som har en default-state, der skal være den
samme hver gang en ny session startes.

Array'et kan manipuleres af brugeren under selve sessionen, selvfølgelig.
Jeg gemmer det som en sessionsvariabel - så husker sessionen menu'ens
tilstand, når brugeren vender tilbage til den pågældende sektion i site'et.

Men er der egentlig nogle begrænsninger for, hvad og hvor meget man kan
gemme i sessionsvariabler?

Tak for svarene, i øvrigt

Mvh
Martin

"Christian Joergensen" <mail@phpguru.dk> wrote in message
news:pan.2002.06.16.09.25.28.878833.26525@phpguru.dk...
> On Sat, 15 Jun 2002 22:19:13 +0200, Peter Brodersen wrote:
>
> >>Jeg prøvede lige:
> >>$MyArray[ $row->field1] = $row;
> >>men den gik ikke ...
> >
> > Brug fx $row[0]. $row er et array, ikke et objekt.
>
> Lige for at illustrere hvordan det også kan gøres. Med PEAR DB objektet
> (her er $dbh objektet):
>
> <?php
> $query = "SELECT field1, field2, field3 FROM table";
> $foo = $dbh->getAll($query, DB_FETCHMODE_ASSOC);
> ?>
>
> --
> Christian Jørgensen | Do not look into the laser with remaining eye!
> http://www.razor.dk |



Christian Joergensen (16-06-2002)
Kommentar
Fra : Christian Joergensen


Dato : 16-06-02 16:22

On Sun, 16 Jun 2002 15:02:02 +0200, Martin Stender wrote:

> Men er der egentlig nogle begrænsninger for, hvad og hvor meget man kan
> gemme i sessionsvariabler?

Så længe det kan "serieliseres": arrays og objekter er ikke noget
problem. Jeg synes det virker ret logisk, men nævner det alligevel; du
kan selvfølgelig ikke gemme filehandles, sql connections osv.

--
Christian Jørgensen | Do not look into the laser with remaining eye!
http://www.razor.dk |

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408952
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste