Yael: Arbeitstage sperichern

Hallöchen,

wie würdet ihr die Arbeitstage speichern in diesen ich arbeiten möchte (muss). Mein Gedanke war so

  
  <p>  
    <label for="mo_von"></label>  
    <select name="mo_von" id="mo_von">  
      <option value="00:00">00:00</option>  
    </select>  
  
    <label for="mo_bis"></label>  
    <select name="mo_bis" id="mo_bis">  
      <option value="00:00">00:00</option>  
    </select>  
    bis  
    <label for="mo_von_1"></label>  
    <select name="mo_von_1" id="mo_von_1">  
      <option value="00:00">00:00</option>  
    </select>  
  
    <label for="mo_bis_1"></label>  
    <select name="mo_bis_1" id="mo_bis_1">  
      <option value="00:00">00:00</option>  
    </select>  
  </p>  
  <p>  
    <input type="checkbox" name="nach_absprache_montag" id="nach_absprache_montag">  
    <label for="nach_absprache_montag"></label>  
    nach Terminvereinbarung  
  </p>  

das ganze mal 7 (Montag - Sonntag) kommt mir irgendwie sehr viel Code vor. Geht es einfacher z.B. mit PHP und sollte ich EINE Tabelle mit 56 Spalten nehmen? Kommt mir irgendwie alles bisschen zu kompliziert gedacht vor.

  1. hi,

    Programmiertechnik beginnt mit der Überlegung einer zweckmäßigen Datenstruktur womit:

    1. Dein Script/Programm arbeiten kann
    2. eine Darstellung erzeugt werden kann
    3. die Daten gespeichert werden können

    Auf gehts :)

    1. Programmiertechnik beginnt mit der Überlegung einer zweckmäßigen Datenstruktur womit:

      1. Dein Script/Programm arbeiten kann
      2. eine Darstellung erzeugt werden kann
      3. die Daten gespeichert werden können

      Genau.

      Was du mit deinen Daten machen willst, ist der entscheidende Punkt. Dann erst kann es darum gehen, wie du gewisse Eingabemasken gestaltest.

      Matthias

      --
      Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Ball und Ballast.

    2. Hi,

      1. Dein Script/Programm arbeiten kann

      Das Script kennt diese Option derzeit noch gar nicht daher bin ich diesbezüglich frei :)

      1. eine Darstellung erzeugt werden kan

      Die Darstellung sollte später wie folgt aussehen

      Mo:      10:00 - 22:00
      Di:      07:00 - 15:00
      Mi:      Nach Absprache
      Sa - So: 20:00 - 04:00 Uhr

      Kommt also drauf an was eingetragen ist! Kann auch mal so aussehen

      Mo - So: 10:00 - 22:00

      Oder auch so

      Nach Absprache

      1. die Daten gespeichert werden können

      Ich hab noch keine Tabelle in meiner Datenbank angelegt. Meine Überlegung war eben dass ich für jeden Mitarbeiter eine Spalte anlege und dahinter dann alle Wochentrage einfüge. Die nicht genutzt werden, bleiben einfach frei. Bei der Ausgabe prüfe ich dann mit PHP ob ein Eintrag da ist wenn ja dann zeigen wenn nein eben nicht zeigen.

      Alternativ könnte ich mir auch vorstellen eine Tabelle mit id – UserID – Tag – Zeit und alles wird schmerzfrei untereinander eingetragen. Gehe aber davon aus, dass das bearbeiten sprich das laden der Einträge hier doch um einiges schwerer ist wie wenn ich eine Spalte mit ALLEN eintragen vor mir habe.

      Schön wäre es wenn ich sagen könnte „Nach Absprache“ gilt für ALLE Tage. Dann sollten die Uhrzeiten nicht mehr anwählbar sein (muss aber nicht sein).

      Hoffe ich konnte deine Frage richtig beantworten dass wir zum nächsten Schritt kommen :)

      1. Hallo,

        hab noch etwas vergessen!

        Es wird später mit diesen Daten NICHT gerechnet. Diese Daten werden nur für die Teamseite genutzt um zu sehen wann jemand erreichbar ist.

        1. Hallo,

          Es wird später mit diesen Daten NICHT gerechnet. Diese Daten werden nur für die Teamseite genutzt um zu sehen wann jemand erreichbar ist.

          Spätestens für die Darstellung muss mit den Daten gerechnet werden können. So sind Mo,Di,Mi… als Literale auch keine aufeinanderfolgende Tage, sie sind es erst nach einem Mapping, z.B. so:
          1 => Mo, 2 => Di, 3 => Mi usw.

          Für die Zeiten "unter Tage" würde ich ein Raster machen, je nach Anforderung, bspw. halbstündlich (1 => 00:00 - 00:30, 2 => 00:30 - 01:00 usw).

          Dann hätten wir z.B. für den Montag:
          1 => [1,2] womit sich rechnerisch ein 1 => 00:00 - 01:00 Uhr ergibt.

          (aufeinanderfolgende Raster-Elemente können miteinander verbunden werden)

          Und dann wird das an einen Mitarbeiter 'gehängt':
          'Willi' => {
              1 => [3,6, 9],
              2 => [],
          },
          'Oskar' => {} usw.

          Zum Speichern solcher Strukturen gibt es fertige Algorithmen, die sowas ganz einfach serialisiert in einer Datei ablegen.

          MfG

          --
          Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
          1. Danke für deine Antwort. Ist aber viel zu kompliziert für mich. Werde wohl einfach ein Textfeld einfügen wo jeder etwas reinschreiben kann. Sieht dann zwar Mega scheiße aus aber ich bekomme es anderes nicht hin. Vielleicht lasse ich auch etwas programmieren wenn es nicht so teuer ist muss ich mal schauen.

            1. Danke für deine Antwort. Ist aber viel zu kompliziert für mich. Werde wohl einfach ein Textfeld einfügen wo jeder etwas reinschreiben kann. Sieht dann zwar Mega scheiße aus aber ich bekomme es anderes nicht hin. Vielleicht lasse ich auch etwas programmieren wenn es nicht so teuer ist muss ich mal schauen.

              Es geht nichts über ein ehrliches Statement :)

              SCNR;)

              --
              Lieber ganz tot, als halbtot.
              1. Beim Abendbrot ist mir gerade noch eine Idee gekommen die vielleicht etwas einfacher ist.

                1.) Ich wähle einen User aus
                2.) Klicke auf Arbeitszeiten hinzufügen
                3.) Nun sehe ich alle Tage (Montag – Sonntag)
                4.) Kann pro Tag die Arbeitszeit wählen inkl. eine Checkbox „Auf Anfrage“
                5.) Alle Daten werden in einer Tabelle gespeichert (in einer Reihe oder Untereinander)

                Das würde ich noch hinbekommen bis auf vielleicht etwas JS um zu sagen wenn Checkbox angeklickt, dann bitte die Felder davor NICHT beschreibbar machen.

                Jetzt kommt aber das schwere. Beim Auslesen sollte ich so vor gehen (Meine Idee)

                1.) Alle Wochentage pro User holen
                2.) Schauen ob es gleiche Uhrzeiten bzw. Optionen gibt
                3.) Wenn keine gleiche Werte zur Verfügung stehen dann einfach untereinander ausgeben
                4.) Wenn es gleiche Werte gibt, dann schauen welche zusammen passen (von der Uhrzeit her, diese Bündeln und ausgeben z.B. so:

                Di:      07:00 - 15:00
                Mi:      Nach Absprache
                Sa - So: 20:00 - 04:00 Uhr

                Ist diese Idee umsetzbar und wenn ja, ist das vergleichen und ausgeben schwer? Punkt 1 & 3 ist ja kein Problem. Nur 2 & 4 keine Ahnung ob und wie das geht. Vielleicht kann mir hier jemand helfen.

                1. hi,

                  Sa - So: 20:00 - 04:00 Uhr

                  Ist diese Idee umsetzbar und wenn ja, ist das vergleichen und ausgeben schwer?

                  Freilich ist sowas umsetzbar: Du iterierst über Mo,Di,Mi,Do,Fr,Sa,So (1..7) und wenn irgendwo die Unterzeiten gleich sind, bekommst Du z.B.
                      "6 und 7" => "gleiche Zeiteinträge"
                  und, weil 6 und 7 aufeinanderfolgend sind, kannst Du
                       6 - 7 bzw. Sa - So
                  somit ausgeben.

                  Punkt 1 & 3 ist ja kein Problem. Nur 2 & 4 keine Ahnung ob und wie das geht. Vielleicht kann mir hier jemand helfen.

                  Algorithmus siehe oben :)
                  Fürs Frontend geht da sicher irgendeine Terminverwaltungs-JQuery-Sache umzubiegen…

                  MfG

                  1. Freilich ist sowas umsetzbar: Du iterierst über Mo,Di,Mi,Do,Fr,Sa,So (1..7) und wenn irgendwo die Unterzeiten gleich sind, bekommst Du z.B.
                        "6 und 7" => "gleiche Zeiteinträge"
                    und, weil 6 und 7 aufeinanderfolgend sind, kannst Du
                         6 - 7 bzw. Sa - So
                    somit ausgeben.

                    Ich hab nun eine Tabelle angelegt diese sieht so aus, ist dieses OK?

                      
                    CREATE TABLE IF NOT EXISTS `zeiten` (  
                    `z_id` int(11) NOT NULL,  
                      `z_teamID` varchar(200) NOT NULL,  
                      `z_mo` varchar(5) NOT NULL,  
                      `z_mo_bis` varchar(5) NOT NULL,  
                      `z_di` varchar(5) NOT NULL,  
                      `z_di_bis` varchar(5) NOT NULL,  
                      `z_mi` varchar(5) NOT NULL,  
                      `z_mi_bis` varchar(5) NOT NULL,  
                      `z_do` varchar(5) NOT NULL,  
                      `z_do_bis` varchar(5) NOT NULL,  
                      `z_fr` varchar(5) NOT NULL,  
                      `z_fr_bis` varchar(5) NOT NULL,  
                      `z_sa` varchar(5) NOT NULL,  
                      `z_sa_bis` varchar(5) NOT NULL,  
                      `z_so` varchar(5) NOT NULL,  
                      `z_so_bis` varchar(5) NOT NULL  
                    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;  
                    
                    
                  2. Hallo,

                    meine Datenbankabfrage sieht derzeit so aus

                      
                    	$z_zeiten = $mysqli->prepare("SELECT z_id,  
                    					 z_teamID,  
                    					 z_mo,  
                    					 z_mo_bis,  
                    					 z_di,  
                    					 z_di_bis,  
                    					 z_mi,  
                    					 z_mi_bis,  
                    					 z_do,  
                    					 z_do_bis,  
                     					 z_fr,  
                     					 z_fr_bis,  
                     					 z_sa,  
                    					 z_sa_bis,  
                     					 z_so,  
                     					 z_so_bis  
                    				 FROM zeiten  
                    				 WHERE z_teamID=?");  
                    							  
                        $z_zeiten->bind_param("s", $teamID);  
                        $z_zeiten->execute();  
                        $z_zeiten->bind_result($z_id,  
                    			   $z_teamID,  
                    			   $z_mo,  
                    			   $z_mo_bis,  
                    			   $z_di,  
                    			   $z_di_bis,  
                    			   $z_mi,  
                    			   $z_mi_bis,  
                    		           $z_do,  
                    			   $z_do_bis,  
                    			   $z_fr,  
                    		           $z_fr_bis,  
                    			   $z_sa,  
                    		 	   $z_sa_bis,  
                    			   $z_so,  
                    			   $z_so_bis  
                    		 );  
                        $z_zeiten->fetch();  
                        $z_zeiten->close();  
                      
                    
                    

                    Ich weiß man könnte es alles in eine Zeile schreiben aber ich mag es übersichtlich. Wie müsste ich das nun mit dem Vergleichen machen?

                  3. Hallo,

                    so meine HTML Ausgabe habe ich auch fertig

                      
                        		<?php if (strlen($z_mo) > 0): ?>  
                                    Mo: <?php echo $z_mo;?> - <?php echo $z_mo_bis;?><br>  
                                    <?php endif;?>  
                        		<?php if (strlen($z_di) > 0): ?>  
                                    Di: <?php echo $z_di;?> - <?php echo $z_di_bis;?><br>  
                                    <?php endif;?>  
                        		<?php if (strlen($z_mi) > 0): ?>  
                                    Mi: <?php echo $z_mi;?> - <?php echo $z_mi_bis;?><br>  
                                    <?php endif;?>  
                        		<?php if (strlen($z_do) > 0): ?>  
                                    Do: <?php echo $z_do;?> - <?php echo $z_do_bis;?><br>  
                                    <?php endif;?>  
                        		<?php if (strlen($z_fr) > 0): ?>  
                                    Fr: <?php echo $z_fr;?> - <?php echo $z_fr_bis;?><br>  
                                    <?php endif;?>  
                        		<?php if (strlen($z_sa) > 0): ?>  
                                    Sa: <?php echo $z_sa;?> - <?php echo $z_sa_bis;?><br>  
                                    <?php endif;?>  
                        		<?php if (strlen($z_so) > 0): ?>  
                                    So: <?php echo $z_so;?> - <?php echo $z_so_bis;?>  
                                    <?php endif;?>  
                    
                    

                    jetzt fehlt mir noch das Gruppieren :( das bekomme ich einfach leider nicht hin.

                    1. Om nah hoo pez nyeetz, Yael!

                      jetzt fehlt mir noch das Gruppieren :( das bekomme ich einfach leider nicht hin.

                      Definiere Gruppieren. Es handelt sich dann bestimmt um ein CSS-Problem. Zeig dazu bitte den Link auf die Seite, sodass man auch einen Blick auf das Formular werfen kann.

                      Matthias

                      --
                      Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Messie und Messier-Katalog.

            2. Om nah hoo pez nyeetz, Yael!

              Danke für deine Antwort. Ist aber viel zu kompliziert für mich. Werde wohl einfach ein Textfeld einfügen wo jeder etwas reinschreiben kann. Sieht dann zwar Mega scheiße aus aber ich bekomme es anderes nicht hin. Vielleicht lasse ich auch etwas programmieren wenn es nicht so teuer ist muss ich mal schauen.

              Aber den Inhalt des Textfeldes musst du ja auch irgendwo speichern. HTML kann das nicht leisten.

              Matthias

              --
              Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Halle und Halleffekt.

              1. Hallo Matthias,

                Aber den Inhalt des Textfeldes musst du ja auch irgendwo speichern. HTML kann das nicht leisten.

                Das ist ja wirklich kein Problem :) Gespeichert wird mit PHP in einer MySQL Tabelle wo sich auch weitere Teamdaten befinden.

  2. Hello,

    wie würdet ihr die Arbeitstage speichern in diesen ich arbeiten möchte (muss). Mein Gedanke war so

    <p>
        <label for="mo_von"></label>
        <select name="mo_von" id="mo_von">
          <option value="00:00">00:00</option>
        </select>

    <label for="mo_bis"></label>
        <select name="mo_bis" id="mo_bis">
          <option value="00:00">00:00</option>
        </select>
        bis
        <label for="mo_von_1"></label>
        <select name="mo_von_1" id="mo_von_1">
          <option value="00:00">00:00</option>
        </select>

    <label for="mo_bis_1"></label>
        <select name="mo_bis_1" id="mo_bis_1">
          <option value="00:00">00:00</option>
        </select>
      </p>
      <p>
        <input type="checkbox" name="nach_absprache_montag" id="nach_absprache_montag">
        <label for="nach_absprache_montag"></label>
        nach Terminvereinbarung
      </p>

      
    Was Du hier zeigst, ist nicht die Speicherung von Daten, sondern ein Teil der Erfassung.  
    Es fehlen jetzt also noch die Speicherung, die Darstellung und die Verarbeitung.  
      
    Außerdem würde man derartige Formulare, die Du hier ansatzweise zeigst, automatisiert erzeugen. Beschäftige Dich also am besten mit einer Programmiersprache für die Serverseite deiner Erfassung.  
      
    1\. Programmiersprache ausgucken  
    2\. Datenstruktur für den genauen Anwendungsfall festlegen  
    3\. Erfassungs- und Darstellungsformular \_einmal\_ festlegen  
    4\. dieses Formular dann sooft per Programmierung erzeugen, wie es für einen \_Datensatz\_  
       benötigt wird.  
    5\. Formular ausfüllen lassen  
    6\. Formularwerte an den Server übertragen und dort die Werte prüfen  
      
       Schritt 4 bis 6 sooft wiederholen, bis alles auswertbar ausgefüllt wurde  
       (Suchbegriff: -> Affenformular)  
    7\. Daten speichern z.B. in Datenbank oder sonstiger Datenhaltung  
      
      
    Liebe Grüße aus dem schönen Oberharz  
      
      
    Tom vom Berg  
    ![](http://selfhtml.bitworks.de/Virencheck.gif)  
      
    
    -- 
     ☻\_  
    /▌  
    / \ Nur selber lernen macht schlau  
    [Die ultimative Seite für Selbermacher](http://getscript.de/)