in Tabelle Suchen, Sortieren und Eintragen

Hikarihoshi

New member
6 Juli 2019
1
0
Guten Tag zusammen,

Ich wende mich hier an euch nach 2 Tagen der suche ohne das ich fündig geworden bin oder, ich das was ich gefunden habe zum Laufen gebracht hätte.

Für ein Spiel das im Laufe des Jahres 2020 raus kommt würde ich gerne die Website meiner Gilde etwas anpassen und bin daher an das Theme in Wordpress gebunden, hab aber schon recht viel mit CSS erreicht. Es ist auch ein Plug-In Installiert der einen Editor für die einzelnen Seiten einfügt der nicht nur HTML unterstützt sondern auch PHP.

Da dieses Spiel einem sagt wir stellen die Welt und ihr macht was draus will ich ein Ingame Auktionshaus aufbauen und dazu eine MySQL Datenbank nutzen um die Datenmengen wie Item, Preis, Verkäufer, etc. zu verwalten. So habe ich mich als Anfänger hin gesetzt und mit Hilfe von dem Wissen über das alte HTML und Google angefangen zu basteln. Daher werden wahrscheinlich auch etliche Unschönheiten im Code enthalten sein die ich einfach nicht anders kenne, da ich nur geschaut habe das das Ergebnis passt.

Ziel der Seite die ich erstellen wollte/habe war es, den Spielern eine Ausgabe zu geben von den zu Verkaufenden Items in Spiel, dazu sollte die Datenbanktabelle in php über eine Tabelle die man Sortieren kann ausgegeben werden. Zudem sollte den Spielern mit 3 Buttons weitere Funktionen zur Verfügung stehen. Zum Anfang ist der Button Information Aktiv und man bekommt die Aktuellen Infos von mir über der Tabelle angezeigt (einfacher Text). Mit dem Suche Button sollte der Text ausgeblendet werden und 3 eingabeboxen erscheinen mit dem der Spieler in der Tabelle nach bestimmten Kriterien suchen können sollte (Itemname, Kategorie, Verkäufer). Als letztes wollte ich gerne einen Button der wie die Suche den Text aus der Info verschwinden lässt und eine Art Formular offenlegt in dem Spieler eine Beschwerde einreichen können. Dies alles wollte ich gerne auf eine Seite bringen, so dass man nicht zwischen mehreren Seiten hin und her wechselt. Hab ich leider nur nicht hin bekommen da die Button auf wegen wie man sie im Internet findet, irgendwie nicht so ganz oder gar nicht geklappt haben. Nun hab ich doch drei Seiten und kann dazwischen hin und her Switchen.

Jedoch bekomm ich die Such und Sortierfunktion einfach nicht hin. Desweiteren leider auch nicht, dass man in das von mir erstellte Formular (4 Textboxen mit Absendebutton) Daten eintragen kann und diese abgesendet werden. Da wird das <form> einfach nicht ausgeführt und so kann man zwar die Felder ausfüllen aber man wird mit dem Button nicht weiter geleitet und so werden die Daten nicht in die Datenbank eingetragen.

War jetzt etwas viel Text aber ich wusste nicht wie ich anders mein Problem schildern soll, da es doch recht umfangreich ist. Ich poste in den Spoilern mal auch meine Codezeilen die ich bisher habe. Vieleicht kennt sich da ja jemand aus und kann mir helfen. Ich hab das ganze bisher nur über die Wordpress Möglichkeiten gemacht und keine eigenen Dateien (.php oder .html) auf den Server geladen da ich nicht weis wie sich das verträgt und ich das Theme von der Website gerne nutzen würde, damit es dazu passt.

Ich habe alle bestehenden links und was auf, unbeabsichtigte Werbung hindeutet durch <name Einfügen> ersetzt desweiteren habe ich die logindaten durch Platzhalter wie "Datenbankname" getauscht. Ich hoffe dass ich nichts übersehen habe und ihr meine Rechtschreibfehler in diesem Text verzeihen könnt. Ich hab das ganze zwar durch eine Rechtschreibprüfung gejagt aber diese sind ja auch nicht perfekt. Sollte ich bei meinem Problem etwas Forumstechnisch falsch gemacht haben, sagt bitte bescheid dann werde ich es beim nächsten Mal besser machen.


---EDIT--- Auch hinweise oder Schnipsel die mich näher an mein Ziel bringen wurden mir sehr helfen.



CSS Code in Wordpress unter Theme Customizer zusätzliche CSS:

Code:
/*--Auktionshaus--*/

/*gesammte Tabelle formatieren*/
table#Auktionshaus {
    border-collapse: separate !important;
		margin-left:16px;
		width:664px;
}

/*Tabellenkopf mit Hintergrundbild*/
tr#Auktionshauskopf {
		background-image:url(../eigeneDateien/Tablebackground_1.png);
		background-repeat:no-repeat;
}

/*Zeilen der Tabelle mit 2 bilder hinterlegen*/
tr:nth-child(even){
		background-image:url(../eigeneDateien/Tablebackground_3.png);
}
tr:nth-child(odd){
		background-image:url(../eigeneDateien/Tablebackground_2.png);
}

/*Tabelle ohne Ramen, mit Ausrichtungder Schrift*/
th#Auktionshaus {
    border: solid 0px !important;
}
td#Auktionshaus {
    border: solid 0px !important;
}
td#AuktionshausC {
		border: solid 0px !important;
    text-align: center;
}
td#AuktionshausR {
		border: solid 0px !important;
    text-align: right;
}
/*--Button Auktionshaus--*/
button#Suche {
		background-image:url(../eigeneDateien/buttonSuche.png);
	  background-repeat:no-repeat;
		border-color:transparent;
		color:transparent;
		background-color:transparent;
		width:144px;
		height:42px;
	 	margin-left:70px;
}
button#Suche2 {
		background-image:url(../eigeneDateien/buttonSuche2.png);
	  background-repeat:no-repeat;
		border-color:transparent;
		color:transparent;
		background-color:transparent;
		width:144px;
		height:42px;
		margin-left:70px;
}

button#Info {
	  background-image:url(../eigeneDateien/buttonInfo.png);
	  background-repeat:no-repeat;
		border-color:transparent;
		color:transparent;
		background-color:transparent;
		width:144px;
		height:42px;
		margin-left:64px;
}
button#Info2 {
		background-image:url(../eigeneDateien/buttonInfo2.png);
	  background-repeat:no-repeat;
		border-color:transparent;
		color:transparent;
		background-color:transparent;
		width:144px;
		height:42px;
		margin-left:64px;
}

button#Melden {
background-image:url(../eigeneDateien/buttonMelden.png);
	  background-repeat:no-repeat;
		border-color:transparent;
		color:transparent;
		background-color:transparent;
		width:144px;
		height:42px;
		margin-left:64px;
}
button#Melden2 {
		background-image:url(../eigeneDateien/buttonMelden2.png);
	  background-repeat:no-repeat;
		border-color:transparent;
		color:transparent;
		background-color:transparent;
		width:144px;
		height:42px;
		margin-left:64px;
}

/*--Text Auktionshaus--*/
p#Infotext {
    margin-left: 70px;
    padding-right: 314px;
}

p#Meldnungstext {
    margin-left: 70px;
    padding-right: 314px;
}


PHP und HTML Code in Wordpress in einem Editor daher gemischt:

Startseite Auktionshaus:
PHP:
<br>
<h1 style="margin-left:231px;"><font size="6" color=DBBF94><b>Auktionshaus</b></font></h1>
</br>

<a href="https://<name Einfügen>/auktionshaus-2"><button id="Suche"></button></a>
<button id="Info2"></button>
<a href="https://<name Einfügen>/auktionshaus-3"><button id="Melden"></button></a>

<p id="Infotext">
Das Auktionshaus der Handelsgesellschaft <name Einfügen> ist ein Ingame Auktionshaus. Somit können Wahren
 nur Ingame, in einer Filiale der Handelsgesellschaft Gekauft oder Verkauft werden. Diese Übersicht wird 
immer akualliesiert sobald ein Mitarbeiter den Kauf oder die Erstellung einer Auktion bestätigt.
 
<br></br>

Hat der Mitarbeiter die Erstellung der Auktion aufgenommen, wird die Wahre im Lagerhaus der Filiale 
eingelagert. Der Spieler kann diese aber jederzeit gegen die Lagergebühren zurücknehmen und die Auktion
 beenden. Kauft ein Spieler die Wahre ist das Geld in der Filiale an einen Mitarbeiter zu entrichten und die
 Wahre wird, sollte der Spieler in der Richtigen Filiale sein, direkt ausgegeben. Ist die Wahre in einer
 Anderen Stadt hat der Spieler die Wahl sich die Wahre in der anderen Stadt selbst ab zu holen oder
 gegen Gebühr von der Handelsgesellschaft Liefern zu lassen. Der Verkäufer erhällt das Geld in jeder
 Filiale abzüglich der Lagergebühren.

</p>

<br></br>

<?php

$verbindung = mysql_connect("localhost", "Benutzername", "Passwort")
or die ("Die Verbindung zum Server konnte nicht hergestellt werden. Versuchen sie es später erneut");

mysql_select_db("ni504870_1sql2")
or die ("Die Verbindung zur Datenbank konnte nicht hergestellt werden. Versuchen sie es später erneut");

$abfrage = "SELECT * FROM Tabelle1";
$ergebnis =mysql_query($abfrage);
?>


<table id="Auktionshaus">
<tr id="Auktionshauskopf">
<th id="Auktionshaus">Bezeichnung</th>
<th id="Auktionshaus">Kategorie</th>
<th id="Auktionshaus">Anzahl</th>
<th id="Auktionshaus">Einzelpreis</th>
<th id="Auktionshaus">Gesamtpreis</th>
<th id="Auktionshaus">Auktionsende</th>
<th id="Auktionshaus">Verkäufer</th>
</tr>

<?php
$hintergrundfarbe = 1;
while($zeile = mysql_fetch_object($ergebnis))
{

?>
<tr>
<td id="Auktionshaus"><?php echo $zeile->Bezeichnung; ?></td>
<td id="AuktionshausC"><?php echo $zeile->Kategorie; ?></td>
<td id="AuktionshausR"><?php echo $zeile->Anzahl; ?></td>
<td id="AuktionshausR"><?php echo $zeile->Einzelpreis; ?> Gold</td>
<td id="AuktionshausR"><?php echo $zeile->Gesamtpreis; ?> Gold</td>
<td id="AuktionshausC"><?php echo $zeile->Auktionsende; ?></td>
<td id="Auktionshaus"><?php echo $zeile->Verkaeufer; ?></td>
</tr>

<?php
}
?>
</table>
<?php

mysql_close($verbindung)
?>


Sucheseite Auktionshaus:
PHP:
<br>
<h1 style="margin-left:231px;"><font size="6" color=DBBF94><b>Auktionshaus</b></font></h1>
</br>

<button id="Suche2"></button>
<a href="https://<name Einfügen>/auktionshaus-1/"><button id="Info"></button></a>
<a href="https://<name Einfügen>/auktionshaus-3"><button id="Melden"></button></a>

<br></br>

<from" id=Meldung action="https://<name Einfügen>/auktionshaus-4" method="post">
<b style="margin-left:70px;">Bezeichnung:</b>
<b style="margin-left:118px;">Kategorie:</b>
<b style="margin-left:135px;">Verkäufer:</b>

<br>

<input style="margin-left:70px; width:140px;" type="text" name="Bezeichnung" />
<input style="margin-left:66px; width:140px;" type="text" name="Kategorie" />
<input style="margin-left:66px; width:140px;" type="text" name="Verkaeufer" />

</br><br>

<input style="margin-left:70px;" type="submit" value="Go!" />
</form>

<br></br>
<br></br>

<?php

$verbindung = mysql_connect("localhost", "Benutzername", "Passwort")
or die ("Die Verbindung zum Server konnte nicht hergestellt werden. Versuchen sie es später erneut");

mysql_select_db("Datenbankname")
or die ("Die Verbindung zur Datenbank konnte nicht hergestellt werden. Versuchen sie es später erneut");

$abfrage = "SELECT * FROM Tabelle1";
$ergebnis =mysql_query($abfrage);
?>


<table id="Auktionshaus">
<tr id="Auktionshauskopf">
<th id="Auktionshaus">Bezeichnung</th>
<th id="Auktionshaus">Kategorie</th>
<th id="Auktionshaus">Anzahl</th>
<th id="Auktionshaus">Einzelpreis</th>
<th id="Auktionshaus">Gesamtpreis</th>
<th id="Auktionshaus">Auktionsende</th>
<th id="Auktionshaus">Verkäufer</th>
</tr>

<?php
$hintergrundfarbe = 1;
while($zeile = mysql_fetch_object($ergebnis))
{

?>
<tr>
<td id="Auktionshaus"><?php echo $zeile->Bezeichnung; ?></td>
<td id="AuktionshausC"><?php echo $zeile->Kategorie; ?></td>
<td id="AuktionshausR"><?php echo $zeile->Anzahl; ?></td>
<td id="AuktionshausR"><?php echo $zeile->Einzelpreis; ?> Gold</td>
<td id="AuktionshausR"><?php echo $zeile->Gesamtpreis; ?> Gold</td>
<td id="AuktionshausC"><?php echo $zeile->Auktionsende; ?></td>
<td id="Auktionshaus"><?php echo $zeile->Verkaeufer; ?></td>
</tr>

<?php
}
?>
</table>
<?php

mysql_close($verbindung)
?>


Meldungsseite Auktionshaus:
Seite 1:
PHP:
<br>
<h1 style="margin-left:231px;"><font size="6" color=DBBF94><b>Auktionshaus</b></font></h1>
</br>

<a href="https://<name Einfügen>/auktionshaus-2"><button id="Suche"></button></a>
<a href="https://<name Einfügen>/auktionshaus-1"><button id="Info"></button></a>
<button id="Melden2"></button>

<p id="Meldnungstext">
Hier könnt Ihr Spieler die sich beim Handel über das Auktionshaus falsch verhalten oder betrügen 
melden. Jedoch werden nur ernst zu nehmende Meldungen geandet und falschmeldungen haben 
konzequenzen. 
</p>

<br></br>

<from" id=Meldung action="https://<name Einfügen>/auktionshaus-4" method="post">
<b style="margin-left:70px;">Melder:</b>
<b style="margin-left:156px;">Gemeldeter:</b>
<b style="margin-left:126px;">Datum:</b>

<br>

<input style="margin-left:70px; width:140px;" type="text" name="Meldender" />
<input style="margin-left:66px; width:140px;" type="text" name="Gemeldeter" />
<input style="margin-left:66px; width:140px;" type="date" name="Datum" />

</br><br>

<b style="margin-left:70px;">Begründung:</b><br>
<input style="margin-left:70px; width:562px;" type="text" name="Begruendung" />

</br><br>

<input style="margin-left:70px;" type="submit" value="Go!" />
</form>

</br><br></br>
<?php

$verbindung = mysql_connect("localhost", "Benutzername", "Passwort")
or die ("Die Verbindung zum Server konnte nicht hergestellt werden. Versuchen sie es später erneut");

mysql_select_db("Datenbankname")
or die ("Die Verbindung zur Datenbank konnte nicht hergestellt werden. Versuchen sie es später erneut");

$abfrage = "SELECT * FROM Tabelle1";
$ergebnis =mysql_query($abfrage);


?>


<table id="Auktionshaus">
<tr id="Auktionshauskopf">
<th id="Auktionshaus">Bezeichnung</th>
<th id="Auktionshaus">Kategorie</th>
<th id="Auktionshaus">Anzahl</th>
<th id="Auktionshaus">Einzelpreis</th>
<th id="Auktionshaus">Gesamtpreis</th>
<th id="Auktionshaus">Auktionsende</th>
<th id="Auktionshaus">Verkäufer</th>
</tr>

<?php
$hintergrundfarbe = 1;
while($zeile = mysql_fetch_object($ergebnis))
{

?>
<tr>
<td id="Auktionshaus"><?php echo $zeile->Bezeichnung; ?></td>
<td id="AuktionshausC"><?php echo $zeile->Kategorie; ?></td>
<td id="AuktionshausR"><?php echo $zeile->Anzahl; ?></td>
<td id="AuktionshausR"><?php echo $zeile->Einzelpreis; ?> Gold</td>
<td id="AuktionshausR"><?php echo $zeile->Gesamtpreis; ?> Gold</td>
<td id="AuktionshausC"><?php echo $zeile->Auktionsende; ?></td>
<td id="Auktionshaus"><?php echo $zeile->Verkaeufer; ?></td>
</tr>

<?php
}
?>
</table>
<?php

mysql_close($verbindung)
?>

Seite 2:
PHP:
<?php

$verbindung = mysql_connect("localhost", "Benutzername", "Passwort")
or die ("Die Verbindung zum Server konnte nicht hergestellt werden. Versuchen sie es später erneut");

mysql_select_db("Datenbankname")
or die ("Die Verbindung zur Datenbank konnte nicht hergestellt werden. Versuchen sie es später erneut");

$abfrage = "SELECT * FROM Tabelle2";
$ergebnis =mysql_query($abfrage);

$Meldender = $_POST["Meldender"];
$Gemeldeter = $_POST["Gemeldeter"];
$Datum = $_POST["Datum"];
$Begruendung = $_POST["Begruendung"];

if($Meldender == "" or $Gemeldeter == "" or $Datum == "" or $Begruendung == "") {
echo "Du hast nicht alle Felder nicht ausgefüllt!";
} else {

$eintrag = "INSERT INTO Meldeliste
(Meldender, Gemeldeter, Datum, Begruendung)
VALUES
('$Meldender', '$Gemeldeter', '$Datum', '$Begruendung')";

$eintragen = mysql_query($eintrag);

if($eintragen == true) {
echo "Deine Meldung wurde weitergeleitet.";
} else {
echo "Deine Meldung konnte nicht weitergeleitet werden.";
}

mysql_close($verbindung)
?>
 
Zuletzt bearbeitet:
Sucheseite Auktionshaus enthält zwar </form>, aber nicht das öffnende Tag <form ...> selbst.
 
[...]Ich poste in den Spoilern mal auch meine Codezeilen die ich bisher habe. Vieleicht kennt sich da ja jemand aus und kann mir helfen.[...]desweiteren habe ich die logindaten durch Platzhalter wie "Datenbankname" getauscht. Ich hoffe dass ich nichts übersehen habe[...]

Hallo Hikarihoshi

Leider hast Du da doch etwas übersehen: Startseite Auktionshaus, Zeile 33 (oder in der Umgebung, die Zeilenzahlen sind ein wenig verrutscht - gilt auch für die Angaben weiter unten) ist noch der Datenbankname drin.
Dann der zweite wichtige Teil ist: NIEMALS einen POST direkt in der Datenbankabfrage verwenden. Siehe Dir dazu Artikel über SQL-Injektionen (Beispiel: Wikipedia) und die PHP-Funktion mysql_real_escape_string() an.

Zu Deinem Problem: Wie B2T bereits sagte; leider wurden einige Codeteile abgeschnitten (Meldungsseite Auktionshaus: Zeilen 8, 9 und 20; Sucheseite Auktionshaus: Zeilen 8, 9 und 13; Startseite Auktionshaus: Zeilen 7 und 9). Es ist daher schwierig, das Gesamtbild zu sehen. Zudem habe ich momentan zu wenig Zeit, um mir dies genauer anzusehen. Vielleicht kann Dir jemand anderes weiterhelfen oder ich etwas später.

Edit "später" (19. Juli 2019, 00:10):

Also... Ich hab mir das jetzt noch ein wenig stärker angeschaut...
Ohne zu wissen, wie genau der vollständige <form ...> Tag aussieht und ohne eventuelle Fehlermeldungen kann ich leider nur raten, was schiefgegangen sein könnte...
  • Ein Grossteil der Webhoster haben ihre PHP-Version auf die neusten Versionen aktualisiert, sprich: "mysql"-Funktionen existieren nicht mehr. Dafür gibt's jetzt "mysqli"-Funktionen. Je nach Einstellung ist dies aber kein Problem, da es teilweise zugelassen wird, eine alte PHP-Version zu verwenden (oder Du bist selbst der Hoster, dann kannst Du's natürlich selbst bestimmen).
  • Ich sehe keine Verarbeitung für die Eingaben im Skript von "Sucheseite Auktionshaus". Könnte mit der abgeschnittenen Formulareingabe zu tun haben, oder es zeigt wirklich auf die Seite "auktionshaus-4" (was, ausgehend von "Meldungsseite Auktionshaus" Seite 1, der "Meldungsseite Auktionshaus" Seite 2 entsprechen würde), die nicht darauf ausgelegt ist, diese Infos zu verarbeiten (da sie "Meldender, Gemeldeter, Datum, Begruendung" erwartet und nicht "Bezeichnung, Kategorie, Verkaeufer") und folglich entweder ein "Du hast nicht alle Felder nicht ausgefüllt!" ausgeben würde oder bereits bei der Variablenzuweisung Fehler meldet / Abstürzt.

Des Weiteren (allgemeine Tipps):
  • Vorausgesetzt, Du hast keine weiteren CSS mit Sonderregeln oder eine mir unbekannte HTML-Variante, funktioniert das <br> nicht so, wie Du Dir das vielleicht vorstellst. Ein <br> Tag braucht - nein, darf! - keinen Schlusstag haben. Ein <br> beginnt eine neue Zeile, entspricht also dem Drücken der Enter-/Return-Taste. '<br>Text</br>' ist also kein Absatz, sondern '[Neue Zeile] Text [Unbekanntes Tag]'.
  • Es ist gute Praxis, "id"s in HTML-Code nur einmal zu verwenden. Mehrfachanwendungen wie etwa 'id="Auktionshaus"' sollten durch "class" ersetzt werden (etwa: 'class="Auktionshaus"'). Klassen werden im CSS mit einem . (Punkt) statt einem # (Gartenhag/Hashtag) gesetzt.
  • Du erwähnst Dein Wissen über altes HTML, aber leider nicht, ob der geschriebene Code jetzt HTML5 ist oder eine andere/ältere Version (doctype ist nicht ersichtlich). Falls es HTML5 ist, sind <b> und ähnliche Tags nicht mehr "gestattet" und sollten durch Styles zum Ausdruck gebracht werden (etwa: '<b style="margin-left:118px;">Kategorie:</b>' wird zu '<span style="margin-left:118px; font-weight:bold;">Kategorie:</span>'). Gilt für b/i/u/center/...; grundsätzlich alle Textformatierungen - ausgenommen (je nach Diskussionsansicht) sup/sub.

Ich hoffe, ich konnte alles Denkbare abdecken... Lass es mich/uns wissen, falls weitere Hilfe nötig und erwünscht ist :D .
 
Zuletzt bearbeitet: