Smidt Skrevet 15. august 2004 Del Skrevet 15. august 2004 (endret) jeg har tenkt å lage litt statistikk og lurte på hvordan det er med regning og php. vet det skal gå an, men husker ikke helt hva jeg skal søke på. det jeg har behov for er å plusse, trekke fra hverandre, dele på, og kanskje gange sammen to strenger ($a og $b). jeg lurer også på hvordan jeg kan hente den eldste posten fra en db ut vhja datoen den er postet på. det samme med den nyeste posten. edit: kan forresten hente ut etter id og, men det blir litt mer tungvint. håper noen kan hjelpe. Endret 15. august 2004 av Smidt Lenke til kommentar
ilpostino Skrevet 15. august 2004 Del Skrevet 15. august 2004 Hva med å legge inn Unix timestamp på når post legges inn i systemet. for å finne nyeste av disse sammenligner du simpelthen denne timestampen.... Lenke til kommentar
Lokaltog Skrevet 15. august 2004 Del Skrevet 15. august 2004 Nummer 1: Regneoperatørene i PHP er de samme som i de fleste (alle?) andre programmeringsspråk: + = + - = - * = gange / = dele Du bruker operatørene slik: $sum = $a * $b Du kan også bruke parenteser: $sum = ($a + $b) * $c Nummer 2: SELECT * FROM database ORDER BY timestamp ASC LIMIT 1 SELECT * FROM database ORDER BY timestamp DESC LIMIT 1 Lenke til kommentar
jorgis Skrevet 15. august 2004 Del Skrevet 15. august 2004 (endret) Husk på at alle strenger blir til tallet 0 når de blir omregnet til tall. Ergo vil følgende kode bli litt sær: $a = "hei"; $b = 5; $c = $a + $b; echo $c; // dette blir 5. Hvis $a endrer verdi til et tall, blir svaret noe annet. Grunnen til at jeg sier det, er fordi du sier at du skal summere to strenger, noe som ikke går an. EDIT: Lokaltog: Man har også modulusoperatoren (%), som deler tallene på hverandre, og returnerer restverdien. EDIT2: Mulig eksempelet over gir en error istedenfor å returnere tallet 5. Endret 15. august 2004 av jorgis Lenke til kommentar
Smidt Skrevet 15. august 2004 Forfatter Del Skrevet 15. august 2004 takk, regningen var altså ganske logisk. datoen lagres i databasen som datetime, trenger jeg forandre noe i databasen da for å kunne bruke koden din lokaltog? (får ikke testet før seinere i dag) Lenke til kommentar
Smidt Skrevet 15. august 2004 Forfatter Del Skrevet 15. august 2004 går det ann å regne med tid/dato og et helt tall? f.eks. dele tid på tall? trekke dato1 fra dato2? Lenke til kommentar
Lokaltog Skrevet 15. august 2004 Del Skrevet 15. august 2004 går det ann å regne med tid/dato og et helt tall? f.eks. dele tid på tall? trekke dato1 fra dato2? Tror spørringene i posten over skal funke med DATETIME også. Når du sitter med PHP og skal dele dato på tall, er det veldig lurt å konvertere til UNIX-timestamp først. Lenke til kommentar
Smidt Skrevet 15. august 2004 Forfatter Del Skrevet 15. august 2004 kunne du gitt en liten innføring i hvordan det fikses? Lenke til kommentar
mikaelandre Skrevet 15. august 2004 Del Skrevet 15. august 2004 hvis du skal ha tiden nå skriver du bare UNIX_TIMESTAMP() i spørringa di. skal du gjøre om en dato til timestamp kan du brukle funksjonen mktime() i php, som tar inn en dato (med eller uten sekun, minutt og time) og gjør om til timestamp. Når du så henter ut timestampen bruker du date() for å gjøre om til leselig dato. Lenke til kommentar
Smidt Skrevet 15. august 2004 Forfatter Del Skrevet 15. august 2004 jeg får ikke det helt til å virke når jeg skal hente ut fra databasen. bruker da denne koden : <?php require"dbconnect.php"; $q="SELECT * FROM article ORDER BY timestamp DESC LIMIT 1"; $result= mysql_query($q, $connection) or die() ; $art=mysql_fetch_object($result) $date =$art->date; echo"<p>$date</p>"; ?> har også prøvd å sortere etter datetime siden det er det raden med date er. også date er prøvd uten at jeg får til å echoe noe ut. hvordan kan det ha seg`? Lenke til kommentar
Cucum(r) Skrevet 15. august 2004 Del Skrevet 15. august 2004 edit: kan forresten hente ut etter id og, men det blir litt mer tungvint. SELECT FROM tabell ORDER BY id DESC LIMIT 1 SELECT FROM tabell ORDER BY id ASC LIMIT 1 Ganske enkelt, spør du meg... Lenke til kommentar
mikaelandre Skrevet 16. august 2004 Del Skrevet 16. august 2004 du kan ikke sortere etter typen data i et felt, du må sortere etter navnet på feltet. ser ut fra koden din at feltet heter date, og da må du skriver order by date. Lenke til kommentar
Smidt Skrevet 16. august 2004 Forfatter Del Skrevet 16. august 2004 argh, hadde glemt en ; etter result. og fikk ikke opp noe feilmelding fordi stats siden ble inkludert. men fikset og funker så langt nå Lenke til kommentar
Smidt Skrevet 16. august 2004 Forfatter Del Skrevet 16. august 2004 har knotet sammen følgende kode for å regne litt, jeg får ut begge datoene (første og siste), men når jeg regner og echoer ut differansen, blir det bare 0, noen som kan se grunnen til det? <?php require"./dbconnect.php"; $q="SELECT * FROM article ORDER BY date DESC LIMIT 1"; $result= mysql_query($q, $connection) or die(); $art=mysql_fetch_object($result); $datelast=$art->date; echo"$datelast"; echo"<br>"; $q="SELECT * FROM article ORDER BY date ASC LIMIT 1"; $result= mysql_query($q, $connection) or die(); $art=mysql_fetch_object($result); $datefirst=$art->date; echo"$datefirst"; echo"<br>"; $datelast=mktime($datelast); $datefirst=mktime($datefirst); $dif= $datefirst - $datelast; $dif=date($dif); echo"$dif"; ?> Lenke til kommentar
Lemkin Skrevet 16. august 2004 Del Skrevet 16. august 2004 Tror ikke man kan kjøre 2 spørringer etter hverandre Lenke til kommentar
Lokaltog Skrevet 16. august 2004 Del Skrevet 16. august 2004 (endret) Tror ikke man kan kjøre 2 spørringer etter hverandre Hvorfor ikke? Funker fint for meg.. Anyways, som jorgis nevnte så kan du ikke regne med to strenger. Vet ikke om det funker, men prøv litt type juggling, slik som dette: $dif= (int)$datefirst - (int)$datelast; Eventuelt kan du jo legge inn en var_dump() mellom hver av de instruksjonene og se hva variabelen er underveis, og dermed sjekke hvor feilen oppstår. Edit: det KAN være at mktime() ikke forstår datoformatet, eller det at date() trenger to parametre. Fra php.net: string date ( string format [, int timestamp]) - ergo må du formatere datoen etter det som står her, og så sende $diff som parameter nummer 2. Endret 16. august 2004 av lokaltog Lenke til kommentar
Smidt Skrevet 16. august 2004 Forfatter Del Skrevet 16. august 2004 (endret) Tror ikke man kan kjøre 2 spørringer etter hverandre det skal vel ikke ha noe å si, for jeg får ut begge datoene, det er når jeg trekker den ene fra den andre det går gale. har tatt gjort to spørringer etterhverandre før, så jeg tror ikke feilen ligger der. edit: det virket ikke å legge inn (int) foran hver av strengene, hvor mente du jeg skulle legge inn var_dump()? Endret 16. august 2004 av Smidt Lenke til kommentar
Smidt Skrevet 16. august 2004 Forfatter Del Skrevet 16. august 2004 først hentes datoen ut fra databasen som timedate. deretter gjøres den om til UNIX_timestamp vhja. mktime(). så regnes det og til slutt gjøres det om til leselig dato vhja. date(). riktig? hvor kan da feilen ligge? og hvordan kan jeg underveis sjekke hvor feilen oppstår? Lenke til kommentar
Lokaltog Skrevet 16. august 2004 Del Skrevet 16. august 2004 Har du prøvd å kjøre date() slik som det står i manualen, med to parametre? Lenke til kommentar
Lemkin Skrevet 16. august 2004 Del Skrevet 16. august 2004 Sikkert bare jeg som roter da Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå