Zur Navigation

sql abfrage [3]

21 tobi

Notice: Undefined index: turnierklasse

liegt wohl hieran?
echo "<td>". $zeile['turnierklasse'] . "</td>";

05.06.2010 13:57

22 tobi

editieren nicht mehr möglich (da 1h frist bereits verstrichen)
Zitat von tobi
Notice: Undefined index: turnierklasse

liegt wohl hieran?
echo "<td>". $zeile['turnierklasse'] . "</td>";

Problem gefunden muß nicht turnierklasse heißen, sodnern name

ich habe noch ein weiteres Anliegen, welches ähnlich ist, wo wir eben behoben haben, wöfür ich timestamp recht herzlich danke.

ich habe ein Formular, in welchem ich einige Daten abfrage welche in meiner DB gespeichert werden.
gespeichert werden: nachname, vorname, geschlecht, geburtsdatum_tag, geburtsdatum_monat, geburtsdatum_jahr, email, verein, verband, altersklasse, spielklasse, position, turnierklasse, eintrag, timestamp
Tabelle heißt: ppc_anmeldungen_samstag
bei dem feld turnierklasse kann man beim formlar auswählen zw. d-klasse, damen b, jugend u13, jugend u15 und jugend u18

ich habe eine Zweite Tabelle (heißt turnierklassen_samstag) in der DB, in welcher ich id und name gespeichert habe
bei id stehen zahlen 1-5 und bei name, die unterschiedlichen turnierklassennamen (d-klasse, damen b, jugend u13, jugend u15 und jugend u18)


wenn ich nun meine sql anweisung so ändere:
$sql1 = "
SELECT ppc_anmeldungen_samstag.id, nachname, vorname, verein, turnierklassen_samstag.name, timestamp
FROM ppc_anmeldungen_samstag
LEFT JOIN turnierklassen_samstag ON ppc_anmeldungen_samstag.turnierklasse = turnierklassen_samstag.id
WHERE turnierklasse = '3' OR turnierklasse = '4' OR turnierklasse = '5'
ORDER BY timestamp";

dann bekomme ich Jugend U13, Jugend U15 und Jugend U18 im Feld "name" aufgelistet. soweit so gut, stimmt ja im Prinzip auch.
Nur möchte ich das noch ein wenig weiter ins Details gehen und das ganze noch unterteilen in männlich und weiblich.
(männlich und weiblich frage ich ja zu Beginn von meinem Forumlar ab.)

Also sollte im Feld "name" dann Jugend wU13, Jugend wU15, Jugend wU18, Jugend mU13, Jugend mU15, Jugend mU18 (w=weiblich, m=männlich)

mir dies alles von meinem Wissen etwas zu hoch und ich bin sehr auf hlfe und vorschläge angewiesen wie man dass am besten realisieren kann. ob ich evtl noch eine zusätzliche Tabelle benötige etc.

ich hoffe ich konnte mich verständlich ausdrücken, und man konnte verstehen was ich meine und bedanke mich mal schon vorab für all eurer Mühen.

05.06.2010 16:23

23 Jörg Kruse

Möglichkeit 1:

Wenn es sich bei diese Unterteilungen um eigene Turnierklassen handelt, würde ich diese auch in die Turnierklassen-Tabelle aufnehmen. Anpassen musst du dann die INSERT Query und das Eingabe-Formular entsprechend erweitern. Die bestehenden Datensätze kann man mit einer UPDATE Query (abhängig von den Datenfeldern `geschlecht` und `turnierklasse`) aktualisieren (ich würde das zur Sicherheit mit einer Kopie der Tabelle testen)

Möglichkeit 2:

Die Turnierklassen-Tabelle erhält einen zweiten Primary Key `geschlecht`, der dem Datenfeld `geschlecht` der anderen Tabelle entsprechen muss. Das ON Statement müsste entsprechend erweitert werden:

LEFT JOIN turnierklassen_samstag ON ppc_anmeldungen_samstag.turnierklasse = turnierklassen_samstag.id AND ppc_anmeldungen_samstag.geschlecht = turnierklassen_samstag.geschlecht

Diese Möglichkeit bietet sich. an, wenn alle Turnierklassen nach männlich / weiblich unterteilt werden können. Andernfals würde ich Möglichkeit 1 bevorzugen

06.06.2010 00:17

24 tobi

naja die Eingabe beim Formluar wollte ich so bei behalten wie bisher also nur zur Auswahl stellen Jugend U13, Jugend U15 und Jugend U18. (weil ich ja auch noch im Auswahlfeld Damen B und D-KLasse habe, welches aber für diese sql-Abfrage nicht von Bedeutung ist).
und männlich und weiblich als Extra Eingabefeld.

Damit wird bei Turnierklasse nur Jugend U13, Jugend U15 oder Jugend U18 in der ppc_anmeldungen_samstag Tabelle stehen. Und im Feld Geschlecht: männlich oder weiblich.

So ganz verstehe ich nun die Umsetzung bzw. deine Vorschläge nicht.

In der Tabelle ppc_anmeldungen_samstag wird im Feld Turnierklasse nur die Zahlen 3, 4 und 5 gespeichert (entspricht im Eingabe-Formular: Jugend U13, Jugend U15 und Jugend U18).

In der Tabelle turnierklassen_samstag steht nur:
id - name
1 - D-Klasse
2 - Damen B
3 - Jugend U13
4 - Jugend U15
5 - Jugend U18

06.06.2010 01:27

25 Jörg Kruse

naja die Eingabe beim Formluar wollte ich so bei behalten wie bisher also nur zur Auswahl stellen Jugend U13, Jugend U15 und Jugend U18. (weil ich ja auch noch im Auswahlfeld Damen B und D-KLasse habe, welches aber für diese sql-Abfrage nicht von Bedeutung ist).

Wenn im Auswahlfeld "Damen B" ausgewählt werden kann, wäre es schon konsequent, auch die Jugendklassen gechlechtsspezifisch auswählen zu können

Zur Möglichkeit 2:
Mit einem zweiten Primärschlüssel `geschlecht` könnten die Datensätze in der Turnierklassen-Tabelle in etwa so ausschauen:

id | geschlecht | name
-----------------------------
2  | w          | Damen B
-----------------------------
3  | m          | Jugend mU13
-----------------------------
3  | w          | Jugend wU13

Die Kombination `id` - `geschlecht` muss hierbei einmalig sein

07.06.2010 01:50 | geändert: 07.06.2010 01:51

26 tobi

ich hab mal noch was anderes probiert und zwar:
echo "<td>". $zeile['name'] . " (". $zeile['geschlecht'] . " )</td>";

was zur Folge hat: dass in meiner Tabelle dann: Jugend U13 (männlich)
angezeigt wird.

nun müßte es doch auch möglich seien, via string oder wie das heißt, einige buchstaben zu entfernen und das "m" (wenn ich ännlich, entferne) an die Position zw. Jugend und U13 mache (Jugend mU13)?

07.06.2010 12:55

27 Jörg Kruse

Womit du Strings wie "Damewn B" produzieren würdest.

Sorry, aber das, was du da vorhast, ist Gefrickel. Ich kann dir nur empfehlen, die Daten so in der Datenbank abzulegen, dass du sie anschließend nicht erst noch in PHP wieder zurechtfrickeln musst. Ich habe dir hierzu ja zwei Möglichkeiten aufgezeigt.

07.06.2010 15:34 | geändert: 07.06.2010 15:35

... 2 Monate später ...

28 tobi

danke für alle infos. problem hat sich mittleweile erledigt, hab aber ein neues.

möglich, dass ich meine ergebnisse aus der db in so einer form einbauen kann?
echo "<hr></hr>\n";
echo "<table class=\"table_news_zentrieren\">\n";
echo "<tr>\n";
echo "<th class=\"table_news_20\">" . date("d.m.Y", strtotime($zeile['timestamp'])) . "</th>\n";
echo "<th class=\"table_news_80\">". $zeile['headline'] . "</th>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td></td>\n";
echo "<td>". $zeile['eintrag'] . "</td>\n";
echo "</tr>\n";
echo "</table>\n";

echo "<hr></hr>\n";
echo "<table class=\"table_news_zentrieren\">\n";
echo "<tr>\n";
echo "<th class=\"table_news_20\">" . date("d.m.Y", strtotime($zeile['timestamp'])) . "</th>\n";
echo "<th class=\"table_news_80\">". $zeile['headline'] . "</th>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td></td>\n";
echo "<td>". $zeile['eintrag'] . "</td>\n";
echo "</tr>\n";
echo "</table>\n";

weil bisher hab ich es immer so gehandhabt:
// sql-Abfrage 1
$sql1 = "
SELECT name, email, headline, eintrag, timestamp
FROM news
ORDER BY timestamp DESC LIMIT 20";

$db_erg1 = mysql_query( $sql1 );
if ( ! $db_erg1 )
{
die('Ungültige Abfrage: ' . mysql_error());
}

$anzahl = mysql_num_rows($db_erg1);

// Inhalt Zusatz - Newsbox Beginn
echo "<div id=\"newsbox\">\n";
echo "<h1>News - Aktuell</h1>\n";
echo "<center>";
echo "<table class=\"table_zentrieren\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"2\">\n";

$anzahl = 1;
while ($zeile = mysql_fetch_array( $db_erg1, MYSQL_ASSOC))
{
echo "<tr>";
echo "<td>" . date("d.m.Y", strtotime($zeile['timestamp'])) . ":</td>";
echo "<td>". $zeile['headline'] . "</td>";
echo "<td>". $zeile['eintrag'] . "</td>";
echo "</tr>";
$anzahl++;
}
echo "</table>";

echo "</center>";
echo "<br />";

mysql_free_result( $db_erg1 );

mysql_close($link);

15.08.2010 18:23

29 Jörg Kruse

Wenn du nur ein Ergebnis hast - andernfalls benötigst du eine Schleife

15.08.2010 23:36

30 tobi

ich habe ca. 30 eintraege in der db und es kommen ja immer neue hinzu.

also werd ich dass in ner schleife machen muessen, wie du in deinem post erwaehnt hast. wie funktioniert dies dsnn genau?

15.08.2010 23:50