[PHP] [MySQL] Het doorlopen van een array

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Wolfensteijn
  • Registratie: Maart 2000
  • Laatst online: 15-09 13:37
Ik ben bezig om in PHP een bookmarks scriptje te schrijven, vooral om ervaring op met programmeren en ik er moeite mee heb om het rechtstreeks uit een boek te leren. Ik moet een praktisch doel voor mijzelf hebben, anders lukt het me nooit ;).

Nu heb ik een database met twee tabellen, eentje genaamd "bookmark" en de andere "category". Nu is het de bedoeling dat ik alle bookmarks op het scherm te zien krijg terwijl ze zijn gesorteerd op category en alfabet. Dat is mij al gelukt door beide tabellen in een aparte array te stoppen. Maar als nu netjes eerst de category naam wil printen, daar een lijst met alle bookmarks in die category onder en dan de volgende category loop ik tegen een probleem aan.

Nu weet ik niet of de aanpak die ik probeer te gebruiken de juiste is, maar als jullie mij een paar voorbeelden (liefst zonder echte code want het gaat mij om het principe van hoe het werkt) zouden kunnen geven kan ik hopelijk weer verder ;).

Acties:
  • 0 Henk 'm!

Verwijderd

Wolfensteijn schreef op 17 February 2003 @ 16:49:
loop ik tegen een probleem aan.
welk probleem? Wat heb je nu geprobeerd, en wat staat er in die arrays??

Acties:
  • 0 Henk 'm!

  • Wolfensteijn
  • Registratie: Maart 2000
  • Laatst online: 15-09 13:37
Ik heb twee arrays, ik noem ze maar even array_1 en array_2, boeit verder weinig. In array_1 staat alle info over mijn bookmarks, namelijk: bookmark_id, bookmark_naam, bookmark_url en category_id. In array_2 staat: category_id en category_naam.

En het probleem is dat ik maar niet kan verzinnen wat de beste manier is om array_1 door te lopen zodat ik mijn bookmarks op het scherm zie onderverdeeld in category, en dat lege categorien overgeslagen worden.

Acties:
  • 0 Henk 'm!

Verwijderd

nl.php.net/foreach

Acties:
  • 0 Henk 'm!

  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 08:41

Kaastosti

Vrolijkheid alom!

...sorry... te late reply, was al meer duidelijkheid gegeven tijdens het tikken :)

[ Voor 65% gewijzigd door Kaastosti op 17-02-2003 17:10 ]

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


Acties:
  • 0 Henk 'm!

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 18-09 19:48

Crazy D

I think we should take a look.

Hoe haal je de gegevens uit de database? Met een vrij eenvoudige query (join) kun je de gegevens al netjes gesorteerd op category en bookmark uitlezen.

Exact expert nodig?


Acties:
  • 0 Henk 'm!

  • Wolfensteijn
  • Registratie: Maart 2000
  • Laatst online: 15-09 13:37
PHP:
1
mysql_query ( select * from bookmarks sort by category_id,name );


Op die manier haal ik de gegevens uit de database, dus dat zit volgens mij wel goed. En het gaat dus niet om het sorteren, maar wat de beste manier is om de gegevens op het scherm te zetten.

Acties:
  • 0 Henk 'm!

Verwijderd

Wolfensteijn schreef op 17 February 2003 @ 17:22:
PHP:
1
mysql_query ( select * from bookmarks sort by category_id,name );


Op die manier haal ik de gegevens uit de database, dus dat zit volgens mij wel goed. En het gaat dus niet om het sorteren, maar wat de beste manier is om de gegevens op het scherm te zetten.
Zou toch proberen om eea al in de query zelf te sorteren zoals al eerder is gezegd. MySQL kan dat stukken sneller dan dat jij dat met PHP kan realiseren

Acties:
  • 0 Henk 'm!

  • Wolfensteijn
  • Registratie: Maart 2000
  • Laatst online: 15-09 13:37
Het sorteren is het probleem niet, want gesorteerd is die al, op die punten waarop ik wil sorteren. Wat ik nu wil is dat ik de boel goed op het scherm kan tonen.

Voorbeeld van hoe het eruit zou moeten komen te zien:

Category 1
link 1
link 2

Category 3
link 3
link 4

Dus ook dat lege categoriën overgeslagen worden. En ik kan maar niet verzinnen hoe ik dat zou moeten doen.

Acties:
  • 0 Henk 'm!

Verwijderd

ff uit het blote handje:

PHP:
1
2
3
4
select Category.Name, Bookmark.Name 
from Category inner join Bookmarks 
on ( Category.Id = Bookmars.Category_Id) 
order by Category.Name;

[ Voor 4% gewijzigd door Verwijderd op 17-02-2003 17:48 . Reden: layout ]


Acties:
  • 0 Henk 'm!

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 18-09 19:48

Crazy D

I think we should take a look.

Wolfensteijn schreef op 17 February 2003 @ 17:33:
Het sorteren is het probleem niet, want gesorteerd is die al, op die punten waarop ik wil sorteren. Wat ik nu wil is dat ik de boel goed op het scherm kan tonen.
Bedenk hoe je het handmatig zou doen. Dus, loop record voor record het resultaat door. Als de categorie hetzelfde is als de vorige category, kun je de bookmark afdrukken. Is de category anders dan de vorige, plaats je de category omschrijving.

Afhankelijk van je query (al weet ik zo even niet of je in MySql heel veel verschillende manieren hebt ;)) kun je alleen die category'en (incl. de bookmarks) terugkrijgen uit de db die gevuld zijn, anders kun je alle category'en terugkrijgen, en zijn de gegevens uit de bookmarks-tabel null als die betreffende category geen bookmarks heeft. Die kun je dus eenvoudig overslaan.

Er is overigens al wel vaker een vraag geweest zoals deze (hoewel die vaak over menu met submenu's gaan) maar m'n hoofd :z een beetje dus ik zoek ff niet.

Exact expert nodig?


Acties:
  • 0 Henk 'm!

  • Wolfensteijn
  • Registratie: Maart 2000
  • Laatst online: 15-09 13:37
Crazy D, zo heb ik het eerst geprobeerd, met 2 MySQL query's, maar ik kwam er maar niet uit hoe ik er het beste doorheen kon lopen op zo'n manier dat hij lege categorien over zou slaan.

En bedankt delighteddennis, met die query opbouw lukte het me dus wel.

Nu maar eens gaan kijken hoe ik het admin gedeelte op ga zetten, dus hoe ik bookmarks toevoeg, wijzig en verwijder, en hetzelfde voor de categorien. Maar dat moet niet al te moeilijk zijn, vind ik ;)

Acties:
  • 0 Henk 'm!

  • esf
  • Registratie: Juni 2002
  • Laatst online: 21-02 08:56

esf

Het kan met 1 query. Je houdt in een variabele bij wat de groep van de laatst opgehaalde bookmark is en als de huidige daar van afwijkt, print je eenmaal de naam van de groep en zet je de variabele op de huidige groep. Dat lijkt me een gemakkelijke oplossing voor het probleem..

The hardest thing in the world to understand is the income tax. - Albert Einstein

Pagina: 1