Sql abfrage

hallo zusammen,

ich habe wohl ein kleines blackout, ich möchte die aktuelle anzahl meiner einträge in der db ermitteln und ausgeben. leider stimmen die beiden ausgaben nicht mit der tatsächlichen anzahl überein: folgendes wird per echo ausgegeben:
result1 = Resource id #10
result2 = Resource id #12

in ppc_anmeldungen_samstag sind aber 13 einträge vorhanden und
in ppc_anmeldungen_sonntag sind aber 14 einträge

	$sql1 = "SELECT Count(*) FROM ppc_anmeldungen_samstag";
	$db_erg1 = mysql_query( $sql1 );
	if ( ! $db_erg1 )
	{
	die('Ungültige Abfrage: ' . mysql_error());
	}

	$result1 = mysql_query( $sql1 );

	echo "$result1\n";	
	
	$sql2 = "SELECT Count(*) FROM ppc_anmeldungen_sonntag";
	$db_erg2 = mysql_query( $sql2 );
	if ( ! $db_erg2 )
	{
	die('Ungültige Abfrage: ' . mysql_error());
	}

	$result2 = mysql_query( $sql2 );

	echo "$result2\n";

woran kann dies liegen?

[quote=“tobsp”]folgendes wird per echo ausgegeben:
result1 = Resource id #10
result2 = Resource id #12[/quote]
Da könnten auch die Zahlen 20, 59 oder 4711 stehen.

Du hast dir lediglich die Ressource ausgeben lassen - wenn du dich ein bisschen über den Umgang mit MySQL-Datenbanken aus PHP heraus informiert hättest, dann wüsstest du, dass die mit den eigentlichen Daten überhaupt nichts zu tun hat.

Um Datensätze aus einem Ergebnis abzuholen, benutzt man eine der fetch-Methoden.

Ich denke das du sowas brauchst:

[code]$ergebnis1 = array();

$db1 = “SELECT spaltenname FROM ppc_anmeldungen_samstag”;
$db_query1 = mysql_query($db1) or die(mysql_error());
while($read = mysql_fetch_object($db_query1))
{
$ergebnis1 = $read->spaltenname;
}

$ergebnis2 = array();

$db2 = “SELECT spaltenname FROM ppc_anmeldungen_sonntag”;
$db_query2 = mysql_query($db2) or die(mysql_error());
while($read2 = mysql_fetch_object($db_query2))
{
$ergebnis2 = $read2->spaltenname;
}

$ergebnis1 = count($ergebnis1);
$ergebnis2 = count($ergebnis2);

echo “Tabelle 1 enthält “.$ergebnis1.” Einträge.
”;
echo “Tabelle 2 enthält “.$ergebnis2.” Einträge.
”;[/code]

Ist natürlich nur ein Teilausschnitt und spaltenname muss gegen EINEN spaltennamen der in der jeweiligen Table vorhanden ist ersetzt werden.

*edit: my bad…

$sql = "SELECT COUNT(`spalte`) as anzahl FROM `tabelle`"; $obj = mysql_fetch_object(mysql_query($sql)); echo 'Es gibt ' . $obj->anzahl. ' Datensätze';

[quote=“Mgier”]$sql = "SELECT COUNT(`spalte`) FROM `tabelle`"; echo 'Es gibt ' . mysql_query($sql) . ' Datensätze';
[/quote]

Nein, geht nicht!
mysql_query sendet nur den Query an den Server, die eigentlichen Ergebnisse (Zeilen) gibt’s dann mit Funktionen wie zum Beispiel mysql_fetch_array.

danke für die tipps.

so habe ich es nun realisiert

// sql-Abfrage 1
$sql_samstag = "SELECT Count(*) FROM ppc_anmeldungen_samstag";
$result_samstag = mysql_query( $sql_samstag );
list($count_samstag) = mysql_fetch_row($result_samstag);

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 nun meine sql anweisung so lautet:

$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.

Du könntest natürlich auch ein weiteres Feld für das Geschlecht hinzufügen, worin du dann m bzw w speicherst. Um das dann zu unterscheiden ist dann eine einfache SQL Anweisung genug. (z.b. WHERE geschlecht = ‘w’)

Falls du die Namen aber bei “Jugend wU13” usw. belassen willst, kannst du die in der SQL Anweisung mittels LIKE unterschieden:

schau am besten in der MySQL Dokumentation nach :wink:

nunja, Jugend wU13, Jugend wU15, Jugend wU18, Jugend mU13, Jugend mU15, Jugend mU18 existiert ja nicht.

es sind ja in der tabelle nur Jugend U13, Jugend U15, Jugend U18 vorhanden

Aber sie sollen als eigene Kategorie behandelt werden, oder?
dann würde das in meinen Augen Sinn machen, sie auch in getrennten Kategorien zu speichern. Ich würde die erstgenannte Methode vorziehen. :wink:

danke für alle infos. problem hat sich mittleweile erledigt.

hab aber ein neues:

$sql1 = "
SELECT name, email, eintrag, timestamp
FROM newsticker
ORDER BY timestamp";

ich würde gerne maximal die 13 aktuellsten einträge ausgeben lassen und aich das aktuelleste zu allererst.
möglich?

EDIT: hab ein wenig ausprobiert. mit folgendem müßte es laufen

nochmla was 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);