Best. Anzahl aus MySql Datenbank auslesen

CREATE TABLE `termine` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `text` TEXT NOT NULL , `datum` INT NOT NULL , `erstellt` INT NOT NULL, `klasse` VARCHAR(10) NOT NULL ); CREATE TABLE `lan`.`hausaufgaben` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `text` TEXT NOT NULL , `erstellt` INT NOT NULL, `klasse` VARCHAR(10) NOT NULL );

Das dürfte so in etwa stimmen :smiley: In das Feld klasse kommt dann immer die entsprechende Klasse :wink: Also zum Beispiel 5a oder 5c etc. Und wenn du abfragst dann machste das halt so:

Kapiert?
Edit: immer ihr mit euren kurzen Antworten-.- so lernt der Jung nix :smiley:

Und als Datum machst du ein richtes Datumsfeld, dann kannste auch nach Datum sortieren, falls du zum Beispiel montag was aufbekommst bis Freitag, aber Mittwoch auch noch was das schon am nächsten Tag haben solltest

@inad: fertige lösungen sind aber nix lernen… und als Datum würd ich n richtiges Datumsfeld nehmen, sonst haste n problem…

Schon wieder neue Posts erst mal lesen… :smiley:

EDIT:
@inad

dann muss ich aber doch für jede klasse ne neue tabelle erstellen oder wie?
weil jede hat andere hausaufgeben und termine.
oder geht das doch alles in eine tabelle?

@kla_kal: Ich speichere immer den Unix Timestamp und nicht den Date Wert weil der einfacher zur formatieren ist und eigentlich das Ergebnis das gleiche ist :wink: Und ich habe auch durch Quelltext gelernt nicht durch “mach nen Datumsfeld” :smiley: Aber jeder macht es anders.

@wingi: Mach das :smiley: Testen ist die beste Methode um zu lernen. Denn du solltest erstmal wissen was genau das Teil da macht bevor du es einfach so benutzt. Vor allem wenn du es selber schreibst und es nicht ein fertiges Script ist :wink:

@inad:
ja jedem das seine, aber geht timestamp mit CURDATE() zu vergleichen?

ich mach fürs datum n normales textfeld für die eingabe und mit php wandel ichs dann um. Zum auslesen formatier ichs gleich mit php

Habe aber immernoch da Problem das er beim Eintragen über das Formular den inhalt + ein leeres Feld einträgt was ist da falsch?

if(empty($_REQUEST['5aha']))
    {
    echo "<TR><TH COLSPAN=2>5a</TH></TR><TR><TD>Hausaufgeben:</TD><TD>xxx</TD></TR>";
    }
else
    {
    $eintrag1 = "INSERT INTO chemie (hausaufgaben5a) VALUES ('".$_POST["5aha"]."')";    
    $eintragen1 = mysql_query($eintrag1);
    echo "<TR><TH COLSPAN=2>5a</TH></TR><TR><TD>Hausaufgeben:</TD><TD>".$_POST["5aha"]."</TD></TR>";
    }

if(empty($_REQUEST['5at']))
    {
    echo "<TR><TD>Termin:</TD><TD>xxx</TD></TR>";
    }
else
    {
    $eintrag2 = "INSERT INTO chemie (termine5a) VALUES ('".$_POST["5at"]."')";
    $eintragen2 = mysql_query($eintrag2);
    echo "<TR><TD>Termin:</TD><TD>".$_POST["5at"]."</TD></TR>";
    }

Weil du nur einen wert als Value vorgibst??? du hast doch mehr felder, also datum noch

EDIT: ich schreib die Inserts immer so, das finde ich leserlicher…

$mysql =“INSERT termine SET titel=’$titel’, details=’$details’,datum=’”.explode_date($datum)."’";

So ich bin jetzt etwas weitergekommen!
Das mit dem eintragen klappt jetzt
Ich habe jetzt in der Datenbank wingi
chemie und
dadrin id, hausaufgaben5a, termine5a

ABER:
Beim Eintragen hab ich 2Felder einmal Termin und einmal Hausaufgabe.
Da möchte ich es so machen das auch eins leer bleiben kann da ich ja nicht immer einen neuen Termin hab.Geht auch aber dann ist das Feld ja leer beim eintragen und dann hab ich das Problem das beim Auslesen ein Termin verschwindet und ein leeres Feld erscheint da ja nichts eingetragen wurde. Wie kann ich das ändern?

Auslesen:

$sql = "SELECT * FROM `chemie` ORDER BY id DESC LIMIT 3";
$query = mysql_query($sql);
while($getdata = mysql_fetch_array($query, MYSQL_ASSOC)){
echo '<tr><td>' . $getdata['termine5a'] . '</td></tr>';
}
echo "</TABLE><BR><TABLE BORDER=1>";
echo "<TR><TH>Hausaufgaben</TH></TR>";

$sql = "SELECT * FROM `chemie` ORDER BY id DESC LIMIT 3";
$query = mysql_query($sql);
while($getdata = mysql_fetch_array($query, MYSQL_ASSOC)){
echo '<tr><td>' . $getdata['hausaufgaben5a'] . '</td></tr>';
}

EDIT:
Oder ist das immernoch Quatsch?
Dann wäre es nett wenn mir jemand die Tabellenstruktur mal für 2Klassen machen/erklären könnte damit ich auch verstehe wie es funzt wenn ich mehrere Klassen einfüge.
Und dann dazu passend vieleicht noch wie ich es eintragen und auslesen muss.

Das soll jetzt nicht so aussehen als ob ich fertige Lösungen Schnorren wollte!!!
Ich arbeite mittlerweile schon 10Std. daran und versuche es mir selbst zu coden und ich habe auch schon einige Dinge alleine oder mit eurer Hilfe behoben aber da ich einfach nicht weiterkomme brauche ich jetzt mal was funktionierendes um anhand daran zu verstehen wie es geht. :hail:

EDIT2: ich glaube ich mache jetzt bei den Terminen einfach ORDER by termine.
Da hab ich zwar keine Garantie für die richtigkeit wie schon einige sagten aber es funktioniert. Oder hat jemand eine einfache Lösung die definitiv richtig ist??
Gruß Nikolas

Ich beziehe mich auf meinen Code aus meinem vorherigen Post…

CREATE TABLE `termine` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `text` TEXT NOT NULL , `datum` INT NOT NULL , `erstellt` INT NOT NULL, `klasse` VARCHAR(10) NOT NULL ); CREATE TABLE `lan`.`hausaufgaben` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `text` TEXT NOT NULL , `erstellt` INT NOT NULL, `klasse` VARCHAR(10) NOT NULL );
Damit erstellst du über PHPMyAdmin zwei Tabellen und die sind dann eigentlich selbst erklärend… Du musst auch mal unsere Ratschläge und Codes nutzen und nicht auf der alten Tabellenstruktur verharren, die ist nämlich einfach nur Mist. Wenn du Fragen zu den Tabellen hast bzw. hilfe beim Script brauchst stehe ich gerne zur Seite :wink:

Ich glaube jetzt habe ich es verstanden aber jetzt muss ich erst mal wieder ein bisschen probieren.
EDIT:Aber das ändert doch immernoch nischts daran das dann bei z.B. Termine ein leeres Feld ist und bei der Ausgabe dann eine leere Tabellenspalte entsteht oder?

Wenn du die Anwendung selbst entwickelst, würde ich dir sogar empfehlen Postgres zu verwenden. Damit sind dann sehr nette und sinnvolle Sachen möglich:

CREATE TABLE subjects (
   id SERIAL PRIMARY KEY,
   shortname VARCHAR(5) UNIQUE NOT NULL,
   fullname VARCHAR(20),
   teacher VARCHAR(30)
);

CREATE TABLE homework(
  id SERIAL PRIMARY KEY,
  subject INT REFERENCES subjects(id) NOT NULL,
  hand-in TIMESTAMP,
  curdate TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  title VARCHAR(30),
  description TEXT
);

CREATE TABLE sceduler(
  id SERIAL PRIMARY KEY,
  subject INT REFERENCES subjects(id),
  tartime TIMESTAMP,
  curdate TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  title VARCHAR(30),
  description TEXT
);

Damit lassen sich dann Sachen wie sowas umsetzen:

Hausaufgaben auslesen:

Fach kurzer Name: shortname
Fach langer Name: fullname
Lehrer: teacher
Abgabetermin: hand-in
Eingetragen am: curtime
Titel: title
Beschreibung: description

Fach UND eingetragene Hausaufgaben löschen:

Das sind die Vorteile eines rationalen DB-Systems

NEIN Es gibt jetzt 2 Tabellen.
Eine für Termine und eine für HAs. Vorher war es EINE Tabelle mit ZWEI Spalten.
Du liest für die Termine die Tabelle termine aus und für HAs die Tabelle hausaufgaben.
Und bei Klasse trägst du die entsprechende Klasse ein, bei text kommt der Text rein, id füllt MySQL automatisch aus, erstellt mit time() das Erstellungsdatum oder mit UNIX_TIMESTAMP in der MySQL Abfrage und bei HAs kannst du noch ein Datum bei datum für die Abgabe reinschreiben mit strtotime() indem du da sagst z.B. strtotime(‘14.01.2010’).
Kapiert?

EDIT: Michi er kapiert nichtmal simple Abfragen da wird er mit PGSql überfordert sein

AH!!
Jetzt habichs glaubich ich machs mal fertig und melde mich dann wieder!

Vielen vielen Dank an alle!! :winke:
Das Wunder ist vollbracht alles funktioniert wie ich es mir vorgestellt habe!!

Gruß Nikolas

Da sind wir aber beruhigt. :slight_smile:

Konnte ich doch helfen :smiley: Gern geschehen. Wenn es doch noch Probleme geben sollte sind wir gerne für dich da.

Bis jetzt funktioniert alles bestens, aber danke für die angebotene Hilfe!

Grruß Nikolas