Doku ergäntzt und Download gefixt

This commit is contained in:
Ivan Hörler 2017-03-05 17:56:52 +01:00
parent d0359a3159
commit 8221375561
17 changed files with 89 additions and 2147 deletions

Binary file not shown.

View File

@ -62,7 +62,7 @@ bottom=3cm
\newcommand{\sectionbreak}{\clearpage}
\RequirePackage{float} % to process all Figures in precise float [H]
\RequirePackage{lscape} % single pages in Landscape
%Make whitespace in tables bigger
\renewcommand\arraystretch{1.5}

View File

@ -1,69 +0,0 @@
\relax
\providecommand\hyper@newdestlabel[2]{}
\providecommand*\tocstyle@set@width[4]{}
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand\HyField@AuxAddToFields[1]{}
\providecommand\HyField@AuxAddToCoFields[2]{}
\@input{Titelblatt.aux}
\tocstyle@set@width {unum}{toc}{}{21.29997pt}
\tocstyle@set@width {num}{toc}{1}{12.744pt}
\tocstyle@set@width {skip}{toc}{1}{0.0pt}
\tocstyle@set@width {num}{toc}{2}{21.29997pt}
\tocstyle@set@width {skip}{toc}{2}{12.744pt}
\@writefile{toc}{\contentsline {section}{\numberline {1}Vision}{1}{section.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Kundenbeziehung}{1}{subsection.1.1}}
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Kundenbeziehung}}{1}{figure.1}}
\newlabel{fig:Kundenbeziehung}{{1}{1}{Kundenbeziehung}{figure.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {2}User Stories}{2}{section.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}BusinessStreamline}{2}{subsection.2.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Nachfragerfirma}{2}{subsection.2.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Anbieterfirma}{3}{subsection.2.3}}
\@writefile{toc}{\contentsline {section}{\numberline {3}Benutzerf\IeC {\"u}hrung}{4}{section.3}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Nachfrage Firma}{4}{subsection.3.1}}
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Benutzerf\IeC {\"u}hrung des Nachfragers}}{4}{figure.2}}
\newlabel{fig:Benutzerf\IeC {\"u}hrungNachfrager}{{2}{4}{Benutzerführung des Nachfragers}{figure.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Anbieter Firma}{5}{subsection.3.2}}
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Benutzerf\IeC {\"u}hrung des Anbieters}}{5}{figure.3}}
\newlabel{fig:Benutzerf\IeC {\"u}hrungAnbieters}{{3}{5}{Benutzerführung des Anbieters}{figure.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4}Datenbank}{6}{section.4}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}ERM}{6}{subsection.4.1}}
\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces ERM zur Datenbank f\IeC {\"u}r BusinessStreamline}}{6}{figure.4}}
\newlabel{fig:ERM}{{4}{6}{ERM zur Datenbank für BusinessStreamline}{figure.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}RM}{6}{subsection.4.2}}
\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces RM zur Datenbank f\IeC {\"u}r BusinessStreamline}}{6}{figure.5}}
\newlabel{fig:RM}{{5}{6}{RM zur Datenbank für BusinessStreamline}{figure.5}{}}
\citation{ref1}
\citation{ref2}
\@writefile{toc}{\contentsline {section}{\numberline {5}Coding}{7}{section.5}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}erstes Login}{7}{subsection.5.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Datenbankeintr\IeC {\"a}ge}{7}{subsection.5.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Angebotsabgabe}{7}{subsection.5.3}}
\@writefile{toc}{\contentsline {section}{\numberline {6}Projektplanung}{8}{section.6}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Zeitplan}{8}{subsection.6.1}}
\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Zeitplanung}}{8}{figure.6}}
\newlabel{fig:Zeitplanung}{{6}{8}{Zeitplanung}{figure.6}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Zeitaufwand}{8}{subsection.6.2}}
\@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces Zeitaufwand}}{8}{figure.7}}
\newlabel{tab:Zeitaufwand}{{7}{8}{Zeitaufwand}{figure.7}{}}
\citation{*}
\bibstyle{plain}
\bibdata{quellverzeichniss}
\bibcite{ref1}{1}
\bibcite{ref2}{2}
\@writefile{toc}{\contentsline {section}{\numberline {7}Referenzen}{9}{section.7}}
\newlabel{LastPage}{{}{10}{}{page.10}{}}
\xdef\lastpage@lastpage{10}
\xdef\lastpage@lastpageHy{10}

View File

@ -1,5 +1,10 @@
\begin{thebibliography}{1}
\bibitem{ref3}
PHP Groupe.
\newblock Xml dom manipulation, unknown unknown.
\newblock \url{http://php.net/manual/en/book.dom.php}.
\bibitem{ref1}
Pradeep Khodke.
\newblock Tutorial: Php login and registration script with pdo and oop, April
@ -7,6 +12,17 @@ Pradeep Khodke.
\newblock
\url{http://www.codingcage.com/2015/04/php-login-and-registration-script-with.html}.
\bibitem{ref5}
Jennifer Kyrnin.
\newblock How to use php to force a file download, Januar 2017.
\newblock \url{http://webdesign.about.com/od/php/ht/force_download.htm}.
\bibitem{ref4}
Virgilio~Favero Neto.
\newblock How to save xml using php, August 2010.
\newblock
\url{http://stackoverflow.com/questions/3552755/how-to-save-xml-using-php#3552794}.
\bibitem{ref2}
Richard Stibbard.
\newblock Mysql pdo tutorial, August 2014.

View File

@ -1,47 +0,0 @@
This is BibTeX, Version 0.99d (TeX Live 2016)
Capacity: max_strings=100000, hash_size=100000, hash_prime=85009
The top-level auxiliary file: main.aux
A level-1 auxiliary file: Titelblatt.aux
The style file: plain.bst
Database file #1: quellverzeichniss.bib
You've used 2 entries,
2118 wiz_defined-function locations,
508 strings with 4293 characters,
and the built_in function-call counts, 436 in all, are:
= -- 38
> -- 14
< -- 0
+ -- 6
- -- 4
* -- 18
:= -- 77
add.period$ -- 6
call.type$ -- 2
change.case$ -- 8
chr.to.int$ -- 0
cite$ -- 2
duplicate$ -- 14
empty$ -- 45
format.name$ -- 4
if$ -- 91
int.to.chr$ -- 0
int.to.str$ -- 2
missing$ -- 0
newline$ -- 13
num.names$ -- 4
pop$ -- 18
preamble$ -- 1
purify$ -- 6
quote$ -- 0
skip$ -- 14
stack$ -- 0
substring$ -- 10
swap$ -- 2
text.length$ -- 0
text.prefix$ -- 0
top$ -- 0
type$ -- 8
warning$ -- 0
while$ -- 4
width$ -- 3
write$ -- 22

View File

File diff suppressed because it is too large Load Diff

View File

@ -1,20 +0,0 @@
\BOOKMARK [1][-]{section.1}{Vision}{}% 1
\BOOKMARK [2][-]{subsection.1.1}{Kundenbeziehung}{section.1}% 2
\BOOKMARK [1][-]{section.2}{User Stories}{}% 3
\BOOKMARK [2][-]{subsection.2.1}{BusinessStreamline}{section.2}% 4
\BOOKMARK [2][-]{subsection.2.2}{Nachfragerfirma}{section.2}% 5
\BOOKMARK [2][-]{subsection.2.3}{Anbieterfirma}{section.2}% 6
\BOOKMARK [1][-]{section.3}{Benutzerf\374hrung}{}% 7
\BOOKMARK [2][-]{subsection.3.1}{Nachfrage Firma}{section.3}% 8
\BOOKMARK [2][-]{subsection.3.2}{Anbieter Firma}{section.3}% 9
\BOOKMARK [1][-]{section.4}{Datenbank}{}% 10
\BOOKMARK [2][-]{subsection.4.1}{ERM}{section.4}% 11
\BOOKMARK [2][-]{subsection.4.2}{RM}{section.4}% 12
\BOOKMARK [1][-]{section.5}{Coding}{}% 13
\BOOKMARK [2][-]{subsection.5.1}{erstes Login}{section.5}% 14
\BOOKMARK [2][-]{subsection.5.2}{Datenbankeintr\344ge}{section.5}% 15
\BOOKMARK [2][-]{subsection.5.3}{Angebotsabgabe}{section.5}% 16
\BOOKMARK [1][-]{section.6}{Projektplanung}{}% 17
\BOOKMARK [2][-]{subsection.6.1}{Zeitplan}{section.6}% 18
\BOOKMARK [2][-]{subsection.6.2}{Zeitaufwand}{section.6}% 19
\BOOKMARK [1][-]{section.7}{Referenzen}{}% 20

Binary file not shown.

Binary file not shown.

View File

@ -162,20 +162,29 @@ Zudem entnahm ich dem youtube Video \cite{ref2} wichtige Informationen zum vorge
Um die Darstellung zu gliedern wurde die Abfrage in HTML Tabellenform integriert. Das Eintragsdatum musste von YYYY-MM-DD-hh-mm gekürzt werden und wird nun als Datum ohne Zeitangabe dargestellt.
Die Eintrags Erfassung wird mit dem gleichen vorgehen gemacht und fängt Fehler wie leergelassene Felder oder zu kurze Beschreibungen ab.
\subsection{Angebotsabgabe}
Die selektion von einem eintrag gestalltete sich schwierig. Nachdem die erste Idee mit onclick auf der Tabellenzeile nicht funktionierte weil das Thema JavaSkript noch nicht angeschnitten wurde und mir nicht klar ist wie es umzusetzen ist wurde auf einen einfachen Link zurückgegriffen und per get Befehl die ID der Zeile übermittelt wird.
Die selektion von einem Eintrag gestaltete sich schwierig. Nachdem die erste Idee mit onclick auf der Tabellenzeile nicht funktionierte weil das Thema JavaSkript noch nicht angeschnitten wurde und mir nicht klar ist wie es umzusetzen ist wurde auf einen einfachen Link zurückgegriffen und per get Befehl die ID der Zeile übermittelt wird. Im Formular des Angebots wird zuerst geprüft ob das Angebot nicht vom eingelogten Nutzer stammt und falls doch eine meldung platziert damit keine Angebote auf eigene Nachfragen gemacht werden können.
Ein Nutzer der die Nachfrage nicht erstellt hat kann per Post befehlt ein Angebot abgeben dass in der "Anbieter" Tabelle gespeichert wird. Vorgängig werden Leere Übermittlungen und Angebote mit über 9 Ziffern abgefangen und Fehlermeldungen platziert.
\subsection{Profile}
Der Ersteller einer Nachfrage musste nun noch ein Interface zur Akzeptierung eines Angebots erhalten dass dann die Bestellung auslösen wird. Da die erforderlichen Werte für die Auflistung der Einträge aus zwei Tabellen kommen musste ein Join der Tabellen erarbeitet werden das wiederholt noch nicht behandelte Thema im Fach Datenbanken machte es darum nicht einfacher. Durch Nachforschungen und Try\&Error konnte jedoch die Lösung ermittelt werden.
Durch IF/ELSE abfragen wird ermittelt ob für eine Nachfrage schone ein Angebot erstellt wurde und in dem falle der Download Button für das geforderte XML angezeigt oder dann k.A. für kein Angebot angezeigt.
\subsection{XML}
Da XML eine eigene Skript art ist mussten wir uns erst damit auseinandersetzen. Gut gibts dazu mehrere Tutorials. Als wir dann mit dem umsetzen der Aufgaben anfingen hatten wir schon einige fertig erstellte Skripts gefunden die diese Aufgabe automatisch durch Zuweisung der Tabellenspaltennamen erstellen. Jedoch waren alle für mehrere Tabellen-Zeilen ausgelegt und wir mussten diese dann an die gegebenheiten dass nur für ein Teil (und damit eine Zeile) iteriert wird anpassen. Die beste dokumentation fannden wir unter \cite{ref3} http://php.net/manual/en/book.dom.php welche mit einer Beschreibung auf Stackexchange zusammenpasste und uns so eine Grundlage zur Erstellung bot. \cite{ref4}.
\subsection{Filedownload}
Diese Problemstellung haben wir komplett unterschätzt. Die Art und Programmierung für den Trigger eines Downloads mit PHP ist kompliziert. Durch ausprobieren und der Kombination von verschiedenen Lösungen aus dem Internet konnte es dann bewerkstelligt werden. \cite{ref5}
\begin{landscape}
\section{Projektplanung}
\begin{figure}[H]
\subsection{Zeitplan}
\includegraphics[width=\textwidth]{bilder/Zeitplan/Zeitplan.png}
\includegraphics[scale=0.4]{bilder/Zeitplan/Zeitplan.png}
\caption{Zeitplanung}
\label{fig:Zeitplanung}
\end{figure}
\end{landscape}
\begin{figure}[H]
\subsection{Zeitaufwand}
\begin{footnotesize}
\begin{center}
\begin{spreadtab}{{tabular}{ | l | c | c | c | l | }} \hline
@ Arbeitspaket & @ geplant & @ geleistet & @ delta & @ Erklärung \\ \hline
@ -187,13 +196,20 @@ Die selektion von einem eintrag gestalltete sich schwierig. Nachdem die erste Id
@ Datenbank & 1 & 1 & & \\
@ erstes login/out & 2 & 8 & 6 & \\
@ Datenbankeinträge & 8 & 11 & 5 & @ \begin{scriptsize}der Schulische hintergrund fehlte zu dem Zeitpunkt noch.\end{scriptsize}\\
@ Abgebotsabgabe & 10 & 8 & -2 & @ \begin{scriptsize}der Schulische hintergrund fehlte zu dem Zeitpunkt noch.\end{scriptsize}\\
@ Abgebotsabgabe & 10 & 8 & -2 & \\
@ User Profile seite erstellt& 4 & 12 & 8 & \\
@ Angebotabgabe & 6 & 6 & 0 & \\
@ Angebote für eigene Nachfr. deakt. & 2 & 4 & 2 & \\
@ suche erstellt & 8 & 6 & 2 & \\
@ XML übersetzer & 8 & 12 & 2 & @ \begin{scriptsize}musste erst XML verstehen.\end{scriptsize}\\
@ Filedownload & 0 & 10 & 10 & @ \begin{scriptsize}Aufgabe unterschätzt.\end{scriptsize}\\
\hline \hline
@ Total & sum(b2:b10) & sum(c2:c10) & sum(d2:d10) & @ h \\ \hline
@ Total & sum(b2:b15) & sum(c2:c15) & sum(d2:d15) & @ h \\ \hline
\end{spreadtab}
\caption{Zeitaufwand}
\label{tab:Zeitaufwand}
\end{center}
\end{footnotesize}
\end{figure}

View File

@ -1,20 +0,0 @@
\contentsline {section}{\numberline {1}Vision}{1}{section.1}
\contentsline {subsection}{\numberline {1.1}Kundenbeziehung}{1}{subsection.1.1}
\contentsline {section}{\numberline {2}User Stories}{2}{section.2}
\contentsline {subsection}{\numberline {2.1}BusinessStreamline}{2}{subsection.2.1}
\contentsline {subsection}{\numberline {2.2}Nachfragerfirma}{2}{subsection.2.2}
\contentsline {subsection}{\numberline {2.3}Anbieterfirma}{3}{subsection.2.3}
\contentsline {section}{\numberline {3}Benutzerf\IeC {\"u}hrung}{4}{section.3}
\contentsline {subsection}{\numberline {3.1}Nachfrage Firma}{4}{subsection.3.1}
\contentsline {subsection}{\numberline {3.2}Anbieter Firma}{5}{subsection.3.2}
\contentsline {section}{\numberline {4}Datenbank}{6}{section.4}
\contentsline {subsection}{\numberline {4.1}ERM}{6}{subsection.4.1}
\contentsline {subsection}{\numberline {4.2}RM}{6}{subsection.4.2}
\contentsline {section}{\numberline {5}Coding}{7}{section.5}
\contentsline {subsection}{\numberline {5.1}erstes Login}{7}{subsection.5.1}
\contentsline {subsection}{\numberline {5.2}Datenbankeintr\IeC {\"a}ge}{7}{subsection.5.2}
\contentsline {subsection}{\numberline {5.3}Angebotsabgabe}{7}{subsection.5.3}
\contentsline {section}{\numberline {6}Projektplanung}{8}{section.6}
\contentsline {subsection}{\numberline {6.1}Zeitplan}{8}{subsection.6.1}
\contentsline {subsection}{\numberline {6.2}Zeitaufwand}{8}{subsection.6.2}
\contentsline {section}{\numberline {7}Referenzen}{9}{section.7}

View File

@ -18,4 +18,27 @@
Month = {August},
Year = {2014}
}
@misc{ref3,
Author = {PHP Groupe},
Title = {XML DOM Manipulation},
Note = {\url{http://php.net/manual/en/book.dom.php}},
Date-Added = {unknown},
Month = {unknown},
Year = {unknown}
}
@misc{ref4,
Author = {Virgilio Favero Neto},
Title = {How to save XML using PHP},
Note = {\url{http://stackoverflow.com/questions/3552755/how-to-save-xml-using-php#3552794}},
Date-Added = {2010-08-24},
Month = {August},
Year = {2010}
}
@misc{ref5,
Author = {Jennifer Kyrnin},
Title = {How To Use PHP to Force a File Download},
Note = {\url{http://webdesign.about.com/od/php/ht/force_download.htm}},
Date-Added = {2017-01-00},
Month = {Januar},
Year = {2017}
}

View File

@ -23,7 +23,10 @@
$error[] = "Dein Preis sollte maximal 7 Stellen und 2 Nachkomastellen haben.";
} else {
try{
$stmt = $db->prepare("INSERT INTO anbieter (benutzer_id, erfassungs_id, angebot_preis) VALUES (:benutzer_id, :erfassung_id, :angebot_preis)");
$stmt = $db->prepare("
INSERT INTO anbieter (benutzer_id, erfassungs_id, angebot_preis)
VALUES (:benutzer_id, :erfassung_id, :angebot_preis)
");
$stmt->bindValue(':benutzer_id',$user_id);
$stmt->bindValue(':erfassung_id',$erfassung_id);
$stmt->bindValue(':angebot_preis',$angebot);
@ -37,7 +40,7 @@
}
}
//ID auslesen, welche vom Link mittels GET mitgegeben wurde
//ID auslesen, welche vom Nachfrage Link mittels GET mitgegeben wurde
if (isset($_GET['id'])) {
$erfassung_id=$_GET['id'];
}
@ -66,7 +69,10 @@
<th>Qualität</th>
<th>Lieferdatum</th>
<?php
foreach ($db->query("SELECT * FROM nachfrager WHERE erfassungs_id = $erfassung_id") as $row) {
foreach ($db->query("
SELECT * FROM nachfrager
WHERE erfassungs_id = $erfassung_id
") as $row) {
echo
"<tr>" .
"<td>" . substr(htmlentities($row['nachfr_datum']),0,10) . "&nbsp;" . "</td>" .

11
Website/download.php Normal file
View File

@ -0,0 +1,11 @@
<?php
if (isset($_GET['angebot_id'])) {
$angebot_id = $_GET['angebot_id'];
} else {
echo "ein problem ist aufgetreten.";
break;
}
header("Content-disposition: attachment; filename=angebot_$angebot_id.xml");
header("Content-type: xml");
readfile("xml/angebot_$angebot_id.xml");
?>

View File

@ -37,7 +37,7 @@
LEFT JOIN anbieter
ON nachfrager.erfassungs_id = anbieter.erfassungs_id
WHERE nachfrager.benutzer_id = $user_id
ORDER BY nachfrager.nachfr_typ ASC, anbieter.angebot_preis ASC
ORDER BY nachfrager.nachfr_typ ASC, anbieter.angebot_preis ASC
") as $row) {
echo
"<tr>" .
@ -54,10 +54,12 @@
"k.A." . "&nbsp;" . "</td>";
}
if (!empty(htmlentities($row['angebot_file']))) {
// $pathtofile="xml/"; geht nicht weil der slash wird nicht mitgenommen wenn die variable abgerufenwird...
echo
"<td>" .
"<form action='xml/" . htmlentities($row['angebot_file']) . "'>" .
"<input class='sbtn' type='submit' value='Download' />" .
"<form method='GET' action='". "download.php" ."'>" .
"<input type='hidden' name='angebot_id' value='".htmlentities($row['angebot_id'])."'/>" .
"<input class='sbtn' type='submit' name='download' value='Download' />" .
"</form>" .
"</td>";
}

View File

@ -35,8 +35,7 @@ while ($result_array = $query->fetch(PDO::FETCH_ASSOC)) {
$dom->formatOutput = true; // set the formatOutput attribute of domDocument to true
// save XML as string or file
$test1 = $dom->saveXML(); // put string in test1
//echo $test1;
$test1 = $dom->saveXML(); // put string in test1 for testings
$dom->save($path.$file); // save as file
// Filepath wird in Datenbank gespeichert