Array fra database

Tags:    php mysql

Kære udviklere,

Jeg sidder og leger lidt med arrays. Det er ikke min stærke side, da jeg syntes de kan være forvirrende. Jeg skrev tidligere et spørgsmål omkring at udskrive nogle såkaldte "tags", som er i brug for en tutorial. Denne gang vil jeg gerne have at ved hver af mine unikke tutorials skal der udskrives hvilke tags der forekommer til det gældende resultat.

Problemet ligger i at jeg har en foreach-løkke, som udskriver de resultater som jeg vil have fra databasen. Det virker også fint, men på den måde kan jeg (åbenbart) ikke have flere foreach-løkker inde i hinanden (jeg kan ihvertfald ikke få det til at virke).

Jeg har prøvet med en for-løkke, til at udskrive min tags:

Fold kodeboks ind/udPHP kode 


Den udskriver det rigtige antal "tags" som hver tutorial har fået tildelt igennem databasen, men den skriver det samme tag-navn i alle udskrivningerne.

Eksempelvis har jeg en tutorial ved navn "HTML5 VIDEO FREMVISNING", som har fået tildelt disse tags (kun til test):

html
seo


Den udskriver html, ja! Men den udskriver html i begge resultater:

html
html


Det forstår jeg ikke helt - og dog. For jeg får den til at blive udskrevet sådan med min for-løkke. Jeg har søgt lidt på Google, og det som virker mest rigtig er et array_merge. Jeg kan bare ikke lige se hvordan jeg skal bruge det.

Med venlig hilsen,
Daniele Buttigli



5 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Du henter noget fra din DB og liggger det i dit Resultset. Du skal se dit resultset som en tabel. Fra denne tabel, henter du dine værdier.

I de fleste tilfælde, starter man med række 1 i tabellen - mysql ved ikke selv hvornår den skal skifte til næste række, så hvis du ikke fortæller den det, så går du stampe med den samme række.

I din for sætning, mangler du netop dette.

Det du mangler inde i din for løkke, kunne f.x. se sådan her ud:
$row = mysql_fetch_row($result);



Du får lige hele mit script:

Fold kodeboks ind/udPHP kode 


For jeg ved ikke lige hvordan man skulle kunne smide en mysql_fetch_row ind i en for-løkke.



Kan ved nærmere eftersyn se, at det vidst ikke er måden at gøre det på.

Virker din INNER JOIN på tag tabellen efter hensigten? Kan du give et eksempel dump fra f.x. phpmyadmin, hvad din SQL returnere?



Jeg har lige indskrevet dette i phpmyadmin forespørgelses vinduet:

Fold kodeboks ind/udSQL kode 


Når den skal hente mine tagsName, henter den kun det første resultat fra begge.

Eksempel: http://img440.imageshack.us/img440/5111/screendom.jpg



Mit umiddelbare råd, er at lave det i to omgange:

mysql_query(oprindelig sql her)
for each(tutorial)
{
echo 'tutorial'

mysql_query(hent_tags)
for each(tag)
{
echo 'tag';
}
}

Jeg kan ikke se, hvordan din join skulle kunne give et fornuftigt resultat, uden at dit resultset bliver rodet med enten redudante eller sammenkoblede data.

Du kan godt lave en SQL, hvor resultatet kunne få denne form:
id|Overskrift |tags
---------------------------------
01|Hello world|hello,world,tags

Men jeg synes ikke det vil være en holdbar løsning.



t