30. april 2005 - 15:03Der er
42 kommentarer og 1 løsning
Hjælp med limit
her er en kode stump : <? mysql_select_db($database_Banankassen, $Banankassen); $data = mysql_query("SELECT DISTINCT vejnavn, side FROM Route WHERE dag LIKE '$dagskriv' and tid = '$tid_nu' limit 0,1"); while ($row = mysql_Fetch_Array($data)) { echo "Banankassen er ved " . $row[vejnavn]."." . $row[side]."<br>"; } echo $tid_nu; ?>
kan nogen hjælpe mig med at forstå dette udtryk : and tid = '$tid_nu' limit 0,1"
prøv nu at kikke på min kode oppe i det første indlæg
om jeg har forstået det rigtigt
det jeg vil er at der kun kommer 1 svar fra min db til hjemmesiden
men jeg har ikke helt forstået denne linie : $data = mysql_query("SELECT DISTINCT vejnavn, side FROM Route WHERE dag LIKE '$dagskriv' and tid = '$tid_nu' limit 0,1");
SELECT DISTINCT vejnavn, side FROM Route WHERE dag LIKE '$dagskriv' and tid = '$tid_nu' limit 0,1 betyder Select Distinct vejnavn, side -> Du vælger unikt vejnavn og (ikke unikt) side Hvis nu samme vejnavn optræder 100gange i tabellen så vises det altså kun een gang pga Distinct From Route -> fra din tabel WHERE dag LIKE '$dagskriv' and tid = '$tid_nu' -> Giver dig resultater hvor dag minder om $dagskriv og tid = nu limit begrænser så du kun får eet resultat ud - her det først funde som matcher dine kriterier -- læs evt mere om sql for begyndere her http://www.w3schools.com/sql/default.asp
problemet er at den viser en forkert post prøv at se på http://www.banankassen.dk/index-t.php den viser slettetoften men den er ikke ude at kører mere idag (14:00) så nu skulle den skrive fyraften da det er den sidste post der passer
Når du har denne her tid = '$tid_nu' Hvis der ikke er nogen felter i databasen som passer på det så får du jo intet resultat Altså .. du beder om alle de felter hvor klokken er lig med nu ikke?
jo det gør jeg men der er ingen der er lig med nu der for skulle den være tom men den viser slettetoften som er den første og det kan jeg ikke forstå for den passer jo ikke på "tid".
Jeg skal lige forstå dit loop Ønsker du kun at få at vide hvor den er "lige nu og her"... eller ønsker du hvis man går ind kl 5 om morgenen at den skal vise hvor den er resten af dagen?
det den skal vise er hvor den er nu og her inden for 6 min altså hvis den er på "hegnstoften 6-10 kl 12:30" og "hegnstoften 5-11 kl 12:40" og klokken er 12:35 skal den vise "hegnstoften 6-10 kl 12:30 " og i det den skifter til 12:36 skal den sklifte til "hegnstoften 5-11 kl 12:40"
man kan alt!... men det er bare ikke altid lige nemt hehe Jeg går ud fra at posterne kun optræde een gang i din tabel så DISTINCT er overflødig tror jeg Endvidere kan jeg ikke forstå brugen af LIKE? Hvis $dagskriv er ugedagen så skal den vel finde ugedagen..og ikke noget som minder om det?..eller er det pga datoformater? Hvordan ser din tid og $tid_nu ud ?. Som tt:mm ?
Det du ønsker er noget i retningen "SELECT vejnavn, side FROM Route WHERE dag = '$dagskriv' AND (tid BETWEEN '$tid_nu-5min' AND '$tid_nu') OR (tid BETWEEN '$tid_nu' AND '$tid_nu+5min')"
ok så bør du kunne bruge det i min kommentar 16:48:26 Bortset fra at '$tid_nu-5min' og '$tid_nu+5min' skal laves om til noget som er korrekt Jeg kan ikke huske hvordan det er i php med tider Prøv evt lige at lave et echo "tid nu er ".$tid_nu." og minus fem er ".$tid_nu-5
Prøv udskrive din sql altså gøre sådan her istedet $sql = "SELECT vejnavn, side FROM Route WHERE dag = '$dagskriv' AND (tid BETWEEN '$tid_nu-5' AND '$tid_nu') OR (tid BETWEEN '$tid_nu' AND '$tid_nu+5')"; echo $sql; $data = mysql_query($sql) or die(mysql_error()); ---- Så kan vi da se hvordan den ender op Men det er forkert bare lægge fem til Problemet er at tt:mm er svært at arbejde med hvis du vil have intervaller på Det ville være nemmere hvis du kunne logges til at putte et ekstra tal i databasen kaldet unixtime eller noget.. Den får man ved $nu = mktime(date("H"), date("i"), date("s"), date("m") , date("d")+1, date("Y")); Og der er det nemt at sige at om fem minutter det er så mktime(date("H"), date("i")+5, date("s"), date("m") , date("d")+1, date("Y")); resultatet af en mktime er et ti cifret tal som der så kan testes på
Ja altså ideen må være at du finder een forekomst i databasen...og hvis du ikke finder nogen så skriver du "fyraften" eller "ikke ude nu" for det vil jo også forekomme om morgenen
nej er det heller ikke :o(.. lavede en brøler der.. Mit problem er at jeg ikke ved/kan huske hvordan og om man kan splitte op i mysql Det du ønsker er jo at finde der hvor timen er lig timen nu og så der hvor minutter er i et interval i forhold til minutter nu Hvis du i din database havde det gemt som et "time" og "minut" felt Så ville jeg kunne søge på det nemt.. Det er muligt man kan gøre noget med tt:ii formatet men jeg ved det simpelthen ikke...det beklager jeg
kan jeg bruge denne kode stump til at skrive noget andet hved ingen fundne poster: $intet = mysql_num_rows($data); if $intet = 1 then echo ......... else echo "Banankassen står i garagen";
For det første skal du bruge == og ikke = For det andet vil antallet af rækker når der ikke er fundet noget være 0 og ikke 1 For det tredie kan jeg se på linket her at det er muligt resultatet er False i stedet for 0 http://dk2.php.net/mysql_num_rows
Så jeg vil tro du kan gøre sådan her if (!mysql_num_rows($data)){ echo "ingen poster"; }else{ echo "dine resultater her"; }
Synes godt om
Ny brugerNybegynder
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.