Ankündigung

Einklappen
Keine Ankündigung bisher.

Checkboxen auslesen

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Checkboxen auslesen

    Hallo, hab wiedermal n Problem mit Checkboxen:

    Ich hab in nder Datenbank pro Datum ne unterschiedliche Anzahl an Datensätzen, Bsp: 07-12-2007->5 verschiedene, 08-12-2007->3 verschiedene.
    Nun hab ich ne Oberfläche gebastelt wo der User Pro Tag einen der Datensätze auswählen soll , ich bekomme es hin das er mir das Datum der gewählten Einträge anzeigt:
    Der Value der Checkboxen ist das Datum des Tages (und kommt aus der DB)
    PHP-Code:
    if (isset($_REQUEST['cbox']))
        {
          
    reset($_REQUEST['cbox']);
          
    $z=0;
          
    $i=0;
          foreach (
    $_REQUEST['cbox'] as $k => $v
          {
                print 
    "$v\n
    "
    ;
            }
            
    print_r($_REQUEST['cbox']);
        } 

    Jetzt möchte ich das er zu dem noch zwischen den Daten unterscheidet,
    Also das er mir sagt: zum 6.12 sind 3 Einträge ud zum 7. sind 1 Eintrag vorhanden.
    hat jemand eine Idee?
    Ausgabe derzeit:Array ( [0] => 2007-12-06 [1] => 2007-12-06 [2] => 2007-12-06 [3] => 2007-12-07 )

  • #2
    Hallo tommi89,

    um mehrere Informationen innerhalb eines Feldes zu übertragen, musst du dir eine Semantik einfallen lassen. Dazu kannst du beispielsweise

    Code:
    2007-12-07|7
    in das Value der Checkbox schreiben und diese Information hinterher (z.B. nächste Seite) entsprechend der Syntax auswerten. Grundsätzlich kann man einer Checkbox jedoch kein Array an Werten mitgeben.

    Kommentar


    • #3
      Ich glaube nicht, dass das ein Problem ist. Aber lösen musst du das primär im Formular, und erst nachher in der Verarbeitung. Dashalb wär der Code des Formulars wahrscheinlich hilfreicher.
      Sehr fortgeschritten finde ich die Frage übrigens nicht, aber ist ja egal.

      Kommentar


      • #4
        Re: Checkboxen auslesen

        Zitat von tommi89
        wo der User Pro Tag einen der Datensätze auswählen soll
        benutz Radio-Boxen, dafür sind sie da

        Kommentar


        • #5
          Radiobuttons sind nicht möglich, da er User Pro tag mehr als einen Auswählen kann...
          Code:
           <form action="brgin.php" method="post">
            <table>
              <tr>
                <td>Tag</td><td>datum</td><td>Essen</td><td>Auswahl</td>
              </tr>
            
            <?php
            	$res=essen();
            	#$a=0;
            	$zähler=0;
            	$heute=date("Y-m-d",time());
            	while($dbrow=mysql_fetch_array($res))
            	{
                    echo                substr($dbrow[3],-2).".".substr($dbrow[3],5,2).".".substr($dbrow[3],0,4)."</td><td>".$dbrow[2]."</td><td><input  type='checkbox' name='cbox[]' value='".$dbrow[3]."'/></td>";
          	echo "</tr>";
            	}
          	?>  
          	</table>
          	<input type="submit" name="eintrag" value="bestellen"/>
          	<?php
          	if (isset($_REQUEST['cbox']))
          	{
          	  reset($_REQUEST['cbox']);
          	  $z=0;
          	  $i=0;
          	  foreach ($_REQUEST['cbox'] as $k => $v) 
          	  {
          	  	echo $_REQUEST['cbox'][$k]."
          ";
            	  }
          		
          	}
          	else 
          	{
            		print "alle cbutton schlafen schon.\n";
          	}
          	?>
            </form>
          [/php]

          Kommentar


          • #6
            ähm warum benutzt du als value nicht einfach die ID deines Datensatzes?

            Kommentar


            • #7
              Entweder machst du das, die dr.e. schon geschrieben hat. Oder du machst zu jedem Datum noch ein "Hidden Field", in das du die Anzahl schreibst. Hier so einfach als Bsp:
              PHP-Code:
              <form action="brgin.php" method="post">
                <table>
                  <tr>
                    <td>Tag</td><td>datum</td><td>Essen</td><td>Auswahl</td>
                  </tr>
               
              <?php
                     $sql 
              "SELECT
                                 COUNT(*) anzahl
                                 datum db_datum,
                                 DATE_FORMAT(datum, '%d.%m.%Y') disp_datum,
                                 ...
                             FROM
                                 .....
                             GROUP BY datum"
              ;
                   
              $res mysql_query($sql) || die(mysql_error());

                   
              $zähler 0;
                   
              $heute date("Y-m-d"time());
                   while (
              $dbrow mysql_fetch_assoc($res))
                   {
                        echo 
              "<tr><td>" $dbrow['disp_datum'] . "</td>
                                  <td>" 
              $dbrow['anzahl'] . "</td>
                                  <td><input  type='checkbox' name='cbox[]' value='" 
              $dbrow['db_datum'] . "' />
                                      <input type='hidden' name='anzahl' value='" 
              $dbrow['anzahl'] . "'</td>
                                 </tr>"
              ;
                   }
              ?> 
                 </table>
                 <input type="submit" name="eintrag" value="bestellen"/>
              </form>
              <?php
                 
              if (isset($_POST['cbox']))
                 {
                   for (
              $i 0;$i count($_POST['cbox']);$i ++)
                   {
                      echo 
              $_REQUEST['cbox'][$i] . ": " $_POST['anzahl'][$i] . "
              "
              ;
                     }
                    
                 }
                 else
                 {
                      print 
              "alle cbutton schlafen schon.
              "
              ;
                 }
              ?>
              Natürlich kannst du das nicht direkt übernehmen, da ich deine Attribute ja nicht kenne.
              Hier siehst du übrigens auch noch, wie du mit date_format() die ganzen Substr-Orgien verhindern kannst.

              Kommentar


              • #8
                Wißt ihr alle schon, worauf ihr antwortet? Ich muß gestehen, ich habe die Aufgabe noch nicht begriffen. Deshalb versuche ich es mal mit W Fragen:

                @tommi89:

                - Was willst DU genau machen?
                - Wieviele Datensätze können denn nun ausgewählt werden (oben schreibst Du 1 pro Tag, unten auch mehrere)?
                - Wo passieren welche Aktionen, wo werden welche Daten benötigt?
                - Wie werden die Daten im Folgescript weiterverarbeitet?

                Laß uns nicht wild daruf los raten...

                Kommentar


                • #9
                  Sorry das Thema ist ein wenig komplex für Außenstehende, deswegen kann es sein das ich n paar info´s vergesse...

                  Ich will das bestimmte Kunden pro Tag einen Datensatz markieren können, aber eine bestimmte Anzahl nich überschreiten dürfen =>
                  das hab ich mit
                  PHP-Code:
                  array_count_values 
                  und nem gleichen Checkbox-namen (das Datum des Tages) hinbekommen...
                  Neues Problem:
                  Nun gibt es eine bestimmte Usergruppe welche anstatt der Checkboxen Eingabefelder habt, nun hab ich versucht das so ähnlich zu lösen wie bei den Checkboxen, haut auch fast hin, nur ist die ausgabe so:
                  PHP-Code:
                  Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => ....   [157] => [158] => [159] => ) 
                  so mit kann ich den werten nicht das zugehörige Inputfeld zuweisen...

                  der name der Inputs ist:
                  PHP-Code:
                  anzdata[] 

                  Kommentar


                  • #10
                    Sorry, ich kapier gar nix.

                    Zitat von tommi89
                    Ich will das bestimmte Kunden pro Tag einen Datensatz markieren können, aber eine bestimmte Anzahl nich überschreiten dürfen
                    Wie sollen sie das denn können? Nutze Radio- oder Checkboxes. Oder meinst Du serverseitig? Dann vergleiche den Key/Wert des Inputs mit einem Datensatz-Maximum. Den Du dann mit einer neuen Anfrage bestimmen mußt. Oder in einer Session zwischenspeichern (falls die Daten sehr veränderlich sind).
                    Zitat von tommi89
                    =>
                    das hab ich mit
                    PHP-Code:
                    array_count_values 
                    und nem gleichen Checkbox-namen (das Datum des Tages) hinbekommen...
                    Das Verfahren taugt auch nur etwas, wenn das Forumlar überhaupt benutzt wird.

                    Zitat von tommi89
                    Neues Problem:
                    Nun gibt es eine bestimmte Usergruppe welche anstatt der Checkboxen Eingabefelder habt, nun hab ich versucht das so ähnlich zu lösen wie bei den Checkboxen, haut auch fast hin, nur ist die ausgabe so:
                    PHP-Code:
                    Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => ....   [157] => [158] => [159] => ) 
                    so mit kann ich den werten nicht das zugehörige Inputfeld zuweisen...
                    ???
                    Zitat von tommi89
                    der name der Inputs ist:
                    PHP-Code:
                    anzdata[] 
                    ??? Welcher "Inputs"

                    Kommentar


                    • #11
                      Sorry nochmals...
                      das Problem mit den Checkboxen hab ich gelöst denk ich ma....
                      Hatte ich aber schon erwähnt...
                      da ich mit
                      PHP-Code:
                      php array_count_values 
                      die anzahl der geklickten Checkboxen PRO TAG bekomme welche ich dann nur noch auswerten muss....
                      ----------------------------------------------------------------------------
                      So, und dann hab ich weiter geschrieben:
                      Neues Problem:
                      Nun gibt es eine bestimmte Usergruppe welche anstatt der Checkboxen Eingabefelder habt, nun hab ich versucht das so ähnlich zu lösen wie bei den Checkboxen....
                      ----------------------------------------------------------------------------
                      Im ersten Satz steht Eingabefelder -> Texteingabefelder...
                      die haben den Namen <?php anzdata[] => also ein array, da ich die dynamisch erzeuge, je nach Anzahl der Datensätze in DB...
                      Nun hat der User pro Tag mindestens eine und je nach Anzahl der Datensätze nach oben offen und kann eine Zahl eingeben. Klickt er auf einen Submit Button wird das Formular abgeschickt und soll ausgewertet werden, der Bereich mit den Checkboxen läuft, nur bei den eingabefeldern klappt das nicht da ich die Arrayelemente nicht den TEXTeingabefeldern zuordnen kann:
                      Hier mal eine Ausgabe des Arrays mit den Inhalten der TEXTfelder:
                      PHP-Code:
                      Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => ....   [157] => [158] => [159] => ) 
                      Ich hoffe das ich das Problem jetzt genug beschrieben hab...

                      Kommentar


                      • #12
                        Ich kann mich nur wiederholen. Einfach als name des Feldes die ID des Datensatzes nehmen und als wert immer 1 (true). Die Beschriftung kannst du ja beliebig machen. Die maximale Anzahl dann mit count() abfangen (oder vorher mit JS) und fertig. Wo ist das Problem? Wenn du die IDs hast kannst du mit dem SQL Befehl IN() die Datensätze neu auslesen und hast dann auch die zugehörigen Daten.

                        Kommentar


                        • #13
                          Sorry hab nur die erste Seite gelesen aber ganz ehrlich ich verstehe nicht was es für einen Sinn hat checkboxen mit Textfeldern zu ersetzen...

                          Kommentar


                          • #14
                            Weil manche User ebend die Möglichkeit haben sollen, da auch ne Zahl einzugeben...
                            Kommt nicht von mir...

                            Kommentar


                            • #15
                              Ja und was wird geschrieben bei ner Checkbox? Oder soll die Checkbox nur um das eingabefeld erweitert werden? Sag mir mal um was für Daten es geht und was diese für einen Zweck haben, vielleicht kann ich mir (und andere sich) dann etwas mehr darunter vorstellen...

                              Kommentar

                              Lädt...
                              X