php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.01.2012, 20:17  
Neuer Benutzer
 
Registriert seit: 12.01.2012
Beiträge: 6
PHP-Kenntnisse:
Anfänger
frecker94 befindet sich auf einem aufstrebenden Ast
Standard Stundenplansystem für Oberstufe

Guten Abend,
Ich bin neu im Forum und hab auch gleich ein Problemen :P

Und zwar sollen wir in der Schule im Informatikunterricht 12. Klasse ein Stundenplansystem entwickeln. Dieses soll in unserem Entwurf aus einer Datenbank in MySQL und einer Benutzeroberfläche in PHP bestehen.

Für die Datenbank haben wir uns einen Entwurf ausgedacht:

1. Tabelle: schueler
-schueler_id
-vorname
-nachname
-jahrgang
(-später Erweiterungen möglich)


2. Tabelle: kurse_schueler
-schueler_id
-kurs_id

3. Tabelle: kurse
-kurs_id
-fach
-lehrer (später evtl. mit eigener Untertabelle)

4. Tabelle: stundenplan
-id
-stunden_id*
-kurs_id
-raum_id

*Stunden bisher als System 101 bis 510
Dabei steht die erste Stelle für den Tag 1-5, also Montag bis Freitag und die übrigen beiden stehen für die Stunde.


Das ganze läuft auf einem Mac mit XAMMP 1.7.3


Mein Partner hat nun die Datenbank erstellt. Ich habe mit der PHP-Programmierung begonnen.

Die Eingabe erfolgt über eine Reihe von PHP-Seiten.

Auf der Ersten Seite tippt der Schüler seinen Namen, Vornamen und seine Jahrgangsstufe ein. Über POST-GET werden die Eingaben an die zweite Seite übertragen und dort in Session-Variablen und die 1. Tabelle der Datenbank eingetragen. Nun kann der Schüler per DropDown-Menüs seine Kurse wählen. Auf der nächsten Seite wird als erstes die id des Schülers aus der Datenbank abgerufen (Eintrag in DB existiert nun und Eingabe ist dank Session noch erhalten). Die Schüler_id und die entsprechenden kurs_id's werden nun in der 2. Tabelle eingetragen.

Soweit ist die Eingabe nun erfolgt. Soweit funktioniert mein Code auch.

Nun kommen wir zur Ausgabe:

Als erstes habe ich die ID des Schülers. Mit Hilfe dieser möchte ich alle Kurs_id's in einem Array speichern. Die Einträge dieses Arrays sollen nun nacheinander abgearbeitet werden, Schleifenzahl durch Anzahl der Einträge/Kurse im Array begrenzt. In der Schleife werden mithilfe der kurs_id dann die entsprechenden Stunden und Räume aufgerufen. Diese sollen am Ende nach der Stelle in der Woche in einer Tabelle angeordnet erscheinen.

Die $schueler_id existiert und kann ausgegeben werden. Ein Zugriff auf die Datenbank besteht.

Die Frage ist nun, wie ich diesen Array zustande bekomme.

Mein Ansatz:

$kurse = array();
$query = mysql_query("SELECT kurs_id FROM kurse_schueler WHERE schueler_id = '$schueler_id'");

while($row = mysql_fetch_array($query))
{$kurs_id[] = $row['name'];}

Und danach dann mit count die Einträge zählen und eine WHILE-Schleife starten in der aus der 4. Tabelle dann die restlichen zur Kurs_id gehörigen Zeiten und Räume aus der DB abgerufen werden. Am Ende muss ich das ganze noch irgendwie so umwandeln, dass ich es als Stundenplan angezeigt bekomme.

Mein hauptsächliches Problem liegt aber erstmal bei diesem Array. Seht ihr auf die Schnelle Fehler, habt ihr Tipps oder soll ich später noch mehr vom Code hochladen?
frecker94 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 12.01.2012, 21:53  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Das Datenbankschema sieht top aus, gute Arbeit.

Was ich so bei deinem Ansatz sehe: $kurse benutzt du nicht, $row["name"] wird NULL sein, du selektierst keine Spalte, die so heißt. Du selektierst kurs_id. Schalt mal dein error_reporting(E_ALL | E_STRICT) und ini_set("display_errors", 1) hoch, dann siehst du solche Fehler.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 12.01.2012, 21:56  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
*Stunden bisher als System 101 bis 510
Dabei steht die erste Stelle für den Tag 1-5, also Montag bis Freitag und die übrigen beiden stehen für die Stunde.
Warum macht Ihr es nicht gleich richtig?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 12.01.2012, 22:19  
Neuer Benutzer
 
Registriert seit: 12.01.2012
Beiträge: 6
PHP-Kenntnisse:
Anfänger
frecker94 befindet sich auf einem aufstrebenden Ast
Standard

@Chriz: Danke hast mich schonmal weiter gebracht ist mir irgendwie bisher auch noch nicht so aufgefallen. Liegt wohl am Stress derzeit...

@nikosch: Ob 1 Feld mit beiden Werten kombiniert oder 2 Felder spielt letztlich keine große Rolle...Ausserdem war das die Idee unseres Lehrers das mit diesem 3-stelligen Zahlensystem zu machen

Werde versuchen mich noch mal ein bisschen dranzusetzen damit das ganze dann endlich mal läuft :P


EDIT:

$zahl = "0";
$query = mysql_query("SELECT kurs_id FROM kurse_schueler WHERE schueler_id = '$schueler_id'");

while($row = mysql_fetch_array($query))
{$zahl = $zahl +1;
$kurs_id[] = $row['$zahl'];
echo $zahl;}

Gibt mir jetzt die Zahlen 1-36 aus. Und der Testkandidat hat auch genau 36 Kurse. Also haben wir das Problem soweit schon gelöst und ich guck jetzt mal wie ich weitermache...

Geändert von frecker94 (12.01.2012 um 22:31 Uhr).
frecker94 ist offline   Mit Zitat antworten
Alt 12.01.2012, 22:59  
Benutzer
 
Registriert seit: 31.05.2011
Beiträge: 49
PHP-Kenntnisse:
Fortgeschritten
DonManfred befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
$kurs_id = array();
while(
$row mysql_fetch_array($query)){
  
$zahl++;
  
$kurs_id[] = $row['$zahl'];
}
$anzahl sizeof($kurs_id); 
Wobei es dir beliebt die Variante mit $zahl zu benutzen oder $anzahl. Beides geht...
DonManfred ist offline   Mit Zitat antworten
Alt 12.01.2012, 23:07  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Sorry, aber das kann gar nicht funktionieren. '$zahl' wird nicht umgewandelt. Und überhaupt wüßte ich nicht, woher der numerische Index kommen sollte.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 12.01.2012, 23:15  
Neuer Benutzer
 
Registriert seit: 12.01.2012
Beiträge: 6
PHP-Kenntnisse:
Anfänger
frecker94 befindet sich auf einem aufstrebenden Ast
Standard

Warum genau soll es nicht funktionieren?

Das nun folgende $kursanzahl = count($kurse);

Gibt mir schließlich auch die passende menge aus, was bedeutet, dass nicht nur die schleife oft genug durchlaufen wurde, sondern die variablen auch in den Array gelegt wurden..

Da ich Anfänger bin, bin ich natürlich gerne offen für Tipps und letztlich auch ein bisschen darauf angewiesen...
frecker94 ist offline   Mit Zitat antworten
Alt 12.01.2012, 23:16  
hts
Erfahrener Benutzer
 
Registriert seit: 07.09.2010
Beiträge: 722
PHP-Kenntnisse:
Fortgeschritten
hts befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von frecker94 Beitrag anzeigen
*Stunden bisher als System 101 bis 510
Dabei steht die erste Stelle für den Tag 1-5, also Montag bis Freitag und die übrigen beiden stehen für die Stunde.
Ich schließe mich nikosch an, das halte ich auch für falsch.

Zitat:
Zitat von frecker94 Beitrag anzeigen
Und danach dann mit count die Einträge zählen und eine WHILE-Schleife starten in der aus der 4. Tabelle dann die restlichen zur Kurs_id gehörigen Zeiten und Räume aus der DB abgerufen werden.
Klingt nach eine umständlichen Art JOINS nachzubilden.
hts ist offline   Mit Zitat antworten
Alt 12.01.2012, 23:19  
Neuer Benutzer
 
Registriert seit: 12.01.2012
Beiträge: 6
PHP-Kenntnisse:
Anfänger
frecker94 befindet sich auf einem aufstrebenden Ast
Standard

Das mit den JOINS ist zum Beispiel ein guter Tipp
Haben wir anfang des Jahres mal kurz behandelt und wäre ich jetzt nicht drauf gekommen...denke aber eventuell viel einfacher als das ganze in php zu lösen..


EDIT:
Oke ich glaube auch langsam, dass es doch noch nicht funktioniert. Kann mir irgendwer vielleicht nochmal einen kleinen Wink geben? Wenn ich es richtig verstehe, habe ich jetzt ein Array mit der gewünschten Anzahl an Einträgen, diese besitzen aber keinen Inhalt!?

Fehler war erst Undefined index, aber das Habich schon gefunden und war eig auch recht klar.

Jetzt kommt der Fehler ab der 2. Runde für die Schleife Undefined offset

Das heisst mein Array hat nur einen Wert!?

Geändert von frecker94 (12.01.2012 um 23:42 Uhr).
frecker94 ist offline   Mit Zitat antworten
Alt 12.01.2012, 23:37  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Mach mal das

PHP-Code:
$query mysql_query("SELECT kurs_id FROM kurse_schueler WHERE schueler_id = '$schueler_id'");

if(
$row mysql_fetch_array($query)) {
  
print_r ($row);

dann siehst Du erstmal, was als einzelner Datensatz zurückkommt und kannst dann überlegen, wie Du mehrere verarbeiten willst.

Zitat:
$zahl = "0";
Zitat:
$zahl++;
$kurs_id[] = $row['$zahl'];
PHP.de Wiki | Code Smells
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:49 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum