login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Formulier Controle (array)

Offline Ruultje - 01/06/2010 09:08
Avatar van RuultjeNieuw lid Ik heb een formulier waarin een bepaald veld vaker voorkomt. In het formulier zet ik bij de name (input veld) [] erachter. Nu wil ik de velden echter ook controleren. Maar daarmee kom ik in de problemen.

Stel:
<input type='text' name='voorbeeld[]'>

Deze komt drie keer voor bijvoorbeeld. Daarvan zijn 2 goed ingevuld en eentje verkeerd, veld 3 is verkeerd. Maar nu vinkt hij ze allemaal als fout aan en wanneer bijvoorbeeld alleen veld 1 verkeerd is vinkt hij alles goed aan (groene kleur voor letters).

Hoe kan ik controleren dat hij ziet welke van deze drie velden goed is en welke niet? Ik kom er maar niet achter.

Ik heb dit (even snel uit mijn hoofd dus er kan iets fouts bijzitten heb de code nu niet voor mij). Dit staat verder in een foreach loop.
  1. $eenError = array();
  2.  
  3. if(!is_isset($iType) || !is_string($iType))
  4. {
  5. $eenError['errorvoorbeeld'] = '';
  6. }


Goede waarden worden groen gekleurd, verkeerde rood verder op in dat formulier.

2 antwoorden

Gesponsorde links
Offline Jelmerholland - 01/06/2010 10:00
Avatar van Jelmerholland PHP beginner KAn je iets meer geven, want waar komt $iType vandaan?

Alsje ook even je <form> (Wat er toe doet) even kan posten, en wat meer php code kan laten zien.. zou denk ik wel helpen 
Offline Ruultje - 01/06/2010 13:09 (laatste wijziging 01/06/2010 20:35)
Avatar van Ruultje Nieuw lid Is goed. Ik was eerst met een testfile bezig. Ik zet hier de 'originele' neer. Voor een groot gedeelte:

Dit is een gedeelte van het formulier:

  1. <form method='post' name="formulier" action='index.php?page=controle'>
  2. <table class='controllabove'>
  3. <?php
  4. $sqlgroep = "SELECT * FROM groepen
  5. LEFT JOIN producten ON producten.groep = groepen.groepid
  6. WHERE groepid = 3
  7. GROUP BY producten.groep
  8. ";
  9.  
  10. $resgroep = mysql_query($sqlgroep);
  11. while ($row = mysql_fetch_array($resgroep))
  12. {
  13. ?>
  14. <tr>
  15. <td class='controlhead' width='130'> <b> <?php echo $row['groepnaam'] ?>: </b>
  16. <input type='hidden' class='operaform' name='groepnm[]' value='<?php echo $row['groepnaam']; ?>'>
  17. <input type='text' class='operaform' name='groepid[]' value='<?php echo $row['groepid']; ?>'></td>
  18. <td class='control' colspan='2'> <input type='text' class='operalform' name='type1[]' onmouseover="this.className='operalform hoverinput'" onmouseout="this.className='operalform'"/></td>
  19. </tr>
  20. <?php
  21. }
  22. ?>
  23. <tr>
  24. <td colspan='3' class='button'> <input type='submit' class='button' value='Verstuur'></td>
  25. </tr>
  26. </table>
  27. </form>


En wat erna komt:
  1. <form method='post' name="formulier" action='index.php?page=controle'>
  2. <table class='controllabove'>
  3. <?php
  4. $slpError = array(); // Error Array
  5.  
  6. // Foreach
  7. foreach ($_POST['type1'] as $key => $val)
  8. {
  9.  
  10. $iType = $_POST['type1'][$key];
  11. $iType = str_replace(",", ".", $iType);
  12. $iName = $_POST['groepnm'][$key];
  13. $iGroep = $_POST['groepid'][$key];
  14.  
  15. // Query
  16. $sqlgroep = "SELECT * FROM groepen
  17. LEFT JOIN producten ON producten.groep = groepen.groepid
  18. WHERE groepid LIKE '$iGroep'";
  19.  
  20. $resgroep = mysql_query($sqlgroep);
  21. $row = mysql_fetch_array($resgroep);
  22.  
  23.  
  24. // Controleren of de ingevulde waarde tussen de minimale en maximale waarde ligt
  25. if(!is_string($iType) || !is_numeric($iType) || $iType < $row['min'] || ( $iType > $row['max']))
  26. {
  27. $slpError['grouperror'] = 'Minimale waarde is '. round($row['min']) .' Maximale waarde is '. round($row['max']) .' en jij hebt '. $iType .' ('. $iGroep .')';
  28. }
  29.  
  30. // Foreach Sluiten
  31. }
  32. ?>
  33.  
  34. <?php
  35. // Als er geen fouten zijn versturen naar database
  36. $fouten = count($slpError);
  37.  
  38. if ($fouten == 0)
  39. {
  40. echo "versturen naar database";
  41. }
  42. else
  43. {
  44. foreach ($_POST['type1'] as $key => $value)
  45. {
  46. $iType = $_POST['type1'][$key];
  47. $iType = str_replace(",", ".", $iType);
  48. $iName = $_POST['groepnm'][$key];
  49. $iGroep = $_POST['groepid'][$key];
  50.  
  51. ?>
  52. <tr>
  53. <td class="good"> <?php echo $iName; ?></td><td class="good">
  54. <?php echo isset($slpError['grouperror']) ? '<input type="text" class="errorform" name="type1[]" value="'. $iType .'">': '<input type="text" class="goodform" name="type1[]" value="'. $iType .'">' ?>
  55. </tr>
  56. <input type='hidden' class='operaform' name='groepnm[]' value='<?php echo $iName; ?>'>
  57. <input type='hidden' class='operaform' name='groepid[]' value='<?php echo $iGroep; ?>'>
  58. <?php
  59.  
  60. // Sluit Foreach
  61. }
  62.  
  63. /* Sluit } else { */
  64. }
  65. ?>
  66. <tr>
  67. <td colspan='3' class='button'> <input type='submit' class='button' value='Verstuur'></td>
  68. </tr>
  69. </table>
  70. </form>


Bij dit formulier controleert hij trouwens of iets liggen tussen twee bepaalde getallen. De uitleg daarover bespaar ik jullie Dat gaat overigens goed. Alleen wil ik dus dat wanneer 1 veld niet goed is die rood gekleurd wordt en die wel juist is rood.


Edit:

Ik heb hier:
echo isset($slpError['grouperror'][$key])

Van gemaakt. Dan werkt het iets beter...... maar hij pakt altijd de eerste die is voorgekomen. Dus zeg maar de 0 van de loop. De volgende markeert hij dan als goed. Terwijl de eerste goed is en de tweede fout. Wanneer ik de eerste fout invul en de tweede goed dan is het wel goed.

Ik vermoed dat ik iets met de ID moet doen. Alleen weet ik momenteel niet hoe.

Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.242s