WinFuture-Forum.de: Eigenes Simples "ticketsystem" - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Eigenes Simples "ticketsystem" - mit PHP soll's angäblich gehen...


#1 Mitglied ist offline   renegade2k 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.402
  • Beigetreten: 30. Juli 07
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Nähe D'dorf

geschrieben 28. August 2008 - 13:03

moin allerseits.

Ich bin auf dem PHP-Gebiet noch eine absolute Niete, wollte aber gern was für meine Homepage bzw. für ein lokales Netzwerk haben und da hatte man mir gesagt, dass sie das ganz leicht in PHP umsetzen ließe.

Ich möchte eine Art kleines, total simples Ticketsystem haben:
Beliebige Person (für die Zugriffskontrolle sorge ich selbst schon) soll auf die Seite gehen und eine ähnliche Maske angezeigt kriegen, wie die hier.
Dort trägt die Person ihren Namen ein und den "Job". Datum und Uhrzeit werden automatisch gesetzt.
Nach einem Klick auf "Senden" wird das ganze übertragen und in eine Textdatei geschrieben (idealerweise so, dass man die Textdatei im Nachhinein per Hand nachbearbeiten kann). Die Seite aktualisiert sich daraufhin automatisch und der Eintrag kann dann dort eingesehen werden und unter dem Eintrag befindet sich dann wieder die selbe Maske für ein weiteres Ticket.

Wenn ich bzw. beliebige Person dann den "Job" erledigt hat, kann das Ticket durch ein Klick auf einen weiteren Button (oder durch das Setzen eines Hackens o.ä., ist eigentlich egal wie) geschlossen werden.
Es wird ein Datums- und Zeitstempel druntergesetzt, ungefähr so.

Könnte eventuell mir Jemand soetwas zaubern oder gibt es vielleicht schon etwas fertiges in der Art?
Mir ist halt nur wichtig, dass das Ganze mit minimalem Aufwand betrieben werden kann.
- Vista x64 Multilanguage Update Pack : ist oben ;) -
0

Anzeige



#2 Mitglied ist offline   Matze 

  • Gruppe: aktive Mitglieder
  • Beiträge: 666
  • Beigetreten: 29. Februar 04
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 28. August 2008 - 13:37

Vielleicht ist eTicket etwas für dich: http://www.eticketsupport.com/

Dieser Beitrag wurde von Matze bearbeitet: 28. August 2008 - 13:37

Lorem ipsum dolor sit amet, consetetur sadipscing elitr.
0

#3 Mitglied ist offline   renegade2k 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.402
  • Beigetreten: 30. Juli 07
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Nähe D'dorf

geschrieben 28. August 2008 - 13:43

Ja, das sieht sehr gut aus, danke für den Link :lol:
Ist nur bisschen umfangreich. Ich hatte dabei an was ganz schlichtes gedacht, wie eine PHP-Datei, als das "Programm" und eine Textdatei als "Speicher", sodass ich das ganze mal eben durchs Netz schieben kann, ohne großartig was konfigurieren zu müssen.
An sich sollte das ganze auch zunächst nur als To-Do-Liste fungieren und später erst als Ticketsystem.

Werde mir das eTicket aber nochmal genau anschauen, evtl. rentiert sich das auf Dauer doch noch.
- Vista x64 Multilanguage Update Pack : ist oben ;) -
0

#4 Mitglied ist offline   schumi0815 

  • Gruppe: aktive Mitglieder
  • Beiträge: 482
  • Beigetreten: 20. Juli 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:München

geschrieben 28. August 2008 - 14:20

wenn du ne mysql datenbank zur verfügung hast(davon geh ich jetzt mal aus) is des alle garkein problem und rel einfach zu bewerkstelligen. wieviel ahnung hast du denn von php? wenn du bissl was kannst bzw und bisschen lust hast auf php.net befehle nachzuschlagen könnt ich pseudocode vorgeben und du würdest was dabei lernen.(wow ich kann jemandem wissen vermitteln, foi geil^^)

wenn du keine lust hast komm ich späta evtl dazu bisschen code zu schreiben und zu posten.
0

#5 Mitglied ist offline   renegade2k 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.402
  • Beigetreten: 30. Juli 07
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Nähe D'dorf

geschrieben 28. August 2008 - 14:32

Lust zum Wissen ist immer da ;)
Ahnung von PHP würde ich aber auf 0,1% schätzen :lol: Genauer gesagt, ich weiß wie man ein PHP-Dokument Einleitet und Abschließt, mehr aber auch nicht ^^

MySQL steht mir auf meinem Server auch zur Verfügung, das wäre soweit kein Problem
- Vista x64 Multilanguage Update Pack : ist oben ;) -
0

#6 Mitglied ist offline   schumi0815 

  • Gruppe: aktive Mitglieder
  • Beiträge: 482
  • Beigetreten: 20. Juli 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:München

geschrieben 28. August 2008 - 14:38

hmmm... naja dann^^

werd jetzt mal schaun was ich hier auf die schnelle hinbekomm. bitte kurz warten ...
0

#7 Mitglied ist offline   renegade2k 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.402
  • Beigetreten: 30. Juli 07
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Nähe D'dorf

geschrieben 28. August 2008 - 14:43

Hey, danke schonmal im Voraus :lol:

Falls es noch irgendwie nützlich sein sollte: Ich habe grade noch den "Kompozer" und "Eclipse" zur Hand
- Vista x64 Multilanguage Update Pack : ist oben ;) -
0

#8 Mitglied ist offline   schumi0815 

  • Gruppe: aktive Mitglieder
  • Beiträge: 482
  • Beigetreten: 20. Juli 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:München

geschrieben 28. August 2008 - 16:28

sry kamm grad nicht dazu, werd bis morgen was posten.

plötzlich gibts arbeit^^
0

#9 Mitglied ist offline   schumi0815 

  • Gruppe: aktive Mitglieder
  • Beiträge: 482
  • Beigetreten: 20. Juli 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:München

geschrieben 28. August 2008 - 23:12

so update:
als erstes solltest du bei deinem mysql server eine datenbank anlegen. in meinem beispiel heisst sie "tickets". wenn du sie anders benennst musst dus halt auch im scipt ändern.

Die tabelle sollte folgende einträge haben:
ID int 11//ID des tickets. ist wichtig für zugriffe von php aus
Name vchar 150//Name des ticketstellers.(kann man später mit eingelogtem user automatisieren)
Titel vchar 200 //kurze beschreibung um was es in dem ticket geht
Text vchar 500//der inhalt des tickets
Status vchar 100// zeigt an ob das ticket offen ist, oder in Bearbeitung, closed, zum löschen vorgesehn
Date Date//datum wann der user das ticket erstellt hat
EditDate Date//falls der benutzer was an dem ticket verändert hat, wird zusätzlich diesses datum gesetzt

das ganze lässt sich rel komfortabel mit phpmyadmin eintragen.

nun zu den datein:

dein baum sollte so aussehn:

root
---admin.dir
------>index.php
---inc.dir
------>content.php
------>config.php
---index.php

dazu komm ncoh odner wie bilder... je nachdem was du halt brauchst.

nun zu den einzelnen dateien:

als erstes die content.php:

in ihr musst du die zugangsdaten für deinen mysql account hinterlegen
<?php

   //constant.php hier stehn die daten für deine mysql datenbank 

  error_reporting(E_ALL);
  
  define('MYSQL_HOST',	'');//mysql host (zB auf eigenem pc 'localhost' 
  define('MYSQL_USER',	'');//mysql benutzername
  define('MYSQL_PASS',	'');//mysql passwort
  define('MYSQL_DATABASE','');//datenbank name

  
  
?>


dann die config.php

in ihr werden alle configurationsdaten gesammelt die deine seite benötigt, um nicht alle einzeln zu includen sondern nur die config.php. zZ haben wir allerdings nur die constant.php

<?php

	//config.php hier kannst du alle deine configurations php seiten reinstelln, damit du auf den normalen seiten nicht immer 4-5 verschiedene seiten  sondern nur die config.php includen musst


	include 'constant.php';
	//include 'variablen.php';
	//include 'functions.php';
  
?>


als nächstes folgt die user eingabe index.php im root verzeichnis:

in ihr ist die eingabemaske gespeichert damit der user die daten komfortabel eingeben kann, aber auch die funktiionen/abfragen die die daten in die datenbank schreiben bzw sie ändern.

<?php
//includet deie config datei in der unteranderem deine server infos stehn
include "inc/config.php";
	error_reporting(E_ALL);

  //stellt eine verbindung zum mysql server her
	@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
	mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

//falls button gedrueckt dann daten in datenbank 'tickets' geschrieben
if(isset($_POST['createTicket'])){

	$db = "INSERT INTO tickets (Name,Text,Titel,Status,Date)
				
				VALUES
			   ('".$_POST['name']."',
				'".$_POST['text']."',
				'".$_POST['titel']."',
				'offen',				
				NOW())";
	mysql_query($db) OR die(mysql_error());
	}
	
//änderungen am ticket werden gespeichert
if(isset($_POST['editTicket'])){

	$db = "UPDATE tickets SET
					Name = '".$_POST['name']."',
					Titel = '".$_POST['titel']."',
					EditDate = NOW(),
					Text = '".$_POST['text']."'
					WHERE ID = '".$_POST['ticketID']."';";
					
	mysql_query($db) OR die(mysql_error()); 
	}

//das ticket bekommt den status "delete" und wird nun dem administrator angezeigt, dass er es löschen kann(nur admin hat lösch rechte!!)
if(isset($_GET['action']) && $_GET['action'] == 'delticket'){

	$db = "UPDATE tickets SET
					Status = 'delete'
					WHERE ID = '".$_POST['ticketID']."';";
	
	mysql_query($db) OR die(mysql_error());
	}
	
echo "<html>";
echo "<head></head>";
echo "<body>";
echo "<center>";
echo "<div>ticket status:</div>";

//gestellte tickets werden aufgelistet und mit titel - datum und status angezeigt
$db = "SELECT ID,Date,Status,Titel FROM tickets ORDER BY Date ASC";
$result = mysql_query($db) OR die(mysql_error());
while($row = mysql_fetch_assoc($result)) {

	echo "<a href=\"index.php?action=select&amp;ticketID=";
	echo $row['ID'];
	echo "&amp;\" >";
	
	echo $row['Titel'];
	echo " - ";
	echo $row['Date'];
	echo " - ";
	echo $row['Status'];
	echo "</a><br>";
	}
	


echo "<div height=\"200\">";
echo "</div><br>";
echo "<div>";
//menü um tickets zu erstellen zu löschen oder zu ändern.
echo "<a href=\"index.php\">neues ticket</a> <";

//löschfunktion wird nur angezeigt wenn ein ticket ausgwählt wurde
if(isset($_GET['action']) && $_GET['action'] == 'select'){

		echo "a href=\"index.php?action=delticket&amp;ticketID=\"".$_GET['ticketID']."&amp;\">ticket löschen</a>";
		}
echo "</div><br>";
echo "<div height=\"400\">";

//Abfrage ob auf ein ticket geklickt wurde wenn ja werden die daten des tickets in die maske geladen und man kann sie ändern bzw löschen
if(isset($_GET['action']) && $_GET['action'] == 'select'){

	$db = "SELECT ID,Name,Text,Titel,Date,Status FROM tickets WHERE ID='".$_GET['ticketID']."';";
	$result = mysql_query($db) OR die(mysql_error())
	$row = mysql_fetch_assoc($result)

	echo "<form name=\"form\" method=\"post\" action=\"index.php?action=editticket&amp;ticketID=\"".$_GET['ticketID']."&amp;\">";
	echo "Name: <input type=\"text\" name=\"name\" value=\"".$row['Name']."><br>";
	echo "Titel: <input type=\"text\" name=\"titel\" value=\"".$row['Titel']."><br>";
	echo "Beschreibung: <br><textarea name=\"text\" cols=\"55\" rows=\"10\">".$row['Text']."</textarea><br>";
	echo "Ticket wurde erstellt am: ".$row['Date']."<br>";
	echo "Der Status des Tickets: ".$row['Status']."<br>";
	echo "<input type=\"submit\" name=\"editTicket\" value=\"Ticket ändern\">";
	echo "</form>";
	}
	
else{//ansonsten wird dass normale formular geladen
	//ticket eingabe formular
	echo "<form name=\"form\" method=\"post\" action=\"index.php?action=addticket&amp;\">";
	echo "Name: <input type=\"text\" name=\"name\"><br>";
	echo "Titel: <input type=\"text\" name=\"titel\"><br>";
	echo "Beschreibung: <br><textarea name=\"text\" cols=\"55\" rows=\"10\"></textarea><br>";
	echo "<input type=\"submit\" name=\"createTicket\" value=\"Ticket erstellen\">";
	echo "</form>";
	}
echo "</div>";
echo "</center>";
echo "</body>";
echo "</html>";
?>



zum schluss braucht man noch ein admin interface wo sich der admin die tickets anschaun , den status
ändern oder sie ganz löschen kann.

die datei heisst auch index.php, befindet sich aber im admin ordner:

<?php
//includet deie config datei in der unteranderem deine server infos stehn
include "../inc/config.php";
	error_reporting(E_ALL);

  //stellt eine verbindung zum mysql server her
	@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
	mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());


//änderungen am ticketstatus werden gespeichert
if(isset($_POST['editStatus'])){

	$db = "UPDATE tickets SET
					Status = '".$_POST['status']."'
					WHERE ID = '".$_POST['ticketID']."';";
					
	mysql_query($db) OR die(mysql_error()); 
	}
	
//diese funktion prüft welcher status vergeben ist und setzt dann in diese auswal den selected-tag damit der aktuelle status gleich ausgwählt ist beim dropdownmenü
function selected($option,$is) {
		
		if($option == $is){
		  
		  $string = 'selected=\"selected\"';
		}
		else{
		  $string = '';
		}
		
		return $string;
	}

//das ticket wird endgültig gelöscht
if(isset($_POST['delTicket'])){

	$db = "DELETE FROM tickets WHERE ID = '".$_POST['ticketID']."';";
	
	mysql_query($db) OR die(mysql_error());
	}
	
echo "<html>";
echo "<head></head>";
echo "<body>";
echo "<center>";
echo "<div>ticket status:</div>";

//gestellte tickets werden aufgelistet und mit titel - datum und status angezeigt
$db = "SELECT ID,Date,Status,Titel FROM tickets ORDER BY Date ASC";
$result = mysql_query($db) OR die(mysql_error());
while($row = mysql_fetch_assoc($result)) {

	echo "<a href=\"index.php?action=select&amp;ticketID=";
	echo $row['ID'];
	echo "&amp;\" >";
	
	echo $row['Titel'];
	echo " - ";
	echo $row['Date'];
	echo " - ";
	echo $row['Status'];
	
	echo "</a><br>";
	}
	



echo "<div height=\"400\">";
	$db = "SELECT ID,Name,Text,Titel,Date,Status FROM tickets WHERE ID='".$_GET['ticketID']."';";
	$result = mysql_query($db) OR die(mysql_error())
	$row = mysql_fetch_assoc($result)
	
echo "Betreff: ".$row['Titel']."<br>";
echo "Gestelt von: ".$row['Name']."<br>";
echo "Erstellungsdatum: ".$row['Date']."<br>";
echo "Änderungsdatum: ".$row['EditDate']."<br>";
echo "Text:<br> ".$row['Titel']."<br>";
echo "<form name=\"form\" method=\"post\" action=\"index.php?action=editticket&amp;ticketID=\"".$_row['ID']."&amp;\">";
echo "Status: ";
	

		echo "<select name=\"status\" id=\"status\">\n";
					  
		echo "<option value=\"offen\" ".selected('offen',$row['Status']).">offen</option>\n";
		echo "<option value=\"in Bearbeitung\" ".selected('in Bearbeitung',$row['Status']).">in Bearbeitung/option>\n";
		echo "<option value=\"closed\" ".selected('closed',$row['Status']).">closed</option>\n";
		echo "<option value=\"zu löschen\" ".selected('zu löschen',$row['Status']).">zu löschen</option>\n";
		echo "</select>\n<br>";
		echo "<input type=\"submit\" name=\"editStatus\" value=\"Status ändern\"> ";
		echo "<input type=\"submit\" name=\"delTicket\" value=\"Ticket löschen\">";
		echo "</form>";
echo "</div>";
echo "</center>";
echo "</body>";
echo "</html>";
?>


leider bin ich noch nicht dazu gekommen des script zu testen. probiers mal aus auf deinem server oder mit xampp.

des ganze schaut jetzt grafisch noch ziemlich nach arsch aus, aba du kannst ja alles per css oder html anpassen dass es schön wird.

falls du fragen dazu hast oder was erklärt haben willst einfach post ins forum weil pm les cih zu selten^^

Dieser Beitrag wurde von schumi0815 bearbeitet: 02. September 2008 - 14:02

0

#10 Mitglied ist offline   [Elite-|-Killer] 

  • Gruppe: aktive Mitglieder
  • Beiträge: 762
  • Beigetreten: 02. Oktober 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Passau

geschrieben 30. August 2008 - 14:51

Hab auch gerade ein Ticketsystem von mir gefunden. Ist allerdings schon etwas älter (2004), aber da es ziemlich genau auf die oben genannten Anforderungen zutrifft dachte ich mir ich Posts einfach mal, vielleicht besteht ja Interesse. Hochladen sollte reichen um es zum Laufen zu bringen.

Fakten & Details im Überblick:
- Tickets mit Name und Ticketbeschreibung
- Datum und Uhrzeit wird automatisch generiert
- Speichrung erfolgt in Textdateien und somit keine DB erforderlich
- Editfunktion
- Löschfunktion
- Erledigt Funktion
- Einfach zu bearbeiten aufgrund des geringen Source Code Umfangs
- HTML und Design ist weitestgehend in *.tpl Dateien ausgelagtert
- PHP4 mit E_ALL fehlerfrei und soweit ich gesehen habe auch valid HTML 4.0 Transitional

Nachteile:
- Keine Datenbank im Hintergrund, ob vor oder Nachteil muss bei dem Umfang individuell abgewogen werden ;-)
- Es wurde Null auf Sicherheit geachtet
- Jeder kann alles machen (Schreiben, Editieren, Löschen, Erledigen)

Download

Dieser Beitrag wurde von [Elite-|-Killer] bearbeitet: 30. August 2008 - 14:51

0

#11 Mitglied ist offline   renegade2k 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.402
  • Beigetreten: 30. Juli 07
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Nähe D'dorf

geschrieben 31. August 2008 - 18:44

cool, danke vielmals für die mühe :cool:
werd mich jetzt nächste woche mal durchwuseln und hinterher warscheinlich begeistert sein ;D
- Vista x64 Multilanguage Update Pack : ist oben ;) -
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0