submain Geschrieben 3. Juli 2014 Geschrieben 3. Juli 2014 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... Zitieren
Gast KnapsackSolver Geschrieben 3. Juli 2014 Geschrieben 3. Juli 2014 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... Zitieren
submain Geschrieben 3. Juli 2014 Autor Geschrieben 3. Juli 2014 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... Zitieren
submain Geschrieben 3. Juli 2014 Autor Geschrieben 3. Juli 2014 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> Zitieren
Gast KnapsackSolver Geschrieben 4. Juli 2014 Geschrieben 4. Juli 2014 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 ? Zitieren
submain Geschrieben 7. Juli 2014 Autor Geschrieben 7. Juli 2014 @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> Zitieren
sas86ks Geschrieben 7. Juli 2014 Geschrieben 7. Juli 2014 Nur mal so: Es gibt hier auch (PHP) Code Tags Zitieren
Patrick_C64 Geschrieben 7. Juli 2014 Geschrieben 7. Juli 2014 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 Zitieren
Gast KnapsackSolver Geschrieben 8. Juli 2014 Geschrieben 8. Juli 2014 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! Zitieren
sas86ks Geschrieben 8. Juli 2014 Geschrieben 8. Juli 2014 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. Zitieren
submain Geschrieben 8. Juli 2014 Autor Geschrieben 8. Juli 2014 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... Zitieren
Patrick_C64 Geschrieben 8. Juli 2014 Geschrieben 8. Juli 2014 (bearbeitet) 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 8. Juli 2014 von Patrick_C64 Zitieren
submain Geschrieben 10. Juli 2014 Autor Geschrieben 10. Juli 2014 Danke für die Infos... Da Datenbanken mir in Zukunft noch sehr oft über den Weg laufen, werde ich mich mal in deine "Stichwörter" reinlesen. Zitieren
Empfohlene Beiträge
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.