/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Lave gennemsnit af timestamp fra MySQL
Fra : Brian Sørensen


Dato : 02-01-03 01:41

Jeg har en MySQL database, hvor jeg har folks alder i en tabel.

Jeg kunne godt tænke mig at regne gennemsnits alderen ud på folkene i
databasen.

Jeg har lavet en select fra databasen:
$result = mysql_query ("SELECT birthdate FROM members where
stat_member='checked'");

Min birthdate et et Unix timestamp.
Nu vil jeg så godt have den til at regne gennemsnittet af folks alder ud,
ved at tage alle members "birthdate" og lægge sammen og dividere med
antallet af medlemmer.

Hvordan gør man lige det ??

Venlig hilsen
Brian Sørensen




 
 
Mikkel Christensen (02-01-2003)
Kommentar
Fra : Mikkel Christensen


Dato : 02-01-03 05:11

"Brian Sørensen" <usenet@s800.dk> skrev i en meddelelse
news:3e138a6c$0$180$edfadb0f@dread16.news.tele.dk...
> Jeg har en MySQL database, hvor jeg har folks alder i en tabel.
>
> Jeg kunne godt tænke mig at regne gennemsnits alderen ud på folkene i
> databasen.
>
> Jeg har lavet en select fra databasen:
> $result = mysql_query ("SELECT birthdate FROM members where
> stat_member='checked'");
>
> Min birthdate et et Unix timestamp.
> Nu vil jeg så godt have den til at regne gennemsnittet af folks alder ud,
> ved at tage alle members "birthdate" og lægge sammen og dividere med
> antallet af medlemmer.
>
> Hvordan gør man lige det ??
>

Mysql har en indbygget funktion der tager gennemsnittet af en kollonnes
værdier:

$result = mysql_query ("SELECT AVG(birthdate) FROM members where
stat_member='checked'");

Ud fra gennemsnits fødselsdagen kan du så beregne gennemsnitsalderen ved at
trække gennemsnits fødselsdagen fra det nuværende dato.
Den nuværende dato kan du få via en anden funktion der er indbygget i MySQL
som hedder NOW().
NOW() returnerer en MySQL timestamp og den kan konverteres til en unix
timestamp med den indbyggede funktion UNIX_TIMESTAMP()
Eller du kan nøjes med at hente alderen og så lave en unix timestamp i PHP
som du sammenligner med.

Her er eksemplet i MySQL:

$result = mysql_query ("SELECT (UNIX_TIMESTAMP(NOW()) - AVG(birthdate) )
/ (3600*24*365) FROM members where stat_member='checked'");
$avg_age = mysql_reault($result, 0);
//Det er 3600*24*365 sekunder på et år.

Det giver en lille usikkerhed da der ikke præcist er 365 dage på et år.


Mvh Mikkel
--
------> END <------
Mikkel Magnus Christensen
barefoot@jaha.dk, www.startfirma.dk, www.starthotel.dk, www.i-know.dk
------> END <------


Brian Sørensen (02-01-2003)
Kommentar
Fra : Brian Sørensen


Dato : 02-01-03 12:04

Tak for hjælpen Mikkel, det spiller bare.
Lavede lige en afrundt af resultatet med "round ($avg_age, 0)"

Venlig hilsen
Brian Sørensen

"Mikkel Christensen" <barefoot@jaha.dk> skrev i en meddelelse
news:av0e67$t24$1@news.cybercity.dk...
> "Brian Sørensen" <usenet@s800.dk> skrev i en meddelelse
> news:3e138a6c$0$180$edfadb0f@dread16.news.tele.dk...
> > Jeg har en MySQL database, hvor jeg har folks alder i en tabel.
> >
> > Jeg kunne godt tænke mig at regne gennemsnits alderen ud på folkene i
> > databasen.
> >
> > Jeg har lavet en select fra databasen:
> > $result = mysql_query ("SELECT birthdate FROM members where
> > stat_member='checked'");
> >
> > Min birthdate et et Unix timestamp.
> > Nu vil jeg så godt have den til at regne gennemsnittet af folks alder
ud,
> > ved at tage alle members "birthdate" og lægge sammen og dividere med
> > antallet af medlemmer.
> >
> > Hvordan gør man lige det ??
> >
>
> Mysql har en indbygget funktion der tager gennemsnittet af en kollonnes
> værdier:
>
> $result = mysql_query ("SELECT AVG(birthdate) FROM members where
> stat_member='checked'");
>
> Ud fra gennemsnits fødselsdagen kan du så beregne gennemsnitsalderen ved
at
> trække gennemsnits fødselsdagen fra det nuværende dato.
> Den nuværende dato kan du få via en anden funktion der er indbygget i
MySQL
> som hedder NOW().
> NOW() returnerer en MySQL timestamp og den kan konverteres til en unix
> timestamp med den indbyggede funktion UNIX_TIMESTAMP()
> Eller du kan nøjes med at hente alderen og så lave en unix timestamp i PHP
> som du sammenligner med.
>
> Her er eksemplet i MySQL:
>
> $result = mysql_query ("SELECT (UNIX_TIMESTAMP(NOW()) -
AVG(birthdate) )
> / (3600*24*365) FROM members where stat_member='checked'");
> $avg_age = mysql_reault($result, 0);
> //Det er 3600*24*365 sekunder på et år.
>
> Det giver en lille usikkerhed da der ikke præcist er 365 dage på et år.
>
>
> Mvh Mikkel
> --
> ------> END <------
> Mikkel Magnus Christensen
> barefoot@jaha.dk, www.startfirma.dk, www.starthotel.dk, www.i-know.dk
> ------> END <------
>



Asbjørn Sloth Tønnes~ (02-01-2003)
Kommentar
Fra : Asbjørn Sloth Tønnes~


Dato : 02-01-03 15:13

Hvorfor bruger du ikke datetime?
Fordele ved at bruge timestamp til fødselsdato fremfor datetime
Ingen
Ulemper ved overstående
1) Hvis man opdaterer recorden uden at sætte birthdate=birthdate
manuelt, bliver birthdate rettet til dags dato
2) timestamp kan kun indeholde fødselsdatoer efter 1970

The DATETIME, DATE, and TIMESTAMP Types
http://www.mysql.com/doc/en/DATETIME.html

Hvis du ændre birthdate til at være datetime i stedet for timestamp, skal du
bare ændre lidt i din sql:

$result = mysql_query ("SELECT ROUND((UNIX_TIMESTAMP(NOW()) -
AVG(UNIX_TIMESTAMP(birthdate)))
/ (3600*24*364.75)) as result FROM members where stat_member='checked'");
$avg_age = $result[0][0];
//Det er 3600*24*364.75 sekunder på et år.

Da det er skudår ca. hvert 4. år bruger jeg 364.75 i stedet for 365.

mysql_reault() står ikke i manualen. Google kan ikke finde noget om den.

"Brian Sørensen" <usenet@s800.dk> skrev i en meddelelse
news:3e138a6c$0$180$edfadb0f@dread16.news.tele.dk...
> Jeg har en MySQL database, hvor jeg har folks alder i en tabel.
>
> Jeg kunne godt tænke mig at regne gennemsnits alderen ud på folkene i
> databasen.
>
> Jeg har lavet en select fra databasen:
> $result = mysql_query ("SELECT birthdate FROM members where
> stat_member='checked'");
>
> Min birthdate et et Unix timestamp.
> Nu vil jeg så godt have den til at regne gennemsnittet af folks alder ud,
> ved at tage alle members "birthdate" og lægge sammen og dividere med
> antallet af medlemmer.
>
> Hvordan gør man lige det ??
>
> Venlig hilsen
> Brian Sørensen
>
>
>



Mikkel Christensen (02-01-2003)
Kommentar
Fra : Mikkel Christensen


Dato : 02-01-03 16:54

"Asbjørn Sloth Tønnesen" <ONGLDSFPKWPX@spammotel.com> skrev i en meddelelse
news:RNXQ9.22181$Hl6.2386022@news010.worldonline.dk...
> "Brian Sørensen" <usenet@s800.dk> skrev i en meddelelse
> news:3e138a6c$0$180$edfadb0f@dread16.news.tele.dk...
> > Min birthdate et et Unix timestamp.
> > Nu vil jeg så godt have den til at regne gennemsnittet af folks alder
ud,
> > ved at tage alle members "birthdate" og lægge sammen og dividere med
> > antallet af medlemmer.
> >
> > Hvordan gør man lige det ??
> Hvorfor bruger du ikke datetime?
> Fordele ved at bruge timestamp til fødselsdato fremfor datetime
> Ingen

Tja det er vel et spørgsmål om vane, personligt foretrækker jeg timestampen.

> Ulemper ved overstående
> 1) Hvis man opdaterer recorden uden at sætte birthdate=birthdate
> manuelt, bliver birthdate rettet til dags dato

ahva?

> 2) timestamp kan kun indeholde fødselsdatoer efter 1970
>

Det passer ikke, den kan godt have negative værdier.

> The DATETIME, DATE, and TIMESTAMP Types
> http://www.mysql.com/doc/en/DATETIME.html
>
> Hvis du ændre birthdate til at være datetime i stedet for timestamp, skal
du
> bare ændre lidt i din sql:
>
> $result = mysql_query ("SELECT ROUND((UNIX_TIMESTAMP(NOW()) -
> AVG(UNIX_TIMESTAMP(birthdate)))
> / (3600*24*364.75)) as result FROM members where stat_member='checked'");
> $avg_age = $result[0][0];
> //Det er 3600*24*364.75 sekunder på et år.
>
> Da det er skudår ca. hvert 4. år bruger jeg 364.75 i stedet for 365.
>
> mysql_reault() står ikke i manualen. Google kan ikke finde noget om den.
>
Det er fordi den hedder mysql_result()
http://php.net/mysql_result


Kan folk i denne kategori ikke lade være med at topposte? (altså kommenterer
i toppen af de andre indlæg i stedet for under så man kan følge citaterne)
Det er ret skidt citat teknik og uoverskueligt for den næste der læser.

--
------> END <------
Mikkel Magnus Christensen
barefoot@jaha.dk, www.startfirma.dk, www.starthotel.dk, www.i-know.dk
------> END <------


Asbjørn Sloth Tønnes~ (02-01-2003)
Kommentar
Fra : Asbjørn Sloth Tønnes~


Dato : 02-01-03 17:52

"Mikkel Christensen" <barefoot@jaha.dk> skrev i en meddelelse
news:av1ncu$30ub$1@news.cybercity.dk...
> "Asbjørn Sloth Tønnesen" <ONGLDSFPKWPX@spammotel.com> skrev i en
meddelelse
> news:RNXQ9.22181$Hl6.2386022@news010.worldonline.dk...
> > "Brian Sørensen" <usenet@s800.dk> skrev i en meddelelse
> > news:3e138a6c$0$180$edfadb0f@dread16.news.tele.dk...
> > > Min birthdate et et Unix timestamp.
> > > Nu vil jeg så godt have den til at regne gennemsnittet af folks alder
> ud,
> > > ved at tage alle members "birthdate" og lægge sammen og dividere med
> > > antallet af medlemmer.
> > >
> > > Hvordan gør man lige det ??
> > Hvorfor bruger du ikke datetime?
> > Fordele ved at bruge timestamp til fødselsdato fremfor datetime
> > Ingen
>
> Tja det er vel et spørgsmål om vane, personligt foretrækker jeg
timestampen.
>
> > Ulemper ved overstående
> > 1) Hvis man opdaterer recorden uden at sætte birthdate=birthdate
> > manuelt, bliver birthdate rettet til dags dato
>
> ahva?

http://www.mysql.com/doc/en/DATETIME.html

>
> > 2) timestamp kan kun indeholde fødselsdatoer efter 1970
> >
>
> Det passer ikke, den kan godt have negative værdier.

http://www.mysql.com/doc/en/DATETIME.html
> TIMESTAMP values may range from the beginning of
> 1970 to sometime in the year 2037, with a resolution
> of one second. Values are displayed as numbers.

>
> > The DATETIME, DATE, and TIMESTAMP Types
> > http://www.mysql.com/doc/en/DATETIME.html
> >
> > Hvis du ændre birthdate til at være datetime i stedet for timestamp,
skal
> du
> > bare ændre lidt i din sql:
> >
> > $result = mysql_query ("SELECT ROUND((UNIX_TIMESTAMP(NOW()) -
> > AVG(UNIX_TIMESTAMP(birthdate)))
> > / (3600*24*364.75)) as result FROM members where
stat_member='checked'");
> > $avg_age = $result[0][0];
> > //Det er 3600*24*364.75 sekunder på et år.
> >
> > Da det er skudår ca. hvert 4. år bruger jeg 364.75 i stedet for 365.
> >
> > mysql_reault() står ikke i manualen. Google kan ikke finde noget om den.
> >
> Det er fordi den hedder mysql_result()
> http://php.net/mysql_result

smart funktion, men jeg foretrækker nu bare $result[0][0] i stedet for
mysql_result($result, 0)

> Kan folk i denne kategori ikke lade være med at topposte? (altså
kommenterer
> i toppen af de andre indlæg i stedet for under så man kan følge citaterne)
> Det er ret skidt citat teknik og uoverskueligt for den næste der læser.
>
> --
> ------> END <------
> Mikkel Magnus Christensen
> barefoot@jaha.dk, www.startfirma.dk, www.starthotel.dk, www.i-know.dk
> ------> END <------
>



Mikkel Christensen (02-01-2003)
Kommentar
Fra : Mikkel Christensen


Dato : 02-01-03 19:45

"Asbjørn Sloth Tønnesen" <ONGLDSFPKWPX@spammotel.com> skrev i en meddelelse
news:g7_Q9.22916$Hl6.2408454@news010.worldonline.dk...
> > > Ulemper ved overstående
> > > 1) Hvis man opdaterer recorden uden at sætte
birthdate=birthdate
> > > manuelt, bliver birthdate rettet til dags dato
> >
> > ahva?
>
> http://www.mysql.com/doc/en/DATETIME.html
>

Kan du ikke kopiere det citat du hentyder til her ind i så jeg skal læse
hele dokumentationen?
Du ved jo sikkert hvor det står:)

> >
> > > 2) timestamp kan kun indeholde fødselsdatoer efter 1970
> > >
> >
> > Det passer ikke, den kan godt have negative værdier.
>
> http://www.mysql.com/doc/en/DATETIME.html


> > TIMESTAMP values may range from the beginning of
> > 1970 to sometime in the year 2037, with a resolution
> > of one second. Values are displayed as numbers.

Det er muligt mysql's timestamp fungerer sådan.
Men det er en unix timestamp genereret af PHP og den kan sagtens antage
negative værdier.
Jeg har lige testet det for at være sikker.(PHP v.4.2.3)

> > > mysql_reault() står ikke i manualen. Google kan ikke finde noget om
den.
> > >
> > Det er fordi den hedder mysql_result()
> > http://php.net/mysql_result
>
> smart funktion, men jeg foretrækker nu bare $result[0][0] i stedet for
> mysql_result($result, 0)
>

Hvordan skal dette forstås?:

$result[0][0]

--
------> END <------
Mikkel Magnus Christensen
barefoot@jaha.dk, www.startfirma.dk, www.starthotel.dk, www.i-know.dk
------> END <------


Asbjørn Sloth Tønnes~ (02-01-2003)
Kommentar
Fra : Asbjørn Sloth Tønnes~


Dato : 02-01-03 21:00

"Mikkel Christensen" <barefoot@jaha.dk> skrev i en meddelelse
news:av21cf$ec9$1@news.cybercity.dk...
> "Asbjørn Sloth Tønnesen" <ONGLDSFPKWPX@spammotel.com> skrev i en
meddelelse
> news:g7_Q9.22916$Hl6.2408454@news010.worldonline.dk...
> > > > Ulemper ved overstående
> > > > 1) Hvis man opdaterer recorden uden at sætte
> birthdate=birthdate
> > > > manuelt, bliver birthdate rettet til dags dato
> > >
> > > ahva?
> >
> > http://www.mysql.com/doc/en/DATETIME.html
> >
>
> Kan du ikke kopiere det citat du hentyder til her ind i så jeg skal læse
> hele dokumentationen?
> Du ved jo sikkert hvor det står:)

Du bad selv om det
The TIMESTAMP column type provides a type that you can use to automatically
mark INSERT or UPDATE operations with the current date and time. If you have
multiple TIMESTAMP columns, only the first one is updated automatically.

Automatic updating of the first TIMESTAMP column occurs under any of the
following conditions:

a.. The column is not specified explicitly in an INSERT or LOAD DATA
INFILE statement.
b.. The column is not specified explicitly in an UPDATE statement and some
other column changes value. (Note that an UPDATE that sets a column to the
value it already has will not cause the TIMESTAMP column to be updated,
because if you set a column to its current value, MySQL ignores the update
for efficiency.)
c.. You explicitly set the TIMESTAMP column to NULL.
TIMESTAMP columns other than the first may also be set to the current date
and time. Just set the column to NULL or to NOW().

You can set any TIMESTAMP column to a value different from the current date
and time by setting it explicitly to the desired value. This is true even
for the first TIMESTAMP column. You can use this property if, for example,
you want a TIMESTAMP to be set to the current date and time when you create
a row, but not to be changed whenever the row is updated later:

a.. Let MySQL set the column when the row is created. This will initialise
it to the current date and time.
b.. When you perform subsequent updates to other columns in the row, set
the TIMESTAMP column explicitly to its current value.
On the other hand, you may find it just as easy to use a DATETIME column
that you initialise to NOW() when the row is created and leave alone for
subsequent updates


> > >
> > > > 2) timestamp kan kun indeholde fødselsdatoer efter 1970
> > > >
> > >
> > > Det passer ikke, den kan godt have negative værdier.
> >
> > http://www.mysql.com/doc/en/DATETIME.html
>
>
> > > TIMESTAMP values may range from the beginning of
> > > 1970 to sometime in the year 2037, with a resolution
> > > of one second. Values are displayed as numbers.
>
> Det er muligt mysql's timestamp fungerer sådan.
> Men det er en unix timestamp genereret af PHP og den kan sagtens antage
> negative værdier.
> Jeg har lige testet det for at være sikker.(PHP v.4.2.3)

$a=mktime (0,0,0,1,1,50);
echo date ("M-d-Y", $a);
= Warning: unexpected error in date() in c:\htdocs\local\test\timestamp.php
on line 3

Mysql's timestamp er et unix timestamp. Jeg vil anbefale dig at køre
datoerne 100% i mysql's date som kan indeholde 1000-01-01 til 9999-12-31

http://mbn.dk/MySQL/dato/

> > > > mysql_reault() står ikke i manualen. Google kan ikke finde noget om
> den.
> > > >
> > > Det er fordi den hedder mysql_result()
> > > http://php.net/mysql_result
> >
> > smart funktion, men jeg foretrækker nu bare $result[0][0] i stedet for
> > mysql_result($result, 0)
> >
>
> Hvordan skal dette forstås?:
>
> $result[0][0]
læs noget om arrays

http://www.php.net/manual/sl/language.types.array.php#AEN4181

>
> --
> ------> END <------
> Mikkel Magnus Christensen
> barefoot@jaha.dk, www.startfirma.dk, www.starthotel.dk, www.i-know.dk
> ------> END <------
>



Mikkel Christensen (02-01-2003)
Kommentar
Fra : Mikkel Christensen


Dato : 02-01-03 21:24

"Asbjørn Sloth Tønnesen" <ONGLDSFPKWPX@spammotel.com> skrev i en meddelelse
news:IS0R9.23647$Hl6.2445225@news010.worldonline.dk...
> "Mikkel Christensen" <barefoot@jaha.dk> skrev i en meddelelse
> news:av21cf$ec9$1@news.cybercity.dk...
> > "Asbjørn Sloth Tønnesen" <ONGLDSFPKWPX@spammotel.com> skrev i en
> meddelelse
> > news:g7_Q9.22916$Hl6.2408454@news010.worldonline.dk...
> > > > > Ulemper ved overstående
> > > > > 1) Hvis man opdaterer recorden uden at sætte
> > birthdate=birthdate
> > > > > manuelt, bliver birthdate rettet til dags dato
> > > >
> > > > ahva?
> > >
> > > http://www.mysql.com/doc/en/DATETIME.html
> > >
> >
> > Kan du ikke kopiere det citat du hentyder til her ind i så jeg skal læse
> > hele dokumentationen?
> > Du ved jo sikkert hvor det står:)
>
> Du bad selv om det

Eh ja selvfølgelig gjorde jeg det.
Det er da noget lettere end at jeg skal sidde og finde det selv.
Du ved jo hvór det står.

> The TIMESTAMP column type provides a type that you can use to
automatically
> mark INSERT or UPDATE operations with the current date and time. If you
have
> multiple TIMESTAMP columns, only the first one is updated automatically.
>
> Automatic updating of the first TIMESTAMP column occurs under any of the
> following conditions:
>
> a.. The column is not specified explicitly in an INSERT or LOAD DATA
> INFILE statement.
> b.. The column is not specified explicitly in an UPDATE statement and
some
> other column changes value. (Note that an UPDATE that sets a column to the
> value it already has will not cause the TIMESTAMP column to be updated,
> because if you set a column to its current value, MySQL ignores the update
> for efficiency.)
> c.. You explicitly set the TIMESTAMP column to NULL.
> TIMESTAMP columns other than the first may also be set to the current date
> and time. Just set the column to NULL or to NOW().
>
> You can set any TIMESTAMP column to a value different from the current
date
> and time by setting it explicitly to the desired value. This is true even
> for the first TIMESTAMP column. You can use this property if, for example,
> you want a TIMESTAMP to be set to the current date and time when you
create
> a row, but not to be changed whenever the row is updated later:
>
> a.. Let MySQL set the column when the row is created. This will
initialise
> it to the current date and time.
> b.. When you perform subsequent updates to other columns in the row, set
> the TIMESTAMP column explicitly to its current value.
> On the other hand, you may find it just as easy to use a DATETIME column
> that you initialise to NOW() when the row is created and leave alone for
> subsequent updates
>

Okay, så misforstår vi hinanden.
Det jeg mener med unix timestamp er hvor du genererer en timestamp med
f.eks. PHP og gemmer den i et integer felt.
Der har man mere kontrol over hvordan den opfører sig.

Og du snakker tydeligvis om en kolonne type i mysql.

> > > > TIMESTAMP values may range from the beginning of
> > > > 1970 to sometime in the year 2037, with a resolution
> > > > of one second. Values are displayed as numbers.
> >
> > Det er muligt mysql's timestamp fungerer sådan.
> > Men det er en unix timestamp genereret af PHP og den kan sagtens antage
> > negative værdier.
> > Jeg har lige testet det for at være sikker.(PHP v.4.2.3)
>
> $a=mktime (0,0,0,1,1,50);
> echo date ("M-d-Y", $a);
> = Warning: unexpected error in date() in
c:\htdocs\local\test\timestamp.php
> on line 3

Mit eksempel ser sådan ud:
--> <?php
--> $d = mktime(0, 0, 0, 1, 1, 1930);
--> echo $d."\n";
--> echo date("d-m-Y", $d);
--> ?>

Det giver følgende output i PHP 4.2.3:

--> -1262307600
--> 01-01-1930

> Mysql's timestamp er et unix timestamp. Jeg vil anbefale dig at køre
> datoerne 100% i mysql's date som kan indeholde 1000-01-01 til 9999-12-31
>
> http://mbn.dk/MySQL/dato/

Det er meget fint med al den modvisende dokumentation, men faktum er at det
virker når jeg tester det:)
Det er meget muligt det er fordi de links du henviser til bruger php af
ældre dato.
Eller også er det ikke en dokumenteret effekt jeg får ud af det.

> > > > > mysql_reault() står ikke i manualen. Google kan ikke finde noget
om
> > den.
> > > > >
> > > > Det er fordi den hedder mysql_result()
> > > > http://php.net/mysql_result
> > >
> > > smart funktion, men jeg foretrækker nu bare $result[0][0] i stedet for
> > > mysql_result($result, 0)
> > >
> >
> > Hvordan skal dette forstås?:
> >
> > $result[0][0]
> læs noget om arrays
>
> http://www.php.net/manual/sl/language.types.array.php#AEN4181
>

Jeg kender udemærket til brugen af arrays.
Men mysql_query() returnerer en mysql-ressource-id som mig bekendt ikke kan
behandles som et multidimentionalt array, sådan som du gør i eksemplet.

Du danner din variabel $result på følgende måde:
$result = mysql_query('SELECT COUNT(*) FROM tabel LIMIT 1');

Derefter vælger jeg at hente resultatet ud med mysql_result():
$count = mysql_result($result, 0);

Og du skriver efterfølgende at du foretrækker bare at skrive:
$count = $result[0][0];

Hvis du kan gøre således kræver det at $result er et multidimentionalt array
som indeholder de data forespørgslen returnerede, såfremt den returnerede
noget.
Mig bekendt kan det ikke lade sig gøre da mysql_query() ikke returnerer et
multidementionalt array, men et ressource id.
Ihvertfald ikke i den mysql 3.23 jeg har adgang til.

--
------> END <------
Mikkel Magnus Christensen
barefoot@jaha.dk, www.startfirma.dk, www.starthotel.dk, www.i-know.dk
------> END <------


Asbjørn Sloth Tønnes~ (02-01-2003)
Kommentar
Fra : Asbjørn Sloth Tønnes~


Dato : 02-01-03 23:26


"Mikkel Christensen" <barefoot@jaha.dk> skrev i en meddelelse
news:av276e$n2l$1@news.cybercity.dk...
> "Asbjørn Sloth Tønnesen" <ONGLDSFPKWPX@spammotel.com> skrev i en
meddelelse
> news:IS0R9.23647$Hl6.2445225@news010.worldonline.dk...
> > "Mikkel Christensen" <barefoot@jaha.dk> skrev i en meddelelse
> > news:av21cf$ec9$1@news.cybercity.dk...
> > > "Asbjørn Sloth Tønnesen" <ONGLDSFPKWPX@spammotel.com> skrev i en
> > meddelelse
> > > news:g7_Q9.22916$Hl6.2408454@news010.worldonline.dk...
> > > > > > Ulemper ved overstående
> > > > > > 1) Hvis man opdaterer recorden uden at sætte
> > > birthdate=birthdate
> > > > > > manuelt, bliver birthdate rettet til dags dato
> > > > >
> > > > > ahva?
> > > >
> > > > http://www.mysql.com/doc/en/DATETIME.html
> > > >
> > >
> > > Kan du ikke kopiere det citat du hentyder til her ind i så jeg skal
læse
> > > hele dokumentationen?
> > > Du ved jo sikkert hvor det står:)
> >
> > Du bad selv om det
>
> Eh ja selvfølgelig gjorde jeg det.
> Det er da noget lettere end at jeg skal sidde og finde det selv.
> Du ved jo hvór det står.
>
> > The TIMESTAMP column type provides a type that you can use to
> automatically
> > mark INSERT or UPDATE operations with the current date and time. If you
> have
> > multiple TIMESTAMP columns, only the first one is updated automatically.
> >
> > Automatic updating of the first TIMESTAMP column occurs under any of the
> > following conditions:
> >
> > a.. The column is not specified explicitly in an INSERT or LOAD DATA
> > INFILE statement.
> > b.. The column is not specified explicitly in an UPDATE statement and
> some
> > other column changes value. (Note that an UPDATE that sets a column to
the
> > value it already has will not cause the TIMESTAMP column to be updated,
> > because if you set a column to its current value, MySQL ignores the
update
> > for efficiency.)
> > c.. You explicitly set the TIMESTAMP column to NULL.
> > TIMESTAMP columns other than the first may also be set to the current
date
> > and time. Just set the column to NULL or to NOW().
> >
> > You can set any TIMESTAMP column to a value different from the current
> date
> > and time by setting it explicitly to the desired value. This is true
even
> > for the first TIMESTAMP column. You can use this property if, for
example,
> > you want a TIMESTAMP to be set to the current date and time when you
> create
> > a row, but not to be changed whenever the row is updated later:
> >
> > a.. Let MySQL set the column when the row is created. This will
> initialise
> > it to the current date and time.
> > b.. When you perform subsequent updates to other columns in the row,
set
> > the TIMESTAMP column explicitly to its current value.
> > On the other hand, you may find it just as easy to use a DATETIME column
> > that you initialise to NOW() when the row is created and leave alone for
> > subsequent updates
> >
>
> Okay, så misforstår vi hinanden.
> Det jeg mener med unix timestamp er hvor du genererer en timestamp med
> f.eks. PHP og gemmer den i et integer felt.
> Der har man mere kontrol over hvordan den opfører sig.
>
> Og du snakker tydeligvis om en kolonne type i mysql.

Korrekt

> > > > > TIMESTAMP values may range from the beginning of
> > > > > 1970 to sometime in the year 2037, with a resolution
> > > > > of one second. Values are displayed as numbers.
> > >
> > > Det er muligt mysql's timestamp fungerer sådan.
> > > Men det er en unix timestamp genereret af PHP og den kan sagtens
antage
> > > negative værdier.
> > > Jeg har lige testet det for at være sikker.(PHP v.4.2.3)
> >
> > $a=mktime (0,0,0,1,1,50);
> > echo date ("M-d-Y", $a);
> > = Warning: unexpected error in date() in
> c:\htdocs\local\test\timestamp.php
> > on line 3
>
> Mit eksempel ser sådan ud:
> --> <?php
> --> $d = mktime(0, 0, 0, 1, 1, 1930);
> --> echo $d."\n";
> --> echo date("d-m-Y", $d);
> --> ?>
>
> Det giver følgende output i PHP 4.2.3:
>
> --> -1262307600
> --> 01-01-1930

<?
$a=mktime (0,0,0,1,1,68);
echo date ("M-d-Y", $a);

$d = mktime(0, 0, 0, 1, 1, 1930);
echo $d."\n";
echo date("d-m-Y", $d);
?>

gir

Warning: unexpected error in date() in c:\htdocs\local\test\timestamp.php on
line 3
-1
Warning: unexpected error in date() in c:\htdocs\local\test\timestamp.php on
line 7

med php version 4.2.2

Kan ikke lige finde det i change logen (fra 4.2.2 til 4.2.3)
http://www.php.net/ChangeLog-4.php#4.2.3

>
> > Mysql's timestamp er et unix timestamp. Jeg vil anbefale dig at køre
> > datoerne 100% i mysql's date som kan indeholde 1000-01-01 til 9999-12-31
> >
> > http://mbn.dk/MySQL/dato/
>
> Det er meget fint med al den modvisende dokumentation, men faktum er at
det
> virker når jeg tester det:)
> Det er meget muligt det er fordi de links du henviser til bruger php af
> ældre dato.
> Eller også er det ikke en dokumenteret effekt jeg får ud af det.
>
> > > > > > mysql_reault() står ikke i manualen. Google kan ikke finde noget
> om
> > > den.
> > > > > >
> > > > > Det er fordi den hedder mysql_result()
> > > > > http://php.net/mysql_result
> > > >
> > > > smart funktion, men jeg foretrækker nu bare $result[0][0] i stedet
for
> > > > mysql_result($result, 0)
> > > >
> > >
> > > Hvordan skal dette forstås?:
> > >
> > > $result[0][0]
> > læs noget om arrays
> >
> > http://www.php.net/manual/sl/language.types.array.php#AEN4181
> >
>
> Jeg kender udemærket til brugen af arrays.
> Men mysql_query() returnerer en mysql-ressource-id som mig bekendt ikke
kan
> behandles som et multidimentionalt array, sådan som du gør i eksemplet.
>
> Du danner din variabel $result på følgende måde:
> $result = mysql_query('SELECT COUNT(*) FROM tabel LIMIT 1');
>
> Derefter vælger jeg at hente resultatet ud med mysql_result():
> $count = mysql_result($result, 0);
>
> Og du skriver efterfølgende at du foretrækker bare at skrive:
> $count = $result[0][0];
>
> Hvis du kan gøre således kræver det at $result er et multidimentionalt
array
> som indeholder de data forespørgslen returnerede, såfremt den returnerede
> noget.
> Mig bekendt kan det ikke lade sig gøre da mysql_query() ikke returnerer et
> multidementionalt array, men et ressource id.
> Ihvertfald ikke i den mysql 3.23 jeg har adgang til.

Ok, du har ret grunden til at jeg bruger $result[0][0] er at jeg bruger en
DBklasse som returnere et multidimentionalt array, sorry.



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408946
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste