Probleme bein Auslesen eines Arrays (Checkboxen)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Probleme bein Auslesen eines Arrays (Checkboxen)

    Hallo Coder

    mit folgendem Code lese ich erzeugte Arrays aus:

    Quellcode

    1. <?php
    2. if ($action == "1")
    3. {
    4. echo "<table>";
    5. $anzahlmessages = count($message);
    6. $cnt = 0;
    7. while($cnt < $anzahlmessages)
    8. {
    9. echo "<tr><td>Ueberschrift $cnt = </td><td>" . $ueberschrift[$cnt] . "</td></tr>";
    10. echo "<tr><td>Sprungmarke $cnt = </td><td>" . $sprungmarke[$cnt] . "</td></tr>";
    11. echo "<tr><td>Bild $cnt = </td><td>" . $bild[$cnt] . "</td></tr>";
    12. echo "<tr><td>Message $cnt = </td><td>" . $message[$cnt] . "</td></tr>";
    13. echo "<tr><td><hr></td><td></td></tr>";
    14. $cnt++;
    15. }
    16. echo "</table>";
    17. }
    18. ?>
    Alles anzeigen


    Mein Problem ist dass alle Felder richtig ausgelesen werden, auser die Checkboxen ($sprungmarke). Wenn ich zB. die dritte Checkbox markiert habe, wird das Value schon beim ersten Durchlauf der While-Schleife wie unten dargestellt ausgegeben.

    Ueberschrift 0 = Test-Überschrift 0
    Sprungmarke 0 = on
    Bild 0 = Test-Bild 0
    Message 0 = Test-Text0

    Ueberschrift 1 = Test-Überschrift 1
    Sprungmarke 1 =
    Bild 1 = Test-Bild 1
    Message 1 = Test-Text1

    Ueberschrift 2 = Test-Überschrift 2
    Sprungmarke 2 =
    Bild 2 = Test-Bild 2
    Message 2 = Test-Text2

    Was mache ich falsch? Bzw. wie kann ich bei nicht ausgewählten Checkboxen den Value "off" ausgeben?

    Grüße KMD
  • Falls das Problem am Auslesen liegt, setze an die Stelle mit der Sprungmarke einfach folgendes ein:

    Quellcode

    1. (empty($sprungmarke[$cnt]) ? 'off' : $sprungmarke[$cnt])

    Hinweis zur Syntax: (bedingung ? wenn ja : wenn nein)


    Aber dein Problem liegt wohl eher daran, dass du die Daten falsch speicherst.
    Du setzt die Variable wohl nur wenn sie true ist.

    Du solltest sie die Variable aber auch setzen, wenn sie false ist (kannst ja einfach false zuweisen).
  • Hallo d0nUt,

    ich stehe etwas auf dem Schlauch!

    >> Aber dein Problem liegt wohl eher daran, dass du die Daten falsch speicherst.
    >> Du setzt die Variable wohl nur wenn sie true ist.

    >>Du solltest sie die Variable aber auch setzen, wenn sie false ist (kannst ja
    >> einfach false zuweisen).

    Wie kann ich einer Checkbox bei unchecked den Wert false und bei checked den Wert true zuweisen? Ich habe doch nur das eine Attrivut Value !?

    Gruß KMD
  • Quellcode

    1. <script language="JavaScript">
    2. var tablcount = 1;
    3. function insert_table()
    4. {
    5. var fx = document.getElementById('textbloecke');
    6. var divlayer = document.createElement("div");
    7. divlayer.id = 'test[' + tablcount+']';
    8. var tabl = document.createElement("table");
    9. tabl.width = '100%';
    10. tabl.border = 1;
    11. var tablbody = document.createElement("tbody");
    12. var TR_1 = document.createElement("tr");
    13. var TD_1_1 = document.createElement("td");
    14. var TD_1_1_content0 = document.createElement("br");
    15. var TD_1_1_content1 = document.createTextNode('Ueberschrift-Nr. '+tablcount);
    16. var TD_1_1_content2 = document.createElement("br");
    17. var TD_1_1_content3 = document.createElement("input");
    18. TD_1_1_content3.type = 'text';
    19. TD_1_1_content3.name = 'ueberschrift[]';
    20. TD_1_1_content3.style.width='550px';
    21. var TD_1_1_content4 = document.createElement("input");
    22. TD_1_1_content4.type = 'checkbox';
    23. TD_1_1_content4.name = 'sprungmarke[]';
    24. TD_1_1_content4.value='true';
    25. var TD_1_1_content5 = document.createTextNode('Als Sprungmarke-Nr. '+tablcount+' einfuegen');
    26. var TD_1_1_content6 = document.createElement("br");
    27. var TD_1_1_content7 = document.createElement("br");
    28. var TD_1_1_content8 = document.createTextNode('Bild-Nr. '+tablcount);
    29. var TD_1_1_content9 = document.createElement("br");
    30. var TD_1_1_content10 = document.createElement("input");
    31. TD_1_1_content10.type = 'text';
    32. TD_1_1_content10.name = 'bild[]';
    33. TD_1_1_content10.style.width='550px';
    34. var TD_1_1_content11 = document.createElement("input");
    35. TD_1_1_content11.type = 'button';
    36. TD_1_1_content11.name = 'searchimg';
    37. TD_1_1_content11.value = 'Bild Suchen';
    38. TD_1_1_content11.style.width='120px';
    39. var TD_1_1_content12 = document.createElement("br");
    40. var TD_1_1_content13 = document.createElement("br");
    41. var TD_1_1_content14 = document.createTextNode('Text-Nr. '+tablcount);
    42. var TD_1_1_content15 = document.createElement("br");
    43. var TD_1_1_content16 = document.createElement("textarea");
    44. TD_1_1_content16.name = 'message[]';
    45. TD_1_1_content16.rows = 15;
    46. TD_1_1_content16.style.width='700px';
    47. var TD_1_1_content17 = document.createElement("br");
    48. var TD_1_1_content18 = document.createElement("input");
    49. TD_1_1_content18.type = 'button';
    50. TD_1_1_content18.onclick=new Function("TextBlockLoeschen("+tablcount+")");
    51. TD_1_1_content18.value = 'Text-Block Löschen';
    52. TD_1_1.appendChild(TD_1_1_content0);
    53. TD_1_1.appendChild(TD_1_1_content1);
    54. TD_1_1.appendChild(TD_1_1_content2);
    55. TD_1_1.appendChild(TD_1_1_content3);
    56. TD_1_1.appendChild(TD_1_1_content4);
    57. TD_1_1.appendChild(TD_1_1_content5);
    58. TD_1_1.appendChild(TD_1_1_content6);
    59. TD_1_1.appendChild(TD_1_1_content7);
    60. TD_1_1.appendChild(TD_1_1_content8);
    61. TD_1_1.appendChild(TD_1_1_content9);
    62. TD_1_1.appendChild(TD_1_1_content10);
    63. TD_1_1.appendChild(TD_1_1_content11);
    64. TD_1_1.appendChild(TD_1_1_content12);
    65. TD_1_1.appendChild(TD_1_1_content13);
    66. TD_1_1.appendChild(TD_1_1_content14);
    67. TD_1_1.appendChild(TD_1_1_content15);
    68. TD_1_1.appendChild(TD_1_1_content16);
    69. TD_1_1.appendChild(TD_1_1_content17);
    70. TD_1_1.appendChild(TD_1_1_content18);
    71. TR_1.appendChild(TD_1_1);
    72. tablbody.appendChild(TR_1);
    73. tabl.appendChild(tablbody);
    74. divlayer.appendChild(tabl);
    75. fx.appendChild(divlayer);
    76. tablcount++;
    77. }
    78. function TextBlockLoeschen (values) {
    79. // Text-Block löschen
    80. var textbloecke = document.getElementById("textbloecke");
    81. var divkontainer = document.getElementById('test['+values+']');
    82. var throwawayNode = textbloecke.removeChild(divkontainer);
    83. }
    84. </script>
    Alles anzeigen

    Quellcode

    1. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="ContentFormular" target="_blank">
    2. <div id="textbloecke">
    3. <table width="100%" border="1">
    4. <tbody>
    5. <tr>
    6. <td>Ueberschrift-Nr. 0<br>
    7. <input typ="text" name="ueberschrift[]" style="width:550px"><input type="checkbox" name="sprungmarke[]">Als Sprungmarke einfuegen
    8. <br><br>
    9. Bild-Nr. 0<br>
    10. <input typ="text" name="bild[]" style="width:550px"><input name="searchimg" type="button" id="searchimg" value="Bild Suchen">
    11. <br><br>
    12. Text-Nr. 0<br>
    13. <textarea name="message[]" rows="15" style="width:700px"></textarea></td>
    14. </tr>
    15. </tbody>
    16. </table>
    17. </div>
    18. <br><a href="javascript:insert_table();">Noch ein Textblock</a><br><br>
    19. <input type="submit" name="speichern" value="Speichern" class="sendbutton">
    20. <input type="hidden" name="action" value="1">
    21. </form>
    Alles anzeigen


    Noch was: hat zwar nichts mit dem eigentlichen Problem zu tun, aber vielleicht kannst Du mir kurz sagen ob die TD_1_1.appendChild(TD_1_1_content0) bis TD_1_1.appendChild(TD_1_1_content18) richtig gesetzt sind !?

    Danke u. Gruß KMD
  • Super! Das mit dem Durchnumerieren hat funktioniert, Danke!

    Nur noch eine Frage. Wie kann ich, da es keine feste Anzahl Felder gibt, über $_POST darauf zugreifen? Muss ich die Anzahl per Hidden-Field übergeben und in einer Schleife durchlaufen lassen? In etwa so?

    Quellcode

    1. $summemessages = $_POST['summemessages'];
    2. $cnt2 = 0;
    3. while($cnt2 < $summemessages)
    4. {
    5. $sprungmarke[$cnt2] = $_POST['sprungmarke[$cnt2]'];
    6. $cnt2++;
    7. }

    Oder gibt es eine einfachere Methode?

    Gruß KMD