login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[TP]Geneste blokken werken niet (Opgelost)

Offline ranco - 10/12/2008 17:53
Avatar van rancoPHP gevorderde Ik werk met Template power en heb 2 blokken waarbij blok 2 genest is in blok 1. Het doel van het script is om de namen van alle leden weer te geven. Hij stopt nu alleen na de letter A en ik krijg het maar niet gevonden waar het aan zou kunnen liggen.
De goto statements heb ik ook al op allerlei manieren verschoven, maar dat werkt ook niet. Enig idee waarom ik alleen maar de leden krijg te zien met de beginletter a?

De phpcode:
  1. $alfabet = array('A','B','C',"D","E","F","G","H","I","J","K","L","M","N",
  2. "O","P","Q","R","S","T","U","V","W","X","Y","Z");
  3. foreach ($alfabet as $letter){
  4. $tpl->newBlock("Users".$letter);
  5. $tpl->assign(array("Letter" => $letter));
  6. $qry = "SELECT Userid, Username
  7. FROM users
  8. WHERE Username LIKE '".$letter."%'
  9. OR Username LIKE '".Strtolower($letter)."%'
  10. ORDER BY Username ASC";
  11. $rs = mysql_query($qry) or die ("Error while retrieving userdata: ". mysql_error());
  12. while ($arr = mysql_fetch_assoc($rs)){
  13. $tpl->newBlock("Users".$letter."Names");
  14. $tpl->assign(array("Username" => stripslashes($arr["Username"]),
  15. "Id" => $arr["Userid"]));
  16. }
  17. $tpl->gotoBlock("Users".$letter);
  18. }
  19. $tpl->gotoBlock("_ROOT");


De html code:
  1. <!-- START BLOCK : UsersA -->
  2. <b>{Letter}</b>
  3. <!-- START BLOCK : UsersANames -->
  4. <a href="user_profile.php?id={Id}" class="view"> {Username}</a><br />
  5. <!-- END BLOCK : UsersANames -->
  6. <!-- END BLOCK : UsersA -->

4 antwoorden

Gesponsorde links
Offline Wim - 10/12/2008 17:58
Avatar van Wim Crew algemeen waarom een gotoBlock? die mag weg volgens mij (lijn 17).

Verder, die array kan je vervangen door range('A','Z'), da's mss wat korter & overzichtelijker
Offline ranco - 11/12/2008 14:04
Avatar van ranco PHP gevorderde Dat is inderdaad wat korter, maar mijn probleem is helaas nog steeds niet opgelost.. iemand een idee?
Offline Gerard - 11/12/2008 14:33 (laatste wijziging 11/12/2008 14:37)
Avatar van Gerard Ouwe rakker Probeer het eens op deze manier. Het is namelijk sowieso niet de bedoeling dat je voor elke letter een rij aan gaat maken.

  1. <!-- START BLOCK : websiteUsers -->
  2. <b>{Letter}</b>
  3. <!-- START BLOCK : websiteUser -->
  4. <a href="user_profile.php?id={Userid}" class="view">{Username}</a><br />
  5. <!-- END BLOCK : websiteUser -->
  6. <!-- END BLOCK : websiteUsers -->


  1. foreach (range('A'. 'Z') as $letter){
  2.  
  3. $tpl->newBlock('websiteUsers');
  4. $tpl->assign('Letter', $letter);
  5.  
  6. $getUsers = mysql_query("SELECT Userid, Username
  7. FROM users
  8. WHERE UPPER(Username) LIKE '" . mysql_real_escape_string($letter) . "%'
  9. ORDER BY Username ASC");
  10.  
  11. while ($websiteUser = mysql_fetch_assoc($getUsers)) {
  12.  
  13. $websiteUser = array_map('stripslashes', $websiteUser);
  14. $websiteUser = array_map('htmlspecialchars', $websiteUser);
  15.  
  16. $tpl->newBlock('websiteUser');
  17. $tpl->assign($websiteUser);
  18.  
  19. }
  20.  
  21. $tpl->gotoBlock('_ROOT');
  22.  
  23. }
Offline ranco - 11/12/2008 18:55
Avatar van ranco PHP gevorderde Nou, in dit geval is het wel nodig om 2 blokken te gebruiken voor ieder letter omdat ik in een later stadium per letter een div ga maken wel in- en uitklapbaar is.

Nu kan ik dit wel 26 keer handmatig doen, maar daar bestaat juist PHP o.a. voor... omdat het sneller en efficiënter te maken.

Het zou dus een oplossing geweest zijn als ik maar 1 div nodig had.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.255s