sql Abfrage - Ausgabe

  • Themenstarter Themenstarter Tobli
  • Beginndatum Beginndatum
T

Tobli

Hallo zusammen,

ich habe eine Abfrage gemacht, leider bekomme ich bei der Ausgabe eine Errormeldung und ich bekomme sie nicht behoben. Wäre super wenn mir jemand auf dei Sprünge helfen würde. Vielen Dank schon mal.
Notice: Undefined index: turnierklasse
ich denke es liegt wohl daran: echo "<td>". $zeile['turnierklasse'] . "</td>"; aber sicher bin ich mir nicht ganz

PHP:
$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 = '1' OR turnierklasse = '2' 
ORDER BY timestamp";

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

$anzahl = mysql_num_rows($db_erg1);

echo "Bisher sind " . $anzahl . " Meldung/en für diesen Wettbewerb bei uns eingegangen!";
echo "<br />";
echo "<br />";

echo "<center>";

echo "<table width=\"85%\" border=\"1\" cellpadding=\"3\" cellspacing=\"0\">";
echo "<tr>";
echo "<td></td>";
echo "<td>Name</td>";
echo "<td>Vorname</td>";
echo "<td>Verein</td>";
echo "<td>Turnierklasse</td>";
echo "<td>Meldedatum</td>";
echo "</tr>";

$anzahl = 1;
while ($zeile = mysql_fetch_array( $db_erg1, MYSQL_ASSOC))
{

echo "<tr>";
echo "<td>". $anzahl . "</td>";
echo "<td>". $zeile['nachname'] . "</td>";
echo "<td>". $zeile['vorname'] . "</td>";
echo "<td>". $zeile['verein'] . "</td>";
echo "<td>". $zeile['turnierklasse'] . "</td>";
echo "<td>" . date("d.m.Y G:i:s", strtotime($zeile['timestamp'])) . "</td>";
echo "</tr>";
$anzahl++;
}
echo "</table>";

echo "</center>";

mysql_free_result( $db_erg1 );
 
Zuletzt bearbeitet von einem Moderator:
Hi,

und was hat nun diese Fehlermeldung mit der Auszeichnungssprache HTML zu tun?

Nischt, also ab damit ins PHP-Board.

mfg Maik
 
Sorry, ich bin bei der Rubrik Webmaster hängengeblieben und habe dort nur HTML gefunden. Daher habe ich es dort gepostet.
 
Hi

wo der Fehler liegt hast du richtig erkannt. Nur warum du jetzt hier nachfragst ist mir etwas rätselhaft, wo du den Fehler doch schon kennst. Er bedeutet einfach nur, dass in deinem Array kein Index "Turnierklasse" vorliegt.
Füge mal ein var_dump($zeile); ein. Dann siehst du, was alles in deinem Array drinsteht ;)
 
Hi
var_dump() ist eine Funktion mit keinem Rückgabewert. Erstmal kannst du eine Funktion (egal welche) nicht innerhalb von Anführungszeichen verwenden, desweiteren macht es keinen Sinn var_dump(); in echo aufzurufen. var_dump() schaue dir hier mal Beispiele an.
 
var_dump($zeile); ergibt bool(false)
mit dem kann ich gar ncihts anfangen

OK, war wohl mein Fehler, hatte es an der Falschen Stelle plaziert.

nun bekomme ich folgendes Ausgegeben:
array(6) { ["id"]=> string(1) "1" ["nachname"]=> string(5) "Meier" ["vorname"]=> string(6) "Tobias" ["verein"]=> string(19) "TTC 123" ["name"]=> string(8) "D-Klasse" ["timestamp"]=> string(19) "2010-04-16 16:42:10" }
array(6) { ["id"]=> string(1) "3" ["nachname"]=> string(5) "Fritz" ["vorname"]=> string(6) "Reiner" ["verein"]=> string(19) "TTC 456h" ["name"]=> string(8) "D-Klasse" ["timestamp"]=> string(19) "2010-04-16 16:47:21" }

nun wird mir klar dass es nicht turnierklasse heißen muss. sondern name --> echo "<td>". $zeile['name'] . "</td>";
 
nun habe ich mich registriert, ist einfacher für die Moderatoren, müssen sie nicht alle meine Beiträge zusammen schustern und bearbeiten.

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)

Ausgabe sollte das gleiche Ergbnis haben, wie bei meinem ersten Problem, welches wir erfolgreich gelöst haben, nur mit einem kleinen Handicap.
array(6) { ["id"]=> string(1) "1" ["nachname"]=> string(5) "Meier" ["vorname"]=> string(6) "Tobias" ["verein"]=> string(19) "TTC 123" ["name"]=> string(8) "D-Klasse" ["timestamp"]=> string(19) "2010-04-16 16:42:10" }

wenn ich nun meine sql anweisung so ändere:
Code:
$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.
 
Wenn du es näher eingrenzen möchtest, musst du deinen SQL-Query umbauen, so das die WHERE-Klausel mehr Konditionen umfasst. Ich weiß nicht, in wie weit du die Tabelle so aufgebaut hast, das auch nach männlich/weiblich unterschieden werden kann.

Ich vermute jetzt mal, du hast eine Spalte "geschlecht" in der Tabelle ppc_anmeldungen_samstag. Dann kannst du die WHERE-Klausel so erweitern:

SQL:
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') AND geschlecht = $geschlecht
ORDER BY timestamp

Wobei du dann $geschlecht aus deinem Formular holen musst:

PHP:
$geschlecht = mysql_real_escape_string($_POST['geschlecht']);

Da du weder Formular noch Tabellen-Struktur gepostet hast, sind das natürlich nur Annahmen.
 
ich danke dir erstmal für deine infos.
ich versuche mal den inhjalt der db mit screenshots hier zu verdeutlichen:
ppc_anmeldungen_samstag.png: dort ist die db struktur von Tabelle: ppc_anmeldungen_samstag zu sehen
ppc_anmeldungen_samstag.png
ppc_samstag_geschelcht_turnuerklassen.png: dort ist der Inhalt der Felder Geschlecht und Turnierklassen zu sehen
ppc_samstag_geschlecht_turnierklasse.png
turnierklassen_samstag.png: dort ist der inhalt der Tabellle turnierklassen_samstag zu sehen.
turnierklassen_samstag.png

so sieht die Ausgabe aus: mit der Sql-Abfrage:
Code:
$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";
aktuelle_ausgabe.png

Ich möchte aber, dass nicht Jugend U13, Jugend U15 und Jugend U18 dort steht, sondern Jugend mU13, Jugend mU15, Jugend mU18, JugendwU13, Jugend wU15, Jugend wU18.

was muß ich dazu machen, bzw erstellen, damit ich dass so ausgeben kann?
eine zusätzliche Tabelle mit: Jugend mU13, Jugend mU15, Jugend mU18, JugendwU13, Jugend wU15, Jugend wU18?
oder oder?
 
Zuletzt bearbeitet:
Zurück