login  Naam:   Wachtwoord: 
Registreer je!
 Forum

TemplatePower: Maar 1 cijfer in mijn $_POST?

Offline ranco - 28/11/2007 14:32 (laatste wijziging 28/11/2007 23:49)
Avatar van rancoPHP gevorderde Hallo mensen,

Ik ben een volledige website met TemplatePower aan het maken.
Nu ben ik tegen zoiets vreemds aangelopen, ik krijg de fout maar niet gevonden. Ik ben een formulier aan het maken waarbij mensen een optreden kunnen inplannen en meerdere artiesten kunnen opgeven in de agenda.

Ik zal eerst de situatie laten zien, en dan vertel ik het probleem. Dit is het gedeelte uit mijn .tpl. Hierin worden alle artiesten uit de database geladen en in een select gestopt. Daarnaast wordt in een vorig formulier aangegeven hoeveel artiesten ingevoegd dienen te worden, dit wordt dan ook automatisch gedaan. Zo ziet mijn .tpl eruit waar artiesten uit gekozen kunnen worden:

  1. <div class="agbasic" style="width: 580px; margin-left: 50px;">
  2. <font style="color:#408080;">Artiesten</font></b></center>
  3. <br /><center>
  4. <table border="0" width="550px;">
  5. <tr>
  6. <td width="150px"><center><b>Artiest</center></b></td>
  7. <td width="30px"><b><center>Begint</center></b></td>
  8. <td width="30px"><b><center>Eindigd</center></b></td>
  9. <td width="75px"><b><center>Optionele info</center></b></td>
  10. </tr>
  11. <!-- START BLOCK : Inputs -->
  12. <tr>
  13. <td width="150px"><Select name="{Inputname}" style="width: 200px;">
  14. <!-- START BLOCK : Artist -->
  15. <option value="{Id}">{Artistname}</option>
  16. <!-- END BLOCK : Artist -->
  17. </select>
  18. </td>
  19. <td width="30px">
  20. <input name="{beginid}" size="6">
  21. </td>
  22. <td width="30px">
  23. <input name="{eindid}" size="6">
  24. </td>
  25. <td width="95px">
  26. <input name="{infoid}" size="28">
  27. </td>
  28. </tr>
  29. <!-- END BLOCK : Inputs -->


Hij maakt het aantal selects aan voor het aantal artiesten. Dit werkt prima.

Dit is de code waarmee ik dit genereer:


  1. for ($i=1; $i<=$trimpost; $i++){
  2. $tpl->newBlock("Inputs");
  3. $qry = "SELECT Id, Artiestnaam FROM artists";
  4. $rs = mysql_query($qry) or die ("Error while retrieving artistlist: ". mysql_error());
  5. while($aarr = mysql_fetch_assoc($rs)){
  6. $tpl->newBlock("Artist");
  7. $tpl->assign(array("Id" => $aarr["Id"],
  8. "Artistname" => $aarr["Artiestnaam"]));
  9. }$tpl->gotoBlock("Inputs");
  10. $tpl->assign(array("Inputname" => "Artiest".$i,
  11. "beginid" => "Begin".$i,
  12. "eindid" => "Eind".$i,
  13. "infoid" => "Info".$i));
  14. $tpl->gotoBlock("_ROOT");


Trimcode is het aantal inputs die gegenereerd dienen te worden.
Nu post ik dit bovenstaand formulier, en krijg ik de waarde uit van mijn artiestid prima terug.Maar de begintijd wordt afgekapt. Ik krijg alleen maar het eerste cijfer te zien als ik mijn post echo, terwijl ik er steeds 4 in het formulier zet.

Heeft iemand enig idee hoe dit kan? Als ik als begintijd dus 11:30 aangeef (of zelfs 1130) dan zie ik alleen maar een 1 staan ....

Weet iemand hoe dit kan?  

6 antwoorden

Gesponsorde links
Offline Ultimatum - 28/11/2007 15:47
Avatar van Ultimatum PHP expert Misschien moet je het type nog eens aangeven? Want dat doe je niet eens..

  1. <input type="text" name="{beginid}" size="6">
Offline ranco - 28/11/2007 23:12
Avatar van ranco PHP gevorderde Nee, dit werkt niet, en de manier waarop je hebt brengt bevalt me niet echt. Maargoed.
Iemand anders een oplossing?
Offline Stijn - 28/11/2007 23:59
Avatar van Stijn PHP expert Voor de inhoud moet je niet size aan 6 gelijk stellen maar moet je maxlength aan 6 gelijk stellen.
Offline Gerard - 29/11/2007 04:05
Avatar van Gerard Ouwe rakker Je herhaalt velden met dezelfde name. Je moet dus gebruik maken van een constructie waar de naam ook [] meekrijgt om een array te genereren in je POST request.
Offline ranco - 29/11/2007 08:37 (laatste wijziging 29/11/2007 10:57)
Avatar van ranco PHP gevorderde @stijn1989, okay.. klopt, maar dat zal weinig effect hebben op mijn fout 

@Proximus, dat kan in eerste instantie wel lijken, maar dit is niet het geval. Namen die tussen {} staan zijn variabelen die gevuld worden door mijn phpscript. Het idee achter templatepower is dat er in je htmlcode geen phpcode staat. Het zijn dus twee aparte files. Daarnaast heb ik de broncode van mijn gegenereerd formulier bekeken en de veldnamen volgen elkaar netjes op.

Edit: Oplossing!
Ik denk dat er iets verkeerd ging met de naamgeving van de sessievariabelen. Ik heb het op talloze manier geprobeerd, maar nu heb ik het eindelijk voor elkaar gekregen. Ik stop ze nu gewoon in een dubbele array (array binnen array). Nu worden de waardes wel volledig weergegeven. De code die ik nu hiervoor gebruik:

  1. $t = 1;
  2. $aantal = $_SESSION["Add_schedule_AmountArtists"];
  3. for ($i=0; $i<$aantal; $i++){
  4. $Artiestenarr[$i] = Array("Begin" => $_POST["Begin".$t],
  5. "Eind" => $_POST["Eind".$t],
  6. "Artiestid" => $_POST["Artiest".$t],
  7. "Extrainfo" => $_POST["Info".$t]);
  8. $t++;
  9. }
Offline Thomas - 30/11/2007 16:37
Avatar van Thomas Moderator Misschien is dit makkelijker:

<input name="begin[{id}]" size="6" /> etc.
en $tpl->assign(array('id' => $i))

Te verwerken met $_POST['begin'][X], met X een id.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.218s