Gute Idee für grosse Anzahl von Checkboxen?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Das irgendwas mit meiner Schleife nicht in Ordnung ist, habe ich ja mittlerweise geahnt...

    Aber was meinst Du mit :
    mysql_fetch_row() holst du dir eine Zeile aus der Tabelle in einen Array
    Das weiss ich. So wie es vorher war, hats dann aber hübsch die restlichen Reihen auch geholt, so wie jetzt ja auch. Hätte ich mit mysql_num_row erst die Gesamtzahl holen sollen?

    Und dann sagst Du:
    Jetzt läuft die for-Schleife von 0 bis $y, gibt dabei $keyword[1][$i] aus (value der Checkboxen), obwohl $keyword nur ein eindimensionales Array ist. Ferner werden bei jeder Iteration 5 Checkboxen ausgegeben, aber zu allen der Wert von $keyword[0].
    Ja, eben! Das sehe ich ja auch so, aber warum denn? $y muss doch in der nächsten Zeile des Arrays wieder neue Werte annehmen... Wenn ich [$x] auch zu der Spalte keyword[0] innerhalb der <td>dazusetze, liefert er sowas aus: Action [0] Action [0+1] Action [0+2] Action [0+3] Action [0+4], eigentlich ja ganz brav, aber nur für die eine Zeile ???

    $keyword[0] ist ja die Spalte. Es gibt nur zwei (wie Du schon sagtest, eindimensional...) $keyword[1] ist die ID, [0] ist der Text...

    Ach büdde .... Lass noch mal Gnade walten...

    Ich verspreche auch, dass ich zukünftig die Funktionen von Grund auf neu schreibe, und nicht irgendwas von anderen ableite oder umschreibe... Und ich muss das mit den Testausgaben wirklich mal lesen. Das mach ich nämlich wirklich nicht...

    Danke aber nochmal für deine Zeit und deine Gedanken...

    Gruß, Miriam

    Kommentar


    • #17
      Nix mit Gnade, keine Ausflüchte mit "nachstes Mal" ... jetzt!
      Testausgaben sind doch so einfach, füge nach while() mal

      var_dump($keywords);

      ein und nach for() bitte mindestens

      var_dump($x, $y, $keyword[0], $keyword[1]);

      kannst aber auch gern noch die $keyword[..][$x+..] mit ausgeben.

      Kommentar


      • #18
        Mmhh, hab' ich natürlich gleich gemacht...

        Nach einfügen von:
        $y = count($keywordsid);
        for ($x=0;$x<$y;$x+=5)
        var_dump($x, $y, $keywordsid[0], $keywordsid[1]); {
        und:
        while ($keyword = mysql_fetch_array($keywordsid))
        var_dump($keyword);

        Wenn ichs im Browser aufrufe, kommt dies:

        array(4) { [0]=> string(7) "Action " ["keyword"]=> string(7) "Action " [1]=> string(1) "1" ["keywordnr"]=> string(1) "1" } array(4) { [0]=> string(21) "Ärztliche Tätigkeiten" ["keyword"]=> string(21) "Ärztliche Tätigkeiten" [1]=> string(1) "3" ["keywordnr"]=> string(1) "3" } array(4) { [0]=> string(10) "Anleitung " ["keyword"]=> string(10) "Anleitung " [1]=> string(1) "2" ["keywordnr"]=> string(1) "2" } array(4) { [0]=> string(10) "Ausbildung" ["keyword"]=> string(10) "Ausbildung" [1]=> string(1) "4" ["keywordnr"]=> string(1) "4" } array(4) { [0]=> string(13) "Auslandshilfe" ["keyword"]=> string(13) "Auslandshilfe" [1]=> string(1) "5" ["keywordnr"]=> string(1) "5" } array(4) { [0]=> string(10) "Bedürftige" ["keyword"]=> string(10) "Bedürftige" [1]=> string(1) "6" ["keywordnr"]=> string(1) "6" } array(4) { [0]=> string(11) "Behinderung" ["keyword"]=> string(11) "Behinderung" [1]=> string(1) "7" ["keywordnr"]=> string(1) "7" } array(4) { [0]=> string(18) "Bekleidungsausgabe" ["keyword"]=> string(18) "Bekleidungsausgabe" [1]=> string(1) "8"....

        Wo soll ich denn die var_damps für die $x+n einsetzen? Auch bei den Tabellen?

        Also nochmal: ich bin ja wohl schwer von Begriff...
        Die Verbindung zur DB besteht... Mit: $allekeywordssql = "SELECT * FROM keywords"; $keywordsid = mysql_query($allekeywordssql);
        habe ich doch als Ergebnis in $keywordsid das gesamte Query aus dem Select.

        Dann zähle ich durch mit $y = count($keywordsid);
        for ($x=0;$x<$y;$x+=5)
        {
        Nach dem Zählen sage ich, es sollen die $keyword aus dem Gesamt-SQL
        während dem while ($keyword = mysql_fetch_array/row($keywordsid)) { für ein Feld $fieldname umbenannt werden in keyword, damit ich sie später mit der Übergabe beim submit als "keyword = 1" etc. wieder abholen kann. Außerdem sollen während dem while die Checkboxen (oder radios) um die ganze Zeile, also Spalte keyword [1] und keyword[0] dazugesetzt werden... Dafür das echo"<input type...

        Jetzt will ich doch eigentlich nur, dass die Ausgabe des while zu je 5 Tabellenzellen erfolgt. Dafür habe ich zuerst gezählt. Mich interessieren ja noch nicht mal übriggebliene <td>'s, die mir vielleicht später auch noch Sorgen machen und mit colspan zusammengefasst werden müssen. Erstmal will ich einfach nur je 5 gruppieren. Und dazu sage ich den ersten 5 Einträgen, sie sollen $x+n aus den vorher eingelesenen Zeilen dazusetzen, und dann so weiter. Aha: woher weiss denn $keyword aus Spalte 1 oder 0, dass es jetzt eine Reihe weiter gehen muss???

        Kann ich var_dump immer und jederzeit irgendwo zwischensetzen, um zu gucken?

        Danke nochmal...
        Miriam

        Kommentar


        • #19
          Original geschrieben von DiePicknickerin
          Mit: $allekeywordssql = "SELECT * FROM keywords"; $keywordsid = mysql_query($allekeywordssql);
          habe ich doch als Ergebnis in $keywordsid das gesamte Query aus dem Select.

          Dann zähle ich durch mit $y = count($keywordsid);
          Nein, in $keywordsid hast du bis jetzt lediglich die Ressource ID.

          Auf diese count() anwenden zu wollen, ist allerdings ziemlicher Unfug.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #20
            Je länger du deine Finger dran hast, desto wilder schießts ins Kraut. Vielleicht wirfst du dein Gewusel mal weg und kehrst zurück zu dem Code, mit dem du den Thread erföffnet hast. Der war doch gar nicht schlecht ...

            Kommentar


            • #21
              Also....

              Ich habs jetzt für mich gelöst, nicht besonders elegant, aber immerhin was gelernt...

              Nachdem Ihr mich schon in die Richtung geschubst habt, die Zählerei von mysql_fetch_row mal sein zu lassen und wohl auch von vorne anzufangen, habe ich jetzt das gemacht:

              PHP-Code:
              $keywordsid mysql_query($allekeywordssql);
                  
              $out "<div class='textblock'><table cellspacing='2px' cellpadding='5px'><tr>";
                  
              $i 0;
                  while (
              $keyword mysql_fetch_row($keywordsid)){
                  if(
              $i == 2) {
                  
              $out .="</tr><tr>";    
                      
              $i 0;        
                  } 
                  
              $fieldname "keyword";
                  
              $out .= "<td><input type='radio' name='$fieldname' value='$keyword[1]' class='input'> $keyword[0]<br></td>";
              $i++;
                          }
                  
              $out .="</tr></table><br /></div>";
                      echo 
              $out;
                  echo 
              "<input type='submit' name='senden'>"
              Ich habe einfach 1 Variable genommen, um den Output der Tabelle zu steuern ($out), und eine Zählervariable. Nun gebe ich also der 1. Instanz von $out den Anfang der Tabelle mit, setze meinen Zähler auf null, gehe dann mit mysql_fetch_row durch meine DB-Reihen und zähle dabei meinen Zähler weiter. Wenn der Zähler 2 hat, oder auch mehr, je nachdem wieviele Spalten meine Tabelle bekommen soll, dann hänge ich an mein $out die Tabellenreihe an und setze den Zähler wieder auf null. So gehts dann weiter, bis ich durch mysql_fetch_row durch bin. Zum Schluß hänge ich dann das Ende der Tabelle an $out ran. Fertig is der Lack. Mönsch.... bin ich nu stolz auch mich

              Gruß, Miriam

              Kommentar

              Lädt...
              X