login  Naam:   Wachtwoord: 
Registreer je!
 Forum

TemplatePower, dropdown menu

Offline Ultimatum - 20/10/2006 14:12
Avatar van UltimatumPHP expert Ey, ik wil nu templatepower gebruiken omdat de overzichtelijkheid van bepaalde pagina's nihil word alleen loop ik tegen het vogende probleem aan:

op contact.php heb ik een drop down menu met gegevens die in een array staan, ik gebruik dan ook een foreach. Daarna ga ik gelijk controleren of de waarde die ingevuld was klopt met een andere array zodat mensen die niet meer hoeven in te vullen als ze een fouten maken, maar ik kom er niet uit.

Dit is die dropdown

  1. <div class='rechts'>
  2. <select name='categorie' size='1' class='text'>
  3. <option value=''>-- Kies een categorie --</option>
  4. <?php
  5. foreach($categorie as $value)
  6. {
  7. if($value == $post['categorie'])
  8. {
  9. ?>
  10. <option value='<?= $value ?>' selected='selected'><?= ucfirst($value) ?></option>
  11. <?php
  12. }
  13. else
  14. {
  15. ?>
  16. <option value='<?= $value ?>'><?= ucfirst($value) ?></option>
  17. <?php
  18. }
  19. }
  20. ?>
  21. </select>
  22. </div>

12 antwoorden

Gesponsorde links
Offline Thomas - 20/10/2006 14:13
Avatar van Thomas Moderator En dit wil je omzetten naar een PHP-bestand + een template-bestand?
Offline Ultimatum - 20/10/2006 14:16
Avatar van Ultimatum PHP expert Ja, als dat mogelijk is want heb net een kwartier hier mee lopen spelen en antwoorden zoeken (hier op de site en in de manual van templatepower)
Offline Thomas - 20/10/2006 15:03
Avatar van Thomas Moderator Gebruik BLOCKs:

Template:
  1. <div class='rechts'>
  2. <select name='categorie' size='1' class='text'>
  3. <option value=''>-- Kies een categorie --</option>
  4. <!-- START BLOCK : OPTION -->
  5. <option value="{VAL}"{SEL}>{TXT}</option>
  6. <!-- END BLOCK : OPTION -->
  7. </select>
  8. </div>


PHP:
  1. <?php
  2. foreach($categorie as $value)
  3. {
  4. /**
  5. * Start een nieuw BLOCK - de BLOCK-naam moet uniek zijn binnen het geheel van templates
  6. */
  7.  
  8. $tpl->newBlock("OPTION");
  9.  
  10. /**
  11. * Ken waarden toe aan de template-variabelen (mits van toepassing)
  12. */
  13.  
  14. $tpl->assign(array(
  15. "VAL" => $value,
  16. "SEL" => (($value == $post['categorie']) ? ' selected="selected"' : ''), // is $post het $_POST array?
  17. "TXT" => ucfirst($value)
  18. ));
  19. }
  20.  
  21. /**
  22.  * Terugkeren naar het ROOT-BLOCK (of bovenliggende BLOCK) - NIET VERGETEN!
  23.  */
  24.  
  25. $tpl->gotoBlock("_ROOT");
  26. ?>
Offline Ultimatum - 20/10/2006 15:05 (laatste wijziging 20/10/2006 15:21)
Avatar van Ultimatum PHP expert bedankt, werkt perfect.

Edit: Heb nog een vraagje dat hier mee te maken heeft:

Eerst deed ik:
  1. <?php
  2. $post = array(
  3. 'naam' => htmlentities($_POST['naam']),
  4. 'email' => htmlentities($_POST['email'])
  5. );
  6. ?>


maar hoe kan ik dat in een assign verwerken?

dus dat ik een waarde krijg aan een geposte waarde als er dus een fout was tijdens het versturen van de formulier.
Offline Thomas - 20/10/2006 16:51
Avatar van Thomas Moderator Niet van blokken gebruik maken, maar gewoon van template-variabelen?

  1. <?php
  2. foreach($post as $key => $val)
  3. {
  4. // gebruik het standaard voorvoegsel "POST_"
  5. $tpl->assign("POST_".strtoupper($key), $val);
  6. }
  7. ?>


  1. <input type="text" name="naam" value="{POST_NAAM}" />
  2. <input type="text" name="email" value="{POST_EMAIL}" />


?

Easy 8).
Offline Ibrahim - 20/10/2006 23:29
Avatar van Ibrahim PHP expert FangorN, waarom:

  1. <?php
  2. /**
  3.  * Terugkeren naar het ROOT-BLOCK (of bovenliggende BLOCK) - NIET VERGETEN!
  4.  */
  5.  
  6. $tpl->gotoBlock("_ROOT");


?? ik heb namelijk nooit de functie van begrepen...
Offline Ultimatum - 21/10/2006 12:38 (laatste wijziging 21/10/2006 15:25)
Avatar van Ultimatum PHP expert Alweer een vraag...

In mijn contact formulier wil ik dat als alles goed is ingevuld dat er dan staat dat hij verstuurd is en dan wil ik niet dat het formulier weer getoond word. heb het al met if(!isset($form)) { geprobeerd en dan $form = true;, maar voordat ik met templatepower werkte lukte dat wel en nu niet meer, dus ik denk dat ik iets verkeerd heb heb gedaan met mijn blokken. Ben er vannacht al een uur of 2 mee bezig geweest en kom er niet uit 

contact.php
http://plaatscode.be/2931
contact.tpl
http://plaatscode.be/2932/

@siliecom14: dit staat op de site over gotoBlock:

Citaat:
De functie gotoBlock() verplaatst de 'blokpointer' naar het blok bloknaam, om deze het actieve blok te maken. Dit is handig wanneer je terug wil gaan naar een al reeds eerder gemaakt blok, om daar variabelen een waarde toe te kennen.


edit: is er een editor die .tpl bestand hightlight? Want nu is het zo saai zwart en als het net de kleuren van html oid heeft dan werkt dat iets fijner (vind ik)
Offline GTW - 21/10/2006 15:27
Avatar van GTW Gouden medaille

PHP gevorderde
Dreamweaver, frontpage, en colgen smij elke andere fatsoenlijke HTML editor.
Offline Ultimatum - 22/10/2006 22:39
Avatar van Ultimatum PHP expert Oke, al mijn bovenstaande problemen zijn verholpen alleen weer een fout 

Ik heb een pagina systeem maar de navigatie zelf komt helemaal bovenaan in plaats van onderaan waar ik het had neergezet. Ik ben erachter dat dat komt omdat ik het echo in de functie maar hoe kan ik dit dan omzeilen 

admin.php
  1. <?php
  2. $tpl->newBlock('navigatie');
  3. $tpl->assign('paginas', nav($max, '?p=admin/admin&amp;menu=gb&amp;mod=gb&amp;act=wijzig', 'SELECT COUNT(*) as Num FROM gastenboek', $pg));
  4. ?>


admin.tpl
  1. <!-- START BLOCK : navigatie -->
  2. <table cellpadding='0' cellspacing='0'>
  3. <tr>
  4. <td><b>Pagina:</b></td>
  5. <td>{paginas}</td>
  6. </tr>
  7. </table>
  8. <!-- END BLOCK : navigatie -->


functie:

  1. <?php
  2. function nav($max, $url, $query, $pg)
  3. {
  4. $results = mysql_result(mysql_query("$query"),0) or die(mysql_error());
  5.  
  6. $total = ceil($results / $max);
  7.  
  8. if($pg > 1)
  9. {
  10. echo '<a href='.$url.'&amp;pg='.($pg - 1).'>&laquo; Vorige</a> ';
  11. }
  12.  
  13. for($i = 1; $i <= $total; $i++)
  14. {
  15. if(($pg) == $i)
  16. {
  17. echo '<b>['.$i.']</b> ';
  18. }
  19. else
  20. {
  21. echo '<a href='.$url.'&amp;pg='.$i.'>'.$i.'</a> ';
  22. }
  23. }
  24.  
  25. if($pg < $total)
  26. {
  27. echo ' <a href='.$url.'&amp;pg='.($pg + 1).'>Volgende &raquo;</a>';
  28. }
  29. }
  30. ?>


Ik snap echt niet waarom het helemaal bovenaan komt want ik het het toch naast de tekst pagina gedefineerd? Die tekst komt namelijk wel gewoon goed 
Offline Gerard - 22/10/2006 23:37
Avatar van Gerard Ouwe rakker return de waarde dan in plaats van te echoën.
Offline Ultimatum - 22/10/2006 23:51
Avatar van Ultimatum PHP expert Hmm dat had ik eerst, maar toen had ik gewoon overal return voor gezet en kreeg toen maar 1 ding terug. Heb het nu zo opgelost + denk dat Proximus het ook zo bedoelde 

  1. <?php
  2. function nav($max, $url, $query, $pg)
  3. {
  4. $nav = '';
  5.  
  6. $results = mysql_result(mysql_query("$query"),0) or die(mysql_error());
  7. $total = ceil($results / $max);
  8.  
  9. if($pg > 1)
  10. {
  11. $nav .= '<a href='.$url.'&amp;pg='.($pg - 1).'>&laquo; Vorige</a> ';
  12. }
  13.  
  14. for($i = 1; $i <= $total; $i++)
  15. {
  16. if(($pg) == $i)
  17. {
  18. $nav .= '<b>['.$i.']</b> ';
  19. }
  20. else
  21. {
  22. $nav .= '<a href='.$url.'&amp;pg='.$i.'>'.$i.'</a> ';
  23. }
  24. }
  25.  
  26. if($pg < $total)
  27. {
  28. $nav .= ' <a href='.$url.'&amp;pg='.($pg + 1).'>Volgende &raquo;</a>';
  29. }
  30.  
  31. return $nav;
  32. }
  33. ?>
Offline Thomas - 23/10/2006 09:47
Avatar van Thomas Moderator @siliecom:
Als je in een BLOCK zit, dan werk je met een andere "scope". Alleen de template-variabelen binnen dat BLOCK zijn dan bekend.

Ik heb dit al eens toegelicht in een TemplatePower-tutorial.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.291s