Zum Inhalt springen

PHP Webdokument => SQL-Abfrage


Empfohlene Beiträge

Hallo...

ich benötige dringend fachlich kompetente Hilfe ;)

Unser Dozent is heute nicht da, deswegen sind wir so ziemlich auf uns alleine gestellt.

In meinem Kurs müssen wir heute & morgen ein PHP-Dokument mit einer verknüpften Datenbank des WM-Spielplans erstellen. Dieser soll so aussehen:

Dokument:

3 Eingabefelder (input-type): 1. Datum, 2. Ort, 3. Uhrzeit

1 Auswahlfeld (option): Gruppe A-Gruppe G, Achtel-, Viertel-, Halbfinale und Platz 3, Finale

2 Auswahlfelder: Mannschaft 1, Mannschaft 2

2 Eingabefelder: Tore Mannschaft 1, Tore Mannschaft 2

SQL-Datenbank:

1. Tabelle (3 Spalten) -> Länder: land_id (Primary), land, gruppen_id

2. Tabelle (2 Spalten) -> Gruppen: gruppen_id (Primary), Bezeichnung (Gruppe A-G, Achtel-, Viertelfinale usw)

3. Tabelle (8 Spalten) -> Spiel: datum, ort, uhrzeit, länder_id_1, tore_land_1, länder_id_2, tore_land_2, gruppen_id

Verknüpfung:

land_id (1. Tabelle) => land_id_1, land_id_2 (3. Tabelle)

gruppen_id (2. Tabelle) => gruppen_id (1. Tabelle)

Datensätze:

1. Tabelle (Länder): 32 Datensätze => land_id (1-32), land (Brasilien-Südkorea), gruppen_id (1->Gruppe A, 2->Gruppe B, usw)

2. Tabelle (Gruppen): 24 Datensätze => gruppen_id (1-24), Bezeichnung (Gruppe A, Gruppe B,... Achtelfinale, Viertelfinale...)

3. Tabelle (Spiel) => Diese Datensätze werden mit dem PHP-Dokument eingetragen. Also was ich im Dokument eingebe, wird dann in der 3. Tabelle in den richtigen Spalten gespeichert

So wie oben beschrieben muss das ganze aussehen... Und nun kommt Ihr ins Spiel. Ich brauch mal paar Vorschläge wie der Code aussehen könnte. Ich hab zwar schon einiges erstellt, aber irgendwie klappt das bei mir nich mit der Datenausgabe in der mySQL-Datenbank.

Um ehrlich zu sein, ich steh grad gehörig auf dem Schlauch.

Vielen Dank schonmal...:)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gast KnapsackSolver

Geht es nur um das SQL-Statement oder geht es darum das du keine Ahnung hast, wie man eine DB-Verbindung herstellt, Daten aus einem Textfeld liest usw ?

Du musst schon genauer werden...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie man Daten aus der Datenbank holt, bzw. einspeist weiß ich... Dafür gibts ja die diese Befehle:

$verbindung = mysql_connect...

mysql_select_db

$sql = "...";

$_POST...

$ergebnis = mysql_fetch_object...

$ergebnis = mysql_query...

usw...

Das is mir alles klar... Mein Problem ist nur das im Dokument, beim holen der Daten aus der DB, der Quellcode dasteht. Ich hab zwar auch die Eingabe-/Auswahlfelder aber da steht auch nur der Quellcode drin. Da sollten eigentlich Daten aus den Tabellen der DB sein.

Beim schreiben in die Datenbank funktioniert es problemlos. Ich geb Daten in die Options-Felder ein und es werden die Daten im mySQL erstellt. Da hab ich aber wieder das Problem das die Daten nicht in den richtigen Spalten stehen, aber das bekomm ich hin.

geht es darum das du keine Ahnung hast, wie man eine DB-Verbindung herstellt, Daten aus einem Textfeld liest usw ?

Deswegen lern ich es ja... ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier hab ich mal die Inhalte der Datenbanken aufgelistet.

Tabelle Länder

Tabelle Gruppen

Tabelle Spiele

Bei den ersten beiden sind die Daten vorgegeben und nicht änderbar. Bei der dritten (Spiele) ist nur die Struktur, aber keine Werte. Diese müssen über das PHP-Dokument eingegeben werden.

Und hier noch mein derzeitiger Quellcode, wo aber noch einiges fehlt:

<html>

<body bgcolor="#CCFFFF">

<?php

$verbindung = mysql_connect("127.0.0.1","root","") or die ("NSA hat Verbindung gekappt");

mysql_select_db("wm") or die("Datenbank wurde komprimitiert");

if (isset ($_POST['abschicken']))

echo "<form action='WM.php' method='post'>

<b>Datum:</b> <input type='date' name='datum'><br>

<b>Ort:</b> <select name='liste_ort'>

<option value='Belo Horizonte'>Belo Horizonte</option>

<option value='Brasilia'>Brasilia</option>

<option value='Cuiabá'>Cuiaba</option>

<option value='Curitiba'>Curitiba</option>

<option value='Fortaleza'>Fortaleza</option>

<option value='Manaus'>Manaus</option>

<option value='Natal'>Natal</option>

<option value='Porto Alegre'>Porto Alegre</option>

<option value='Recife'>Recife</option>

<option value='Rio de Janeiro'>Rio de Janeiro</option>

<option value='Salvador da Bahia'>Salvador da Bahia</option>

<option value='Sao Paulo'>São Paulo</option></select><br>

<b>Uhrzeit:</b> <select name='liste_time'>

<option value='18:00:00'>18:00 Uhr</option>

<option value='21:00:00'>21:00 Uhr</option>

<option value='22:00:00'>22:00 Uhr</option>

<option value='00:00:00'>00:00 Uhr</option></select><br>";

<b>Gruppe:</b> $sql = "SELECT gr_id,Bezeichnung FROM gruppe";

$ergebnis = mysql_query($sql) or die (mysql_error($verbindung));

echo "<select name='gr_id' size='1'>";

while ($row = mysql_fetch_object($ergebnis))

{

echo "<option value='" . $row->gr_id . "'>";

echo $row->Bezeichnung . "</option>";

}

echo "</select>";

<b>Land 1:</b> $sql = "SELECT land_id,land FROM länder";

$ergebnis = mysql_query($sql) or die (mysql_error($verbindung));

echo "<select name='land_id' size='1'>";

while ($row = mysql_fetch_object($ergebnis))

{

echo "<option value='" . $row->land_id . "'>";

echo $row->land . "</option>";

}

echo "</select>";

<b>Land 2:</b> $sql = "SELECT land_id,land FROM länder";

$ergebnis = mysql_query($sql) or die (mysql_error($verbindung));

echo "<select name='land_id' size='1'>";

while ($row = mysql_fetch_object($ergebnis))

{

echo "<option value='" . $row->land_id . "'>";

echo $row->land . "</option>";

}

echo "</select>";

"<b>Ergebnis:<b/><input type='text' size='2' name='tor_land_1>

<b> : </b> <input type='text' size='2' name='tor_land_2>";

mysql_close($verbindung);

?>

</body>

</html>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gast KnapsackSolver
Das is mir alles klar... Mein Problem ist nur das im Dokument, beim holen der Daten aus der DB, der Quellcode dasteht. Ich hab zwar auch die Eingabe-/Auswahlfelder aber da steht auch nur der Quellcode drin. Da sollten eigentlich Daten aus den Tabellen der DB sein.

Also zum Anfang:

1.) Ich an deiner Stelle würde das alles schon einmal anders strukturieren... -> Die HTML-Eingabesachen auslagern und dann über dein Method-Post den entsprechenden PHP-Code aufrufen!

Hier kannst du dann deine Tabelle oder was auch immer zu machen möchtest zeichnen lassen, füllen etc pp !

2.) Was meinst du damit, es steht nur dein Quellcode da ??

-> Das bedeutet, dass du in der Variable $ergebnis keine Werte hast? Dann ist dein SQL - Statement vielleicht falsch... ! Hast du darauf geachtet, dass du die Spaltennamen richtig gewählt hast und den Tabellen - Namen ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

@SakulRelda

Das mit der Auslagerung hat nich ganz funktioniert. Da kam immer ne Fehlermeldung. Ich hab das alles in einem Script erstellt.

Wen es interessiert, unten steht der komplette php-Code. Am besten mit Chrome anschauen. Firefox kennt die Funktion Date & Time nicht. Die HTML-Formatierung (Aussehen der Seite) is nich toll, aber das is ja egal. Ist auch mein erstes selbsterstelltes PHP-Script mit einer SQL-Datenabfrage.

Wenn jemand noch ein Tip hat um das noch zu pimpen immer her damit

Falls es jemand testen will, kann ich ja bei Bedarf die Datenbank hochladen. Ohne erscheint dann logischerweise die Anzeige "Datenbank wurde komprimitiert.

<html>

<body bgcolor="#CCFFFF">

<?php

$verbindung = mysql_connect("127.0.0.1","root","") or die("NSA hat Verbindung gekappt");

mysql_select_db("wm") or die("Datenbank wurde komprimitiert");

echo "<form action='wm2014.php' method='POST'>";

echo"<h1>Eingabe der WM-Spiele</h1><br>";

// Eingabefeld für Datum

echo "<b>Datum</b><br> <input type='date' size='20' name='datum'><br><br>";

// Eingabefeld für Spielort

echo "<b>Spielort</b><br> <input type='text' size='20' name='ort'><br><br>";

// Eingabefeld für Anstoßzeit

echo "<b>Zeit</b><br> <input type='time' size='20' name='uhrzeit'><br><br>";

// Optionsfeld Gruppe für Eingabe

$sql = "SELECT gr_id,Bezeichnung FROM gruppe";

$ergebnis = mysql_query($sql) or die(mysql_error($verbindung));

echo "<b>Gruppe</b><br>";

echo "<select name='gr_id' size='1'>";

while ($row=mysql_fetch_object($ergebnis))

{

echo "<option value='" . $row->gr_id . "'>";

echo $row->Bezeichnung . "</option>";

}

echo "</select><br><br>";

// Optionsfeld Land1

$sql = "SELECT land_id,land FROM laender";

$ergebnis = mysql_query($sql) or die(mysql_error($verbindung));

echo "<b>Land 1</b><br>";

echo "<select name='land_id_1' size='1'>";

while ($row=mysql_fetch_object($ergebnis))

{

echo "<option value='" . $row->land_id . "'>";

echo $row->land . "</option>";

}

echo "</select><br><br>";

// Optionsfeld Land2

$sql = "SELECT land_id,land FROM laender";

$ergebnis = mysql_query($sql) or die(mysql_error($verbindung));

echo "<b>Land 2</b><br> ";

echo "<select name='land_id_2' size='1'>";

while ($row=mysql_fetch_object($ergebnis))

{

echo "<option value='" . $row->land_id . "'>";

echo $row->land . "</option>";

}

echo "</select><br><br>";

// Eingabefeld für Tore von Land1

echo "<b>Tore Land 1</b><br> <input type='text' size='1' maxlength='2' name='tor_land_1'><br><br>";

// Eingabefeld für Tore von Land2

echo "<b>Tore Land 2</b><br> <input type='text' size='1' maxlength='2' name='tor_land_2'><br><br>";

echo "<input type='submit' name='snd' value='Speichern'>

</form>";

// Beginn Daten in die Datenbank eintragen

if (isset($_POST['snd']) && $_POST['land_id_1'] <> $_POST['land_id_2'])

{

$sql = "INSERT INTO spiel(datum,ort,uhrzeit,land_id_1,tor_land_1,land_id_2,tor_land_2,gr_id)

VALUES ('" . $_POST['datum'] . "','" . $_POST['ort'] . "','" . $_POST['uhrzeit'] .

"'," . $_POST['land_id_1'] . "," . $_POST['tor_land_1'] . "," . $_POST['land_id_2'] .

"," . $_POST['tor_land_2'] . "," . $_POST['gr_id'] . ")";

$ergebnis = mysql_query($sql) or die(mysql_error($verbindung));

}

// Ende Daten in die Datenbank eintragen

mysql_close($verbindung);

$verbindung = mysql_connect("127.0.0.1","root","") or die("NSA hat Verbindung gekappt");

mysql_select_db("wm") or die("Datenbank wurde komprimitiert");

echo "<form action='wm2014.php' method='POST'>";

echo"<h1>Anzeige der Gruppenspiele</h1><br>";

// Optionsfeld Gruppe für Anzeige

$sql = "SELECT gr_id,Bezeichnung FROM gruppe";

$ergebnis = mysql_query($sql) or die(mysql_error($verbindung));

echo "Bitte Gruppe auswählen.";

echo "<select name='gr_id' size='1'>";

while ($row=mysql_fetch_object($ergebnis))

{

echo "<option value='" . $row->gr_id . "'>";

echo $row->Bezeichnung . "</option>";

}

echo "</select><br>";

echo "<input type='submit' name='snd2' value='Anzeigen'>";

if (isset($_POST['snd2']))

{

$gr_id=$_POST['gr_id'];

$sql = "SELECT Bezeichnung,datum,ort,uhrzeit,a.land AS name1,tor_land_1,b.land AS name2,

tor_land_2 FROM gruppe,spiel,laender AS a,laender AS b WHERE spiel.gr_id=gruppe.gr_id

AND land_id_1=a.land_id AND land_id_2=b.land_id AND gruppe.gr_id=$gr_id";

$ergebnis = mysql_query($sql) or die(mysql_error($verbindung));

echo "<table>";

while ($row = mysql_fetch_object($ergebnis))

{

echo "<tr>";

echo "<td>" . $row->Bezeichnung . "</td>";

echo "<td>" . $row->datum . "</td>";

echo "<td>" . $row->ort . "</td>";

echo "<td>" . $row->uhrzeit . "</td>";

echo "<td>" . $row->name1 . "</td>";

echo "<td>" . $row->name2 . "</td>";

echo "<td>" . $row->tor_land_1. "</td>";

echo "<td>" . $row->tor_land_2 . "</td>";

echo "</tr>";

}

echo "</table>";

}

"</form>";

mysql_close($verbindung);

?>

</body>

</html>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gast KnapsackSolver
Tip!

Trennung, View und Logik (HTML vs. PHP)!

Im Weiteren!

Strichwörter:

-KISS

-SRP

-DRY

-Modularisierung

-Design-Patterns

-OOx(x=A,D,P)

.... bla bla ;) ! Viel Spass weiterhin, und immer am Ball bleiben sieht doch schon mal gut aus im Sinne von Problem gelöst ;)!

Gruß

Patrick

Genau das meinte ich... Er hat jetzt die komplette Seite über PHP erstellt. Jedoch ist das nicht der wirkliche Sinn... Eigentlich programmiert man immer nach dem MVC Prinzip. Also M -> Model V -> View C -> Controller

Ich verweise jetzt hier einfach mal auf die Wiki - Seite zu diesem Konzept. Kannst es dir ja mal unter Umständen anschauen. Das würde auch sicherlich deinem Dozent Freude bereiten, wenn du nicht so ein gewurstel abgibst!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Genau das meinte ich... Er hat jetzt die komplette Seite über PHP erstellt. Jedoch ist das nicht der wirkliche Sinn... Eigentlich programmiert man immer nach dem MVC Prinzip. Also M -> Model V -> View C -> Controller

Also ich glaube nicht, dass wirklich jeder nach dem MVC Pattern programmiert. Gibt ja noch genug andere, Microsoft zum Beispiel nutzt hauptsächlich MVVM.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mit dem MVC-Prinzip arbeiten wir ja im Grunde. Das andere wäre WYSIWYG... Das is schon so korrekt. Mein Dozent war begeistert... Aufgrund der Vermeidung von Konflikten, machen wir das alles in einem Dokument. Wenn wir damit mehr Erfahrung haben, kann man das alles auf mehr Dokumente aufteilen.

Strichwörter:

-KISS

-SRP

-DRY

-Modularisierung

-Design-Patterns

-OOx(x=A,D,P)

Weiß jetz nicht genau was du damit meinst...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zitat :"Wenn jemand noch ein Tip ....."

Das waren u.a. allgemeine Stichwörter nicht direkt auf deine Problemstellung bezogen, die Dir in naher Zukunft so hoffe ich etwas sagen werden und Du dann auch weisst was ich meine ;). Es kann der Qualität der Software die Du zukünftig entwickeln wirst nicht abträglich sein!

Zitat :"Mit dem MVC-Prinzip arbeiten wir ja im Grunde. Das andere wäre WYSIWYG... " :eek

Du solltest diese Aussage dringend noch mal reflektieren. (Die beiden Dinge haben nichts mit einander zu tun!)

Gruß

Patrick

Bearbeitet von Patrick_C64
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...