PHP/Mysql-Problem beim auslesen

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
h32Lg
Mitglied
Beiträge: 324
Registriert: 04.04.2008 11:05
Wohnort: Bayern
Kontaktdaten:

PHP/Mysql-Problem beim auslesen

Beitrag von h32Lg »

Hi,

ich hab nun einiges ausprobiert. Zunächst hab ich eine test.php erstellt in welcher ich die db-Daten includier. Dann den Code hier eingefügt:

Code: Alles auswählen

function today () {
	$i = "0";
	$result = mysql_query("SELECT `datum` FROM `dbname`.`visits`");
	while($row = mysql_fetch_array($result)) {
		if ($row['datum'] == $date) { $i++; }
	}
	return $i;
}
dbname steht für meinen Datenbanknamen :D

Wenn ich nun die test.php starte und anstatt dem return $i ein echo setze, wird mir die anzahl der leute gezeigt die heute auf meiner HP wahren. Füg ich den Code aber nun in meine core-Datei ein und will drauf zugreifen wird mir bei return immer 0 ausgegeben.

$date ist im MySQL-Format Y-m-d gespeichert, also zB 2008-05-10

Nun weiß ich nicht ob mir beim Kopieren was verloren gegangen ist, wohl eher nicht, oder ob ich einfach nur einen Zusammenhng überseh.

greets h32Lg 8)

PS: ich habs auch schon mit der Methode probiert, wobei dann nichtmal richtig ausgelesen wird:

Code: Alles auswählen

$result = mysql_query("SELECT `datum` FROM `dbname`.`visits` WHERE `datum`='". $date ."'");
Zuletzt geändert von h32Lg am 10.05.2008 10:15, insgesamt 1-mal geändert.
Moralisten sind Leute, die sich dort kratzen wo es andere juckt!
Legt euer Geld in Alkohol an! Wo sonst gibt es mehr als 40% ;-)
Besucht doch auch mal http://www.mircscriptz.de wenn ihr euch für IRC und mIRC-Addons interessiert!
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Also wenn "tabelle" der Name deiner Tabelle ist, wird das nicht funktionieren. Tabelle müsste das Datenbank-Schema sein:
MySQL-Dokumentation hat geschrieben:You can refer to a table within the default database as tbl_name, or as db_name.tbl_name to specify a database explicitly.
Wobei es i. d. R. sinnvoll ist, denn Datenbanknamen weg zu lassen.

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Benutzeravatar
h32Lg
Mitglied
Beiträge: 324
Registriert: 04.04.2008 11:05
Wohnort: Bayern
Kontaktdaten:

Beitrag von h32Lg »

ja ne, is klar :oops:

also, tabelle ist der datenbankname, den ich jetzt nur tabelle genannt hab, da ich solche daten nicht raus geb ;-)

Hab ich das ganze nun so in der Konstellation als Funktion, gehts nicht, alss ich die Funktion weg und mach das ganze in der test-php-Datei, dann gehts.

greets h32Lg 8)

EDIT: So, hab den ersten Post angepasst :-P
Moralisten sind Leute, die sich dort kratzen wo es andere juckt!
Legt euer Geld in Alkohol an! Wo sonst gibt es mehr als 40% ;-)
Besucht doch auch mal http://www.mircscriptz.de wenn ihr euch für IRC und mIRC-Addons interessiert!
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Drei Hinweise noch, wobei zwei und drei dein Problem lösen könnten:
  • Code: Alles auswählen

    $i = 0;
    Du willst ja eine Zahl erhöhen und keinen Text
  • mysql_query kennt einen zweiten Parameter - die Verbindungskennung. Den würde ich immer mit übergeben - nicht, dass da versehentlich auf was falsches zurückgegriffen wird
  • Wieso versuchst du es nicht mit

    Code: Alles auswählen

    SELECT Count(*) FROM visits WHERE datum = '$date'
    ?
Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Benutzeravatar
h32Lg
Mitglied
Beiträge: 324
Registriert: 04.04.2008 11:05
Wohnort: Bayern
Kontaktdaten:

Beitrag von h32Lg »

Hi,

ich habs nun ohne die " bei $i = 0;

und den $result so:

Code: Alles auswählen

$result = mysql_query("SELECT `datum` FROM `dbname`.`visits` WHERE `datum` = '". $date. "'");
". ." mit eingefügt, da die Variable ja evaluiert werden muss. Aber selbst mit/ohne gehts nicht.

welchen zweiten Parameter meintest du?


greets h32Lg 8)

EDIT:

Verbindungskennung ?

ich habs so:

Code: Alles auswählen

include('hierdernamemeinekonfigurationsdateifürdendatenbankzugriff.php');
$db_link = mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
EDIT2:

Nun hab ichs nochmal als echo in einer testdatei probiert und da gehts wenn ichs so mach:

Code: Alles auswählen

	$i = 0;
	$result = mysql_query("SELECT `datum` FROM `dbname`.`visits` WHERE `datum` = '". $date. "'");
	$i = mysql_num_rows($result);
	return $i;
:-?

EDIT3:

Jetzt hab ichs so:

Code: Alles auswählen

	$result = mysql_query("SELECT `datum` FROM `dbname`.`visits` WHERE `datum` = '". $date ."'");
	return mysql_num_rows($result);
innerhalb der Funktion, mach ichs ohne Funktion und schreib den Code an die Stelle die ich brauch und ersetz return mit echo, dann gehts.
Das kanns aber doch nicht sein oder? Warum gehts jetzt genau hier nicht :/
Moralisten sind Leute, die sich dort kratzen wo es andere juckt!
Legt euer Geld in Alkohol an! Wo sonst gibt es mehr als 40% ;-)
Besucht doch auch mal http://www.mircscriptz.de wenn ihr euch für IRC und mIRC-Addons interessiert!
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Da ich deinen aktuellen Quelltext nicht ganz kenne kann ich nur raten, aber: Hast du denn $date in der Funktion überhaupt bekannt gemacht? Sprich: Wird das als Parameter übergeben oder mit global bekannt gemacht?
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
h32Lg
Mitglied
Beiträge: 324
Registriert: 04.04.2008 11:05
Wohnort: Bayern
Kontaktdaten:

Beitrag von h32Lg »

Ja, es ist ne Globale-Core Datei in der ich die kompletten Funktionen verwalte, so dass ich mehr Übersicht für mich hab :wink:

Aber wie bereits erwähnt, das Problem ist nicht das auslesen, das Problem ist return.

Warum auch immer, aber wenn ich return mit echo austausche und das ganze in einer extrigen (Test)-Datei mache, wird mir die richtige Zahl ausgegeben, ansonsten 0.

derweil hab ichs so:

Code: Alles auswählen

function heute () {
	$result = mysql_query("SELECT `datum` FROM `dbname`.`visits` WHERE `datum` = '". $date ."'");
	$i = mysql_num_rows($result);
	return $i;
}
Wobei ich $i nichtmal bräuchte da ich ja bereits mit WHERE die richtige Anzahl ermittel.

Aber ich verstehs grad einfach nicht was da noch der Fehler sein könnte :/

greets h32Lg 8)
Moralisten sind Leute, die sich dort kratzen wo es andere juckt!
Legt euer Geld in Alkohol an! Wo sonst gibt es mehr als 40% ;-)
Besucht doch auch mal http://www.mircscriptz.de wenn ihr euch für IRC und mIRC-Addons interessiert!
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Wie lautet denn dein Funktionsaufruf?

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Das habe ich doch schon geschrieben: Die Variable $date ist in der Funktion unbekannt. Selbst wenn es eine globale Variable ist musst du sie der Funktion erst explizit bekanntgeben, in diesem Fall also

Code: Alles auswählen

global $date;
Ohne Funktion funktioniert das ganze, weil ohne Funktion ja $date als globale Variable bekannt ist, für Funktionen oder auch Methoden gilt das aber nicht. Die 0 wird ausgegeben, weil die Variable $date nichts als ein leerer String ist. Entweder du gibst das Datum per Parameter an die Funktion (also function heute($date) ), du erzeugst den gewünschten Inhalt in der Funktion neu (also z.B. per $date = date('Y-m-d'); ) oder du machst die Variable global verfügbar (s.o.).
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
h32Lg
Mitglied
Beiträge: 324
Registriert: 04.04.2008 11:05
Wohnort: Bayern
Kontaktdaten:

Beitrag von h32Lg »

mh, aber ich hab doch alle Funktionen und Variablen in einer Datei.

Die Cookies, Sessionstart etc blablubb alles ganz oben. Und NUR bei der heutigen Ausgabe klappt es nicht.

Wenn ich es nun probier als Global zu setzen, obwohl es ja in der selben Datei ist :/ da ich ja alles Includier, reicht es dann, wenn ich die Variable setz und gleich darunter global $date schreib ?

greets h32Lg 8)

EDIT:

btw:

Code: Alles auswählen

<?php echo besucher(); ?>
<?php echo registrierte(); ?>
<?php echo heute(); ?>
<?php echo visits(); ?>
<?php echo online(); ?>
und nur heute geht nicht :/ obwohl ich auch bei anderen Aufrufen $date benötige.

EDIT:2

Also es liegt definitv am global setzen der Variable $date ;-) Obwohl ich in anderen Funktionen einwandfrei darauf zugreifen kann :/
Moralisten sind Leute, die sich dort kratzen wo es andere juckt!
Legt euer Geld in Alkohol an! Wo sonst gibt es mehr als 40% ;-)
Besucht doch auch mal http://www.mircscriptz.de wenn ihr euch für IRC und mIRC-Addons interessiert!
Antworten

Zurück zu „Coding & Technik“