Avatar billede qw_freak Nybegynder
17. maj 2010 - 19:52 Der er 6 kommentarer og
2 løsninger

Hvordan søger jeg i en database og får den række udskrevet som det søgte ligger i via PHP?

Hey, jeg har en database som fungerer som et slags skoleskema, hvor man kan indtaste et starttidspunkt i hver sit felt, samt et sluttidspunkt. (og self andre data i andre felter)

mit problem er så at display'e via en webside hvilken række som er aktuel lige nu i forhold til klokkeslettet.

FX_:

Der er matematik kl 13:30:00 til 14:30:00.
Klokken er nu 14:00:00.
find den aktuelle række og udskriv den!
_____________________________________________________
|  Lærer |  start  |  Slut  |    fag    | Klasse |
|-----------------------------------------------
| Martin | 13:30:00 | 14:30:00 | Matematik |  10b  |
|____________________________________________________
+ andre rækker med andre klokkeslet

så der står:

fag: Matematik
Lærer Martin
Start: 13:30:00
Slut: 14:30:00
Klasse: 10b

Jeg har selfølgelig googlet i vilden sky, men kan ikke finde noget der duer!

Jeg ved at jeg fx i cmd promt kan skrive:

        SELECT * FROM Data where Start='13:30:00';

og så kommer den rigtige række frem!

Det er selvfølgelig for det første det præcise nummer der søges på her, så det giver anledning til hvordan finder jeg den samme række hvis der eks.vis søges på 13:33:00??
For det andet, hvordan får jeg det til at udskrive via PHP?
Avatar billede zynzz Praktikant
17. maj 2010 - 21:09 #1
En ide, men ved ikke om den kan...
WHERE UTC_TIME() >= start AND UTC_TIME() <= slut
Avatar billede danco Nybegynder
17. maj 2010 - 23:29 #2
Som synz er inde på tror jeg bare at jeg ville sammensætte en String der repræsentere det nuværende klokkeslæt. så du ville få noget lignende:

$nu = "13:00:00";

og så bruge:
SELECT * from Data WHERE start<$nu AND slut>$nu.

Hvis jeg vel og mærke har forstået din problemstilling korrekt.
Avatar billede qw_freak Nybegynder
18. maj 2010 - 11:43 #3
#2

Det lyder ganske brugbart, men hvordan udskriver jeg så hele rækken som den finder??
Avatar billede qw_freak Nybegynder
18. maj 2010 - 11:59 #4
hvilken PHP funktion kan jeg bruge til at finde ud at hvilken række jeg har fundet med komandoen fra #2?
Avatar billede showsource Seniormester
18. maj 2010 - 13:51 #5
SELECT * FROM tabel WHERE TIME(NOW()) BETWEEN start AND slut

forudsat at start og slut er i formatet HH:MM:SS
Avatar billede danco Nybegynder
18. maj 2010 - 15:51 #6
$sql = "SELECT * FROM tabel WHERE TIME(NOW()) BETWEEN start AND slut"
$rs = mysql_query(sql);
echo "Lærer:".$rs[laerer];
echo "Fag:".$rs[fag];
echo "start:".$rs[start];
echo "Slut:".$rs[slut];
echo "Klasse:".$rs[klasse];

Det er sådan noget lign. du skal bruge, dog skal jeg sige at jeg ikke har programmeret PHP i lang tid, og er derfor i tvivl om hvorvidt syntaksen er korrekt.
Jeg har valgt at bruge den Sql Streng som showsource har smidt, den virker lidt mere logisk og gør det samme som min tidligere.
Hvis du skal bruge dette mange gange vil jeg nok anbefale dig at lave dette til en function således at du blot kalder en function hver gang.
Avatar billede qw_freak Nybegynder
18. maj 2010 - 16:15 #7
jeg fandt ud af det, med:

                        $time_query='SELECT * FROM Data WHERE Start <= curtime() AND End >= curtime() AND curdate()=Date';
                        $time_result = mysql_query($time_query);

                        if (!$time_result) die ("Database access failed: " . mysql_error());

                        $time_row = mysql_fetch_row($time_result);
                       
                        $teacher =      $time_row[0];
                        $start =        $time_row[1];
                        $end =          $time_row[2];
                        $date =        $time_row[3];
                        $room =        $time_row[4];
                        $course =      $time_row[5];
                        $information =  $time_row[6];
                        $class =        $time_row[7];


Ville godt give Danco nogen point hvis det er, da han leverede en del af svaret!
Avatar billede danco Nybegynder
18. maj 2010 - 17:19 #8
Det lyder godt at du fandt en løsning på dit problem. Og det er så den langt pæneste SQL streng du har fundet frem til det.
jeg smider et svar, så kan du selv afgøre hvor stor nytte mine input har været
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester