ilch Forum » Ilch Clan 1.1 » Allgemein » Wer trainiert wann

Geschlossen
  1. #1
    User Pic
    Neutralos Mitglied
    Registriert seit
    22.04.2007
    Beiträge
    118
    Beitragswertungen
    0 Beitragspunkte
    Hallo Leute,
    ich möchte gerne eine Modul haben, bin mir aber nicht sicher, ob es sowas schon gibt.

    Es soll für User möglich sein, (am besten im Kalender) einzutragen ob und wie spät sie am entsprechenden Tag trainieren.

    Also das ganze soll den Zweck haben, dass man, wenn sich alle fleißig eintragen, schnell checken kann, wer heute trainiert. Ich stelle mir das so vor, man klickt im Kalender z.B auf den heutigen Tag und dann stehen da meinetwegen 4 Usernamen mit 4 Uhrzeiten, sodass derjenige weiß wer an der Beachvolleyballanlage ist und dort trainiert.

    Gibt es sowas ähnliches schon so oder kann mir jnd. helfen das zu coden?

    Gruß Neutralos;)
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Wenn alle das Kalendermodulrecht haben, können sie doch eintragen, wann sie Trainieren, nicht ganz optimal, aber sollte funktionieren.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Neutralos Mitglied
    Registriert seit
    22.04.2007
    Beiträge
    118
    Beitragswertungen
    0 Beitragspunkte
    Kann man es denn auch so machen, dass man auf der Seite (also nicht im Adminbereich) auf den Kalender klickt und sich dann dort einträgt. Also kalender.htm erweitern mit 2 Feldern Uhrzeit, Name, die dann durch Abschicken im Kalender eingetragen werden?
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Man kann vieles machen und das ist sicher kein Problem, nur muss es jemand machen.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Neutralos Mitglied
    Registriert seit
    22.04.2007
    Beiträge
    118
    Beitragswertungen
    0 Beitragspunkte
    Ja das stimmt;)
    Aber du kannst doch sicherlich einschätzen wie viel Aufwand das ungefähr bedeuten würde?
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Neutralos Mitglied
    Registriert seit
    22.04.2007
    Beiträge
    118
    Beitragswertungen
    0 Beitragspunkte
    Hilfe?


    Zuletzt modifiziert von Neutralos am 30.04.2008 - 18:12:57
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    Neutralos Mitglied
    Registriert seit
    22.04.2007
    Beiträge
    118
    Beitragswertungen
    0 Beitragspunkte
    Hallo ich habe es jetzt geschafft den Kalender in mein Standarddesign einzubinden. Aber wenn man einen Termin einträgt/löscht springt er danach wieder ins Admindesign zurück.
    Wo muss ich das ändern?
    Hier die komplette php.Datei:
    <?php
    # Kalender Script © by Nickel
    # ueberarbeitet
    
    defined ('main') or die ( 'no direct access' );
    
    //-----------------------------------------------------------|
    
    $title = $allgAr['title'].' :: Beachkalender';
    $hmenu = 'Beachkalender';
    $design = new design ( $title , $hmenu );
    $design->header();
    
    $tpl = new tpl ( 'beachkalender.htm' );
    
    
    # Funktionen
    function XAJAX_showCalendar ($m,$j,$f) {
      if (empty($m)) { $m = date('n'); }
      if (empty($j)) { $j = date('Y'); }
    
      $objResponse = new xajaxResponse();
    
      $content = '<table border="0" cellpadding="1" cellspacing="1" class="border"><tr><td class="Cnorm"><a href="javascript:close'.$f.'();">schliessen</a></td></tr></table>';
      $content .= getCalendar($m, $j, 'javascript:void(0);" onclick="set'.$f.'(\'{jahr}-{mon}-{tag}\')', 'javascript:void(0);" onclick="xajax_XAJAX_showCalendar({mon},{jahr},\''.$f.'\')', '');
    
      $objResponse->assign('skalender'.$f, 'style.display', 'block' );
      $objResponse->assign('skalender'.$f, 'innerHTML', $content);
    
      # return object
      return $objResponse;
    }
    
    function checkzyklusins ($x,$i0,$i1,$i2,$z,$sar) {
      $ts = mktime(0,0,0,$i1,$i2,$i0);
      $wt = date('w',$ts);
      if ($z == 'wer' AND ($wt > 0 AND $wt < 6)) {
        return (true);
      } elseif ($z == 'wek' AND ($wt == 0 OR $wt == 6)) {
        return (true);
      } elseif ($z == 'woc' AND (($x % 7) == 1)) {
        return (true);
      } elseif ($z == '14t' AND (($x % 14) == 1)) {
        return (true);
      } elseif ($z == 'mon' AND ($i2 == $sar[2])) {
        return (true);
      } elseif ($z == 'jae' AND ($i1 == $sar[1] AND $i2 == $sar[2])) {
        return (true);
      }
    
      return (false);
    }
    
    function zyklusinsert ($sar,$ear,$z,$_POST) {
      $x = 1;
      $first_id = 0;
      for($i0=$sar[0];$i0<=$ear[0];$i0++) {
        $sm = 1;
        $em = 12;
        if ($sar[0] == $i0) { $sm = $sar[1]; }
        if ($ear[0] == $i0) { $em = $ear[1]; }
        for($i1=$sm;$i1<=$em;$i1++) {
          $st = 1;
          $et = date('t', mktime (0,0,0,$i1,1,$i0));
          if ($sar[0] == $i0 AND $sar[1] == $i1) { $st = $sar[2]; }
          if ($ear[0] == $i0 AND $ear[1] == $i1) { $et = $ear[2]; }
          for($i2=$st;$i2<=$et;$i2++) {
            if (checkzyklusins ($x,$i0,$i1,$i2,$z,$sar)) {
              $time = mktime ($_POST['stunde'], $_POST['minute'],0,$i1,$i2,$i0);
              db_query("INSERT INTO `prefix_kalender` (time,gid,title,text,recht) VALUES (".$time.",".$first_id.",'".$_POST['title']."','".escape($_POST['txt'],'string')."','".$_POST['recht']."')");
              if ($first_id == 0) {
                $first_id = db_last_id();
                db_query("UPDATE prefix_kalender SET gid = ".$first_id." WHERE id = ".$first_id);
              }
            }
            $x++;
          }
        }
      }
    }
    
    # AJAX Start
    $xajax = new xajax('http://'.$_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"].'?kalender=0');
    $xajax->registerFunction("XAJAX_showCalendar");
    $xajax->processRequest();
    
    # DESIGN
    
    
    # AJAX ausgabe
    echo $xajax->printJavascript();
    
    if (!empty($_REQUEST['um'])) {
      $sar   = explode('-',$_POST['begind']);
      if (!@checkdate ($sar[1], $sar[2], $sar[0])) {
        echo 'Das eingegebene Datum ist nicht g&uuml;ltig ';
        echo '<a href="javascript:history.back()">zur&uuml;ck</a>';
        $design->footer(1);
      }
      if (!empty($_POST['zende'])) {
        $ear   = explode('-',$_POST['zende']);
        if (!@checkdate ($ear[1], $ear[2], $ear[0])) {
          echo 'Das eingegebene Datum f&uuml;r das Zyklusende ist nicht g&uuml;ltig ';
          echo '<a href="javascript:history.back()">zur&uuml;ck</a>';
          $design->footer(1);
        }
      }
      $z    = '';
      if (isset($_POST['zyklus'])) {
        $z  = $_POST['zyklus'];
      }
      $text = escape($_POST['txt'], 'string');
    
      $time = mktime ($_POST['stunde'], $_POST['minute'],0,$sar[1],$sar[2],$sar[0]);
    
    	// Einfuegen
      if ($_REQUEST['um'] == 'insert') {
        if (!empty($z)) {
          zyklusinsert ($sar,$ear,$z,$_POST);
        } else {
          db_query("INSERT INTO `prefix_kalender` (time,title,text,recht) VALUES (".$time.",'".$_POST['title']."','".$text."','".$_POST['recht']."')");
        }
    
      // Aendern
    	} elseif ($_REQUEST['um'] == 'change') {
    
        if (isset($_POST['gid']) AND $_POST['gid'] == 'yes') {
          $gid1 = db_result(db_query("SELECT gid FROM prefix_kalender WHERE id = ".$_POST['EID']),0,0);
        }
    
        if (isset($_POST['gid']) AND $_POST['gid'] == 'yes' AND $gid1 > 0) {
          db_query("UPDATE `prefix_kalender` SET
    				  title	= '".$_POST['title']."',
    				  text	= '".$text."',
    				  recht	= '".$_POST['recht']."'
    			  WHERE gid = ".$gid1);
        } else {
          db_query("UPDATE `prefix_kalender` SET
    			  	time	= '".$time."',
    				  title	= '".$_POST['title']."',
    				  text	= '".$text."',
    				  recht	= '".$_POST['recht']."'
    			  WHERE id = ".$_POST['EID']." LIMIT 1");
        }
    	}
    }
    
    //Loeschen
    if (!empty($_GET['del']) AND $_GET['del'] == intval($_GET['del'])) {
    	db_query("DELETE FROM `prefix_kalender` WHERE id = ".$_GET['del']." LIMIT 1");
    }
    if (!empty($_GET['del_gid']) AND $_GET['del_gid'] == intval ($_GET['del_gid'])) {
      db_query("DELETE FROM prefix_kalender WHERE gid = ".$_GET['del_gid']);
    }
    
    //-----------------------------------------------------------|
    
    
    
    if (isset($_GET['edit'])) {
    	$row = db_fetch_assoc(db_query("SELECT * FROM `prefix_kalender` WHERE id = ".$_GET['edit']));
    	$Faktion	= 'change';
    	$Fid		= $row['id'];
    	$Ftitle		= $row['title'];
    	$Ftext		= unescape($row['text']);
    	$Fbegind	= date('Y-n-j',$row['time']);
      $Fzende   = $Fbegind;
    	$Fhours		= date('G',$row['time']);
    	$Fmins		= date('i',$row['time']);
    	$Frecht	= $row['recht'];
    	$Fsub		= '&Auml;ndern';
    } else {
    	$pubdate = getdate();
    	$Faktion	= 'insert';
    	$Fid		= '';
    	$Ftitle		= '';
    	$Ftext		= '';
      $Fbegind	= date('Y-n-j');
      $Fzende   = $Fbegind;
    	$Fhours		= $pubdate['hours'];
    	$Fmins		= $pubdate['minutes'];
    	$Fgrecht	= '';
    	$Frecht	= '';
    	$Fsub		= 'Eintragen';
    }
    
    $arm = array (); for($i=0;$i<60;$i++){$arm[$i]=$i;}
    $ars = array (); for($i=0;$i<24;$i++){$ars[$i]=$i;}
    
    $tpl = new tpl ( 'beachkalender.htm', 1 );
    
    $limit = 30;  // Limit
    $page = ($menu->getA(1) == 'p' ? $menu->getE(1) : 1 );
    $MPL = db_make_sites ($page , '' , $limit , "?beachkalender" , 'kalender' );
    $anfang = ($page - 1) * $limit;
    
    $aus = array(
    	'AKTION'	=> $Faktion,
    	'MPL'		=> $MPL,
    	'EID'		=> $Fid,
    	'TITLE'		=> $Ftitle,
    	'TEXT'		=> $Ftext,
    	'stunden'		=> arliste($Fhours,$ars,$tpl,'stunden'),
    	'minuten'	=> arliste($Fmins,$arm,$tpl,'minuten'),
      'zende'   => $Fzende,
      'begind'  => $Fbegind,
    	'recht'  	=> dbliste($Frecht,$tpl,'recht',"SELECT id,name FROM prefix_grundrechte ORDER BY id DESC"),
    	'FSUB'		=> $Fsub
    );
    
    $tpl->set_ar_out($aus,0);
    if (!isset($_GET['edit'])) {
      $tpl->out(1);
    } else {
      $tpl->out(2);
    }
    $tpl->out(3);
    unset($aus);
    
    //Liste
    
    
    $result = db_query('SELECT gid,id,title,time FROM `prefix_kalender` ORDER BY time DESC LIMIT '.$anfang.','.$limit);
    while ($row = db_fetch_assoc($result)) {
    	$aus = array(
    		'ID'	=> $row['id'],
    		'DATE'	=> date('d.m.Y',$row['time']),
    		'TIME'	=> date('H:i',$row['time']),
    		'TITLE'	=> $row['title'],
        'GID' => $row['gid']
    	);
    	$tpl->set_ar_out($aus, 4);
    }
    
    $tpl->set_ar_out(array('MPL' => $MPL ), 5);
    
    
    $design->footer();
    ?>



    Zuletzt modifiziert von Neutralos am 30.04.2008 - 18:11:23
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Sicher das action Attribut des Formulars, was wiederum im Template steht.


    Zuletzt modifiziert von Mairu am 01.05.2008 - 10:17:16
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    Neutralos Mitglied
    Registriert seit
    22.04.2007
    Beiträge
    118
    Beitragswertungen
    0 Beitragspunkte
    Besten Dank schonmal. Jetzt hab ich es schon so, wie ich es mir vorgestellt habe.:D
    3 Probleme gibt es aber noch:

    1.(wichtig) Im {TITLE} Feld soll der eingeloggte Username sofort erscheinen.

    2.(wichtig) Der kleine Kalender zum genaueren Auswählen des Datums erscheint nicht. Wodran könnte es liegen?

    3. Würde ich gerne die Termine separat eintragen, sodass die Termine, die über den Adminbereich eingetragen werden, dort nicht erscheinen. Und der User diese auch nicht ändern kann. Also ein Modul.

    Hier das template der Vollständigkeit halber:
    <!-- Kalender Script © by Nickel -->
    <script language="JavaScript" type="text/javascript">
    <!--
    function delcheck ( DELID, GID ) {
      if (GID != 0) {
        var frage1 = confirm ("ALLE Zugehoerigen Termine mitloeschen?");
        if (frage1 == true) {
          document.location.href="admin.php?kalender&del_gid="+GID;
          return (true);
        }
      }
    	var frage = confirm ( "Willst du diesen Termin wirklich loeschen?" );
    	if ( frage == true ) {
    		document.location.href="admin.php?kalender&del="+DELID;
        return (true);
    	}
      
      return (false);
    }
    function setzende ( s ) {
      document.form.zende.value = s;
      document.getElementById('skalenderzende').style.display = "none";
    }
    function setbegind ( s ) {
      document.form.begind.value = s;
      document.form.begind.focus();
      document.getElementById('skalenderbegind').style.display = "none";
    }
    function closezende () {
      document.getElementById('skalenderzende').style.display = "none";
    }
    function closebegind () {
      document.getElementById('skalenderbegind').style.display = "none";
    }
    //-->
    </script>
    
    <table cellpadding="0" cellspacing="0" border="0"><tr><td><img src="include/images/icons/admin/calendar.png" /></td><td width="30"></td><td valign="bottom"><h1>Beachkalender</h1></td></tr></table>
    <hr style="width: 400px; margin: 0px;" >
    <p>Hier k&ouml;nnt ihr euren Namen und die Uhrzeit, zu der ihr an der Beachanlage seid, eintragen, damit andere User schon von zuhause sehen k&ouml;nnen, wer wie sp&auml;t beacht! Das Datum ist nat&uuml;rlich auch frei w&auml;hlbar. Wer will kann sich gerne schon im Voraus eintragen. Nat&uuml;rlich funktioniert dieses System nur, wenn sich alle flei&szlig;ig und regelm&auml;&szlig;ig eintragen;-)<br />
      Auf der Startseite einfach den entsprechenden Tag im Kalender anklicken und ihr seht wer beacht!!! </p>
    <p>Das Datum wird nach dem Schema Jahr-Monat-Tag eintragen. Wenn ihr regelm&auml;&szlig;ig trainiert k&ouml;nnt ihr euch einen Zyklus einstellen, der sich z.B jede Woche eintr&auml;gt. <br />
    </p>
    <table width="99%" border="0" cellspacing="1" cellpadding="5">
    <tr> 
    	<td valign="top"> 
    		<form action="index.php?beachkalender" method="POST" name="form">
    		<input type="hidden" name="um" value="{AKTION}">
    		<input type="hidden" name="EID" value="{EID}">
    				
    					
    		<table cellpadding="2" cellspacing="1" border="0" class="border">
    		<tr> 
    			<td class="Cmite" align="right"><strong>Name : &nbsp;</strong></td>
    			<td class="Cnorm"><input size="50" type="text" name="title" value="{TITLE}"></td>
    		</tr>
    		<tr> 
    			<td align="right" class="Cmite"><strong>Datum : &nbsp;</strong></td>
    			<td class="Cnorm">
          <input value="{begind}" name="begind" size="12" maxlength="10" onClick="xajax_XAJAX_showCalendar('','','begind')" /> 
          um <select id="stunde" name="stunde">{_list_stunden@<option%1 value="%2">%3</option>}</select><b>:</b><select id="minute" name="minute">{_list_minuten@<option%1 value="%2">%3</option>}</select> Uhr
    
          
    			</td>
    		</tr>
        
        {EXPLODE}
        
    		<tr> 
    			<td align="right" class="Cmite"><strong>Zyklus : &nbsp;</strong></td>
    			<td class="Cnorm"> 
          
          <select name="zyklus">
            <option></option>
            <option value="wer">werktags</option>
            <option value="wek">wochenende</option>
            <option value="woc">wöchentlich</option>
            <option value="14t">14 täglich</option>
            <option value="mon">monatlich</option>
            <option value="jae">jährlich</option>
          </select>
          
          &nbsp; Ende: <input value="{zende}" name="zende" size="12" maxlength="10" onClick="xajax_XAJAX_showCalendar('','','zende')" />
    
          </td>
    		</tr>
        
        {EXPLODE}
        
        <tr>
          <td nowrap align="right" class="Cmite"><strong>Im Verbund : &nbsp;</strong></td>
          <td class="Cnorm"><input type="checkbox" id="gid" name="gid" value="yes" /> <label for="gid" style="cursor: pointer;" class="smalfont">Diesen Termin im Verbund aendern, daher alle Zugehoerigen Termine mitaendern.</label></td>
        </tr>
        
        {EXPLODE}
        
    		<tr> 
    			<td class="Cmite"></td>
    			<td class="Cnorm"><input type="submit" value="{FSUB}" name="submit"></td>
    		</tr>
    		</table>
    		</form>
    	</td>
    </tr>
    <tr>
    <td>Falls ihr euch austragen wollt könnt ihr das hier tun. Einfach nach dem Datum suchen. Bitte seid so nett und löscht nicht einfach Spieltermine usw.</td>
    </tr>
    <tr>
    <br /><td class="Cmite" width="30%" valign="top">
    		{MPL}
    		<table width="100%" cellpadding="4" cellspacing="1" border="0" class="border">
    		{EXPLODE}
    		<tr class="Cnorm">
    			<td><a href="?beachkalender&del={ID}" onClick="return delcheck({ID},{GID})"><img src="include/images/icons/del.gif" alt="L&ouml;schen" title="L&ouml;schen" border="0"></a></td>
    			<td class="smalfont">{TITLE} # Am {DATE} um {TIME}</td>
    		</tr>
    		{EXPLODE}
    		</table>
    		{MPL}
    	</td>
    </tr>
    </table>
    
    <div id="skalenderbegind" style="position:absolute; top:200px; left:170px; display:none; width:200px;"></div>
          <div id="skalenderzende" style="position:absolute; top:220px; left:330px; display:none; width:200px;"></div>
    <br /><center><font class="smalfont">[ Kalender Script &copy; by Nickel ]</font></center>
    <!-- Kalender Script © by Nickel -->



    Zuletzt modifiziert von Neutralos am 02.05.2008 - 09:53:04
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Erstmal, in dem Template steht noch zuhauf admin.php, dass musst du alles anpassen. Das mit dem {TITLE} musst du in der PHP halt den Namen zuweisen, $_SESSION['authname'].
    Das mit der Auswahl liegt sicher an den Pfaden, die irgendwo noch nicht stimmen.
    3. Mach einfach eine neue Tabelle, die dem alten Struktur folgt und benutzt dann diese in allen Abfragen.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    Neutralos Mitglied
    Registriert seit
    22.04.2007
    Beiträge
    118
    Beitragswertungen
    0 Beitragspunkte
    Die admin.php's hab ich entfernt.

    Was und wo muss ich das mit dem title in der php einfügen?
    'title' => $_SESSION['authname']; soll das so aussehen?

    Die Pfade für die Auswahl find ich auch irgendwie nicht und kann sie deshalb auch nicht überprüfen;-) ???

    Und für eine neue Tabelle fehlen mir die Kenntnisse also lasse ich das lieber!
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Zu 3. einfach eine Tabelle in der Datenbank erstellen, die genau die gleichen Felder hat wie die kalender Tabelle, also eigentlich nur in die install.sql schauen und den erforderlichen Teil kopieren, den Tabellennamen anpassen, also prefix_kalender -> ic1_trainkalender und dann halt alle prefix_kalender zu prefix_trainkalender ändern, das ist wohl eher noch das leichteste.

    Wegen dem Titel ->
     $Ftitle        = '';
    ->
     $Ftitle        = $_SESSION['authname'];


    Zu dem anderen Fehler, wenn du ne Testseite hast, dann gib mal den Link, da kann ich den Fehler bestimmt einfacher herausfinden.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    Neutralos Mitglied
    Registriert seit
    22.04.2007
    Beiträge
    118
    Beitragswertungen
    0 Beitragspunkte
    Hier der Link der Testseite:
    externer Link dann unter "Beachkalender"
    Da sind jetzt irgendwie auch noch zusätzliche Fehler, die ich auf der anderen Seite nicht erhalte.

    Das mit der zusätzlichen Tabelle probiere ich mal die Tage. Wenn dann Probleme aufstoßen melde ich mich;)

    Besten Dank nochmals für den wirklich guten Support hier!!!
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Allgemein

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten