13. februar 2007 - 13:04Der er
11 kommentarer og 1 løsning
Genhente poster til der ikke er flere
Jeg har koden nedenfor som skal integreres i vores intranet side (websitebaker). koden jeg har fungerer fint dog skal den bare genhente poster indtil der ikke er flere.
Jeg har modificeret den lidt og ham som har skrevet koden har ikke tænkt sig godt nok om omkring at hente flere poster, i hans version hentede den bare en gang til også selv om der ikke var flere poster.
Mit problem er bare jeg ikke lige helt ved hvordan jeg skal få den til at genhente indtil der ikke er flere aktive poster.
indholdet tabelen er:
group_id med værdi mellem 3-5 active hvor værdi skal være 1 title shot_content link
pointen er at den skal hente poster hvor group_id = 3 og hvor active = 1 indtil der ikke er flere derefter skal den hente hvor group_id = 4 og hvor active =1 og til sidst hvor group_id = 5.
men ellers så kører jeg dem bare enkeltvis på group_id
<?php // Specify read more text $readmore = "Læs mere"; // Specify news text
// Query for obtaining stuff from a group $query = "SELECT * FROM ".TABLE_PREFIX."mod_news_posts WHERE group_id = 3 ORDER BY position DESC LIMIT 0, 10;";
// No changes needed here, maybe for output! global $database; $result = $database->query($query); $total = $result->numRows(); // how many items are there? if ($total>0) { // at least 2 needed for 2 news items $data = $result->fetchRow() ; // get left item
Det jeg i bund og grund ville gøre var: $query = "SELECT * FROM ".TABLE_PREFIX."mod_news_posts WHERE group_id = 3 ORDER BY position DESC LIMIT 0, 10;"; $result = $database->query($query); $total = $result->numRows(); // how many items are there? if($total == 0) { //Gør det samme med group id = 4 //Tjek om $total == 0 //Gør det samme med group id = 5 //Tjek om $total == 0 //Er den også 0, så er alt ok... }
Du kan evt. lave det i en for($group_id = 3; $group_id <= 5; $group_id++) { //Lav sql med group_id = $group_id if($total > 0) { //Udskriv data... } }
Det kan også være du kunne lave: WHERE group_id IN (3,4,5)
Kan du måske forklare lidt nærmere hvordan du ønsker de skal vises? Vil du først have alle med gruppe id = 3? Eller vil du have dem vist på samme tid? Altså 3, 4 og 5?
Ja det er ikke let når man ikke ved hvad, nu skal jeg prøve at forklare :-)
Jeg har følgende tabel med felter:
database_tabel: mod_news_posts group_id active title content_short link
tabelens indhold skal hentes hvor group_id =3 active=1
['title'] ['content_short'] ['link']
disse skal hentes ind og vises til der ikke er flere der opfylder kravene.
Bagefter vil jeg hente hvor group_id =4 active=1
og til sidst hvor group_id =5 active=1
Men med de sidste to kan jeg bare indsætte koden igen, det er ikke så vigtigt.
Det er det med at hente alle der opfylder kriteriet der er problemet. I men kode ovenfor henter den det kun engang hvilket gør at det kun er den nyeste post der bliver hentet. Håber det forklarer det bedre.
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.