login  Naam:   Wachtwoord: 
Registreer je!
 Forum

array naar tekst

Offline lau - 01/01/2007 17:02
Avatar van lauHTML interesse Ik heb nu een output als dit:
  1. Array ( [8] => 1 [6] => 1 [2] => 1 [0] => 1 )

Maar hoe geef ik dit weer in gewoon tekst?

Dus
$pw[0] = 'beheer nieuws';
$pw[1] = 'beheer poll';
$pw[2] = 'beheer groep';
$pw[3] = 'beheer gebruikers';
$pw[4] = 'beheer artikelen';
etc ...

In dit geval moet dus [0], [2], [6] en [8] worden weergegeven met checked (voor checkboxjes) en de overige dus niet.
Maar ik loop vast bij het weergeven...

9 antwoorden

Gesponsorde links
Offline Ibrahim - 01/01/2007 17:56
Avatar van Ibrahim PHP expert
  1. <?php
  2.  
  3. $pw = array('nieuws',
  4. 'poll',
  5. 'groep',
  6. 'gebruikers',
  7. 'artikelen');
  8.  
  9. $array = array( 8 => 1,
  10. 6 => 1,
  11. 2 => 1,
  12. 0 => 1 ); // dit snap ik niet echt, mja
  13.  
  14. foreach( $array as $key => $value )
  15. {
  16. echo 'beheer ' . $pw[ $key_of_value_ik_snap_je_array_niet ] . '<br />';
  17. }
  18. ?>
Offline lau - 01/01/2007 18:22
Avatar van lau HTML interesse Laat ik het anders zeggen.
Ik heb een aantal checkboxjes waar je gebruikers een aantal rechten kan meegeven. Ik werk volgens het machten-systeem.

Mijn checkbox ziet er zo uit:
<input id="r01" type="checkbox" name="rechten[]" value="1" />
<input id="r02" type="checkbox" name="rechten[]" value="1" />
<input id="r03" type="checkbox" name="rechten[]" value="1" />
etc.....

Hoe kan ik ervoor zorgen dat er nadat je op submit drukt, hij alle aangevinkte checkboxjes berekend naar de goede waarde.
1e checkbox moet 2^0 = 1 opleveren, 2e moet 2^1 = 2 opleveren, 3e moet 2^2 = 4 opleveren etc...
Stel dat ik checkbox 1 en 3 heb aangevinkt, dan moet er na een berekening 5 uitkomen.
Maar hoe doe ik dit? (dit is zowat vraag 1 waar ik ook tegenaan loop).

Zodra er een waarde is opgegeven en je wilt een gebruiker bewerken door een ander recht op te geven, moet je deze weer aanpassen a.d.h.v. checkboxjes die al gechecked zijn. Maar ik loop hier ook op een probleem.
Offline Stijn - 01/01/2007 18:42
Avatar van Stijn PHP expert oké , je wilt dus UNIX achterna doe dan gewoon het volgende hé slimmerik:

  1. <input id="r01" type="checkbox" name="rechten[]" value="<?php echo pow( 2 , 0); ?>" />
  2. <input id="r02" type="checkbox" name="rechten[]" value="<?php echo pow( 2 , 1); ?>" />
  3. <input id="r03" type="checkbox" name="rechten[]" value="<?php echo pow( 2 , 2); ?>" />
  4.  
  5. <?php
  6. foreach( $_POST['rechten'] as $k => $v ) {
  7.  
  8. $recht += $v;
  9.  
  10. }
  11. echo $recht;
  12. ?>


snappie?
Offline lau - 01/01/2007 20:11 (laatste wijziging 01/01/2007 20:15)
Avatar van lau HTML interesse Jah... I get it... zat weer eens moeilijk te denken.
Weet je ook een simpele manier om het terug te draaien?
Dus stel dat ik 37 heb (dat is dus 1e, 3e en 6e checkbox bij elkaar), dat ik de 1e, 3e en 6e checkboxjes aangevinkt krijg.
Dat was oorspronkelijk mijn slecht gestelde vraag in post 1.

edit:
Overigens, wat doet dit eigenlijk?
as $k => $v
Ik weet dat je alle waarde naar $k veranderd, maar wat doet $v?
Offline Ibrahim - 01/01/2007 20:56
Avatar van Ibrahim PHP expert $k == key van de POST array, dus $_POST[$k]
$v == value van de POST array, dus $_POST[$k] = $v;
Offline lau - 02/01/2007 20:52
Avatar van lau HTML interesse Maar is er ook een simpele manier terug?
Ik bedoel, ik kan ook de oudewetse ifjes onder elkaar planten en dat gebruiken wat ik heel onhandig vind.
Offline Ultimatum - 02/01/2007 20:55
Avatar van Ultimatum PHP expert Nee, foreach is speciaal voor arrays

nu kan je zowel de key als de value gelijk gebruiken
Offline Stijn - 02/01/2007 21:07
Avatar van Stijn PHP expert je bedoelt van een getal terug die rechten? Je kan onthouden welke er aangevinkt waren (mysql of file) en met php terug aanvinken. Misschien dat het kan van een getal zijn oorspronkelijk producten te vinden maar in mijn verstand brand er geen lichtje 
Offline lau - 02/01/2007 21:15 (laatste wijziging 02/01/2007 22:44)
Avatar van lau HTML interesse Jah... het getal (37 zeg maar) wordt opgeslagen in mysql. Dat is geen probleem. Maar het getal terug naar die rechten... ik heb geen flauw idee hoe.

Ik heb wat codes getest, maar dit is fout (qua checkboxjes, die kloppen niet)... wellicht dat dit jullie op een idee brengen.
  1. <?php
  2. echo '<form method="post">';
  3. $dec = 37;
  4. for ($i = 0; $dec > 0; $i++) {
  5. if ($dec % 2 == 1) {
  6. $recht = $i + 1;
  7. echo $recht.'<br />';
  8. echo '<input type="checkbox" name="rechten[]" value="'.pow(2,$i).'"';
  9. if (pow(2,0) == $recht) {
  10. echo 'checked="checked"';
  11. }
  12. echo ' /> Mag prijzen zien<br />';
  13. echo '<input type="checkbox" name="rechten[]" value="'.pow(2,1).'"';
  14. if (pow(2,1) == $recht) {
  15. echo 'checked="checked"';
  16. }
  17. echo ' /> Mag in beheer groep<br />';
  18. echo '<input type="checkbox" name="rechten[]" value="'.pow(2,2).'"';
  19. if (pow(2,2) == $recht) {
  20. echo 'checked="checked"';
  21. }
  22. echo ' /> Mag in beheer categorie<br />';
  23. echo '<input type="checkbox" name="rechten[]" value="'.pow(2,3).'"';
  24. if (pow(2,3) == $recht) {
  25. echo 'checked="checked"';
  26. }
  27. echo ' /> Mag in beheer producten<br />';
  28. echo '<input type="checkbox" name="rechten[]" value="'.pow(2,4).'"';
  29. if (pow(2,4) == $recht) {
  30. echo 'checked="checked"';
  31. }
  32. echo ' /> Mag in beheer gebruikers<br />';
  33. echo '<input type="checkbox" name="rechten[]" value="'.pow(2,5).'"';
  34. if (pow(2,5) == $recht) {
  35. echo 'checked="checked"';
  36. }
  37. echo ' /> Mag in beheer nieuws<br />';
  38. }
  39. $dec >>= 1;
  40. }
  41. echo '<br /><input type="submit" value="submit"></form>';
  42. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.213s