WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   PHP +MySQL = Count() (http://www.wcm.at/forum/showthread.php?t=127695)

Nightman 08.03.2004 15:53

PHP +MySQL = Count()
 
hi an alle

wie kann ich es in php realisieren eine bestimmte spalte einer mysql db auszuleden und dann den count wert in eine variable schreiben?

ich hab zwar ein buch zu php und mysql aber da find ich nix drüber im inhalts verzeichniss und goggle hat mir auch nix ausgespuckt
bitte um hilfe

FordPrefect 08.03.2004 18:07

Meinst Du so etwas?
Zitat:

Mit mysql_num_rows() kann man sich anhand einer Ergebnis-Kennung
(Ergebnis-Kennung) die Anzahl der Datensätze eines Ergebnisses zurückgeben
lassen.

Dann einfach mit
PHP-Code:

datensaetze=mysql_num_rows("SELECT * FROM tabelle"); 

mfg
Peter

snowman 08.03.2004 18:23

das dollarzeichen bei der variable nicht vergessen.

$datensaetze

gruss,
snowman

Nightman 08.03.2004 23:46

PHP-Code:

$datensaetze mysql_num_rows("SELECT * FROM config"); 

Zitat:

Warning: Supplied argument is not a valid MySQL result resource in /var/www/nightman/main.php on line 56
hä? was passt den da ned?

Nightman 08.03.2004 23:58

ok thx an alle hab zufällig ein derartiges script gefunden :)

PHP-Code:

$result mysql_query("SELECT * FROM config");
echo 
mysql_num_rows($result); 

THX an euch beiden

FordPrefect 09.03.2004 00:15

Zitat:

Original geschrieben von Nightman
ok thx an alle hab zufällig ein derartiges script gefunden :)

PHP-Code:

$result mysql_query("SELECT * FROM config");
echo 
mysql_num_rows($result); 

THX an euch beiden

Achso Du musst auch eine Verbindung zur Datenbank aufbauen geht in etwa so
PHP-Code:

<?php 
$db
=mysql_connect("localhost(hostname)","trillian(user)","(passwort)" or die ("Verbindung fehlgeschlagen");
mysql_select_db("cafe-pfum(Datenbankname)",$db);
?>

mfg Peter

Nightman 09.03.2004 00:18

hrhr thx aber das hab ich schon :)

FordPrefect 09.03.2004 00:42

Und funktioniert es auch? Sonst beschäftige ich mich morgen damit, heute keine Lust mehr. mach jetzt das :zzz:

Nightman 09.03.2004 00:48

jo funzt

aber was anderes

$result = mysql_query("SELECT * FROM user");
echo mysql_num_rows($result);

ich würde gerne nur die user die sich heute regisrtiert haben auslesen lassen

regdatetime (mysql datetime feld)

where regdatetime = ???????

wie kann ich das unter php vergleichen?

snowman 09.03.2004 08:56

SELECT * from XXX WHERE regdatetime = curdate()

gruss,
snowman

Potassium 09.03.2004 15:05

funktioniert curdate() gleich im sql befehl oder muss man den rausnahme like WHERE regdatetime = '".curdate()."'
??

snowman 09.03.2004 20:08

Es funktioniert so, wie ich geschrieben habe in der SQL-Abfrage.

gruss,
snowman

Potassium 09.03.2004 20:35

ok :)

Nightman 10.03.2004 22:54

$SQLMitgliederNeu = mysql_query("SELECT id FROM user WHERE regdatetime = curdate()");
echo mysql_num_rows($SQLMitgliederNeu);

funzt bei mir nicht

er gibt immer null aus

Nightman 10.03.2004 23:03

ok ich hab gerade festgestellt das es funzt aber nur wenn das feld ein "date" feld ist was bei mir aber nicht der fall ist

bei mir ist es ein "datetime" feld wie geht es da?

heli2sky 10.03.2004 23:51

PHP-Code:

$time date("Y-m-d") . "%";
$query "SELECT * FROM table WHERE datetime LIKE '$time'"

er sucht alle, wo Y (2004) - m (03) - d (10) übereinstimmt und danach irgendwas kommt (%)

http://www.mysql.com/doc/en/String_c...functions.html

Nightman 11.03.2004 06:55

ok diese methode is zwar umständlich funzt aber :)

und wie soll ich es dann machen das er einen tag vorher zählt bei dieser methode?

also zb

php is irgentwie umständlich :(

heli2sky 11.03.2004 14:11

PHP-Code:

$time date("Y-m-d",time()-60*60*24) . "%";
$query "SELECT * FROM table WHERE datetime LIKE '$time'"

naja umständlich... find ich gar nicht so, aber vielleicht gehts ja auch einfacher.

ich speichere die zeit sowieso immer als timestamp, find ich besser...

Nightman 11.03.2004 17:41

aha

und wie geht es mit timestamp?

FordPrefect 11.03.2004 17:58

So
Zitat:

Mit time() kann man sich den aktuellen UNIX-Zeitstempel zurückgeben lassen.
Dieser Zeitstempel enthält die Anzahl der Sekunden seit Beginn der Unix-Epoche
(01.01.1970 um 00:00:00 Uhr).

also ist ein Tage 3600*24
den kanst Du Dir dann mit
PHP-Code:

datum=date("d.m.Y",time($timestamp)); 

ausgeben lassen
weiss aber nicht ob das jetzt funzt
Bitte um Bericht
mfg
Peter

Potassium 11.03.2004 18:01

wenn du vor das datum noch ein $ setzt funzt es ;)

FordPrefect 11.03.2004 18:09

Danke habe ich wieder mal vergessen.
Passiert mir beim Programmieren auch immer:heul:
mfg
Peter

heli2sky 11.03.2004 22:35

naja und wenn $timestamp schon ein timestamp ist, dann brauchst den auch nicht in das time() rein ;) :D

ich mach das halt mit timestamps lieber weil da ist die zeit im "rohen" format gespeichert und ich kanns mir dann so formatieren, wie ich will und muss das nicht zweimal machen...

apropos: was hat das eigentlich für einen effekt, wenn bei time() etwas in den klammern steht? zb. time(100) - habs ausprobiert... keinen... php.net sagt: time(void), was bedeutet das void?

FordPrefect 11.03.2004 22:50

Laut Übersetzung heißt Void Lücke alse wahrscheinlich bedeutet es freilassen
mfg
Peter

Potassium 11.03.2004 23:00

also bei mir hat
PHP-Code:

date("d.m.Y"); 

den gleichen effekt wie:
PHP-Code:

date("d.m.Y",time($timestamp)) 

also wozu timestamp?? :confused:

FordPrefect 12.03.2004 01:07

Du wolltest es ja von einem Tag zuvor,also
PHP-Code:

$timestamp=time()-3600*24;
$datum=date("Y.m.d",$timestamp); 

So habe ich es gemeint

:heul:

Potassium 12.03.2004 01:13

ah. check :D
auch auf die gefahr hin das ich dich schon wiedr zum weinen bring *schlechtesgewissenhab* warum rechnest du ned gleich-86400? wegen übersicht oder hast es vergessen?

FordPrefect 12.03.2004 01:35

Nein habe ich nicht vergessen war nur zu faul zum ausrechnen. Außerdem wollte ich was anderes hinwiesen (revidiere vorherige Mitteiung;) ).
Wenn Du die Daten von gestern auslesen willst, must du es so machen
PHP-Code:

$timestamp=time()-86400
und dann eben im SQL
SELECT 
FROM tabelle WHERE zeit='$timestamp' 

mfg
Peter

heli2sky 12.03.2004 14:33

nein das stimmt nicht!

die abfrage oben würde höchstwahrscheinlich kein ergebnis ausgeben, da es nur datensätze ausgibt, wo zeit GLEICH ist wie time()-xxx, d.h. auf die sekunde genau einen tag vorher war!

das musst du dann halt so machen: WHERE time > gestern0Uhr && time < heute0Uhr ;)

FordPrefect 12.03.2004 14:46

Zitat:

Original geschrieben von heli2sky
nein das stimmt nicht!

die abfrage oben würde höchstwahrscheinlich kein ergebnis ausgeben, da es nur datensätze ausgibt, wo zeit GLEICH ist wie time()-xxx, d.h. auf die sekunde genau einen tag vorher war!

das musst du dann halt so machen: WHERE time > gestern0Uhr && time < heute0Uhr ;)

Danke hab's inzwischen auch schon gemerkt
mfg
Peter

Nightman 12.03.2004 17:20

und wiw ist das jetzt genau?

kenn mi stana aus :(

heli2sky 12.03.2004 17:31

wieso kennst dich nimma aus? ist doch nicht schwierig, was wir in dem thread besprochen haben...

das waren einfache abfragen, wo du 2 werte vergleichst ;)

wie deine werte ausschauen (timestamp oder datetime oder was auch immer...) bleibt dir überlassen - geschmacksache! nur musst du eben je nach dem was du nimmst, deine abfrage anpassen:

timestamp: sekunden seit 1.1.1970
-> gestern = WHERE time > gestern 00:00 in sekunden AND time < heute 00:00 in sekunden
datetime: yyyy-m-d hh:mm:ss
$gestern = date("Y-m-d",time()-3600*24) . "%";
-> gestern = WHERE time LIKE $gestern

mir is halt die erste variante (wenn ein zeitwert zwischen 2 anderen ist) lieber als die zweite (wenn ein string am anfang gleich ist);


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag