Avatar billede a55830 Praktikant
30. april 2005 - 15:03 Der 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"

hvordan bruges limit 0,1 ???

håber der er en der kan hjælpe mig
Avatar billede hmortensen Nybegynder
30. april 2005 - 15:06 #1
Det først tal fortæller ved hvilken række der skal startes.
0 = første række

andet tal fortæller hvor mange der skal vælges.
1 = en række
Avatar billede coderdk Praktikant
30. april 2005 - 15:07 #2
LIMIT <begynd fra nummer>, <hvor mange skal hentes>
Avatar billede a55830 Praktikant
30. april 2005 - 16:04 #3
det vil sige at  tid = '$tid_nu' limit 0,1"
betyder at i ræken "tid" skal der hentes fra post 1 men kun een post vises

har jeg fprstået det rigtigt
Avatar billede coderdk Praktikant
30. april 2005 - 16:05 #4
Det er korrekt
Avatar billede hmortensen Nybegynder
30. april 2005 - 16:09 #5
Ikke helt.

tid = '$tid' har ikke noget at gøre med LIMIT.

tid = '$tid' udvælger de rækker hvor tid er lig med den variable, og LIMIT vælger den først fundne række.
Avatar billede coderdk Praktikant
30. april 2005 - 16:10 #6
hhehe ja det er mig der sover ;)
Avatar billede a55830 Praktikant
30. april 2005 - 16:16 #7
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");

det hele kommer fra dette indlæg : http://www.eksperten.dk/spm/611898

håber der er en der kan hjælpe mig
Avatar billede a55830 Praktikant
30. april 2005 - 16:17 #8
som i kan se er jeg ikke særlig god til dette endnu men håber på at blive bedre med jeres hjælp

håber der er en der kan løse dette lille problem.......
Avatar billede hmortensen Nybegynder
30. april 2005 - 16:18 #9
Der kommer kun et resultat med 'LIMIT 0, 1'
Avatar billede busschou Praktikant
30. april 2005 - 16:25 #10
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
Avatar billede a55830 Praktikant
30. april 2005 - 16:25 #11
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
Avatar billede a55830 Praktikant
30. april 2005 - 16:26 #12
takker for linket
Avatar billede busschou Praktikant
30. april 2005 - 16:26 #13
Så er det fordi du har valgt limit 0,1
Den vælger jo den øverste...du vil have den nederste :o)
Avatar billede a55830 Praktikant
30. april 2005 - 16:31 #14
ja men hvordan fåe jeg det
Avatar billede busschou Praktikant
30. april 2005 - 16:33 #15
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?
Avatar billede a55830 Praktikant
30. april 2005 - 16:35 #16
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".
Avatar billede busschou Praktikant
30. april 2005 - 16:38 #17
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?
Avatar billede a55830 Praktikant
30. april 2005 - 16:41 #18
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"

kan man det og hvis ja kan du hjælpe
Avatar billede busschou Praktikant
30. april 2005 - 16:45 #19
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 ?
Avatar billede a55830 Praktikant
30. april 2005 - 16:48 #20
her er det hele :
<?
            $ugedag[1] = "mandag";
            $ugedag[2] = "tirsdag";
            $ugedag[3] = "onsdag";
            $ugedag[4] = "torsdag";
            $ugedag[5] = "fredag";
            $ugedag[6] = "lørdag";
            $ugedag[7] = "søndag";

            $dato_array = getdate();
            $dato = $ugedag [$dato_array ["wday"]] . " d. " . $dato_array["mday"] . "/" . $dato_array["mon"] . " og klokken er " . $dato_array["hours"] . ":" . $dato_array["minutes"];
            $klokken = $dato_array["hours"] . ":" . $dato_array["minutes"];
            $dagskriv = $ugedag [$dato_array ["wday"]];
            echo "Dags dato er $dato";
            $tid_nu = date("H:i");
?>
  </td></tr>
  <tr><td colspan="3">
    <?
        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>";
        }
    ?>

som du nok kan forstå er jeg meget ny i PHP og MySql
håber at du kan bære over med mig
Avatar billede busschou Praktikant
30. april 2005 - 16:48 #21
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')"
Avatar billede busschou Praktikant
30. april 2005 - 16:53 #22
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
Avatar billede a55830 Praktikant
30. april 2005 - 16:53 #23
takker ser lige om det virker
Avatar billede a55830 Praktikant
30. april 2005 - 16:58 #24
hmm intet resultat først

så kom den med noget rigtigt men osse noget forkert

den kom med en der er om tirsdagen og en fra idag med tid kl 16:55 og det var kl 16:55 og den forsvandt igen kl 16:56

hva klan være galt
Avatar billede busschou Praktikant
30. april 2005 - 16:59 #25
Det er det med tiden der er galt...jeg kan ikke huske hvordan dælen det lige er man lægger minutter til i php...undersøger det lige
Avatar billede a55830 Praktikant
30. april 2005 - 17:05 #26
ok den tager fra alle uge dage og viser ikke kun lørdag men alle dage

det er som om at den ikke regner ugedagen med kan der mangle nogle ()
Avatar billede busschou Praktikant
30. april 2005 - 17:10 #27
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å
Avatar billede busschou Praktikant
30. april 2005 - 17:11 #28
nu står der da at den er ved fyraften...hmm har du selv løst det?
Avatar billede a55830 Praktikant
30. april 2005 - 17:13 #29
nop det virker ikke desvære

men der manglede nogle ( )  de er sat ind men den +- ikke 5 til
Avatar billede a55830 Praktikant
30. april 2005 - 17:16 #30
lige en ting til kan man få den til at skrive noget hvis den ikke får et resultat frem ??

det var bare lige noget der faldt mig ind
Avatar billede busschou Praktikant
30. april 2005 - 17:17 #31
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
Avatar billede a55830 Praktikant
30. april 2005 - 17:18 #32
unix tid ja ja

øhhmm det er forde det skal være nemt for ham der kører bilen selv at ændre tiden hvis den ska rettes

så jeg tror ikke unix tid er godt med mindre det kan gøres nemt
Avatar billede busschou Praktikant
30. april 2005 - 17:22 #33
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
Avatar billede a55830 Praktikant
30. april 2005 - 17:25 #34
hva vis jeg fjerner : i tiden kan man så svare det så ikke til et alm tal
Avatar billede busschou Praktikant
30. april 2005 - 17:28 #35
jo det har du ret i...har lige prøvet :o)
Avatar billede busschou Praktikant
30. april 2005 - 17:29 #36
det må da være løsningen så...så kan du +5 og -5 lige så tosset du vil :o)
Det skal selvfølgelig bare laves som tal i din tabel også så
Avatar billede busschou Praktikant
30. april 2005 - 17:30 #37
Det eneste er at du vil få et problem omkring midnat...men man kan vel tale godt for at det ikke er der der er flest som ser din side  :o)
Avatar billede a55830 Praktikant
30. april 2005 - 17:37 #38
hehe ja håber det virker

smid lige et svar
Avatar billede busschou Praktikant
30. april 2005 - 17:39 #39
svar :o)...
Men ellers må du lige give et praj...omend jeg selv smutter i byen om lidt :o)
Avatar billede a55830 Praktikant
30. april 2005 - 17:40 #40
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";
Avatar billede a55830 Praktikant
30. april 2005 - 17:42 #41
ævævæv det virker ikke
Avatar billede busschou Praktikant
30. april 2005 - 17:53 #42
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
Avatar billede busschou Praktikant
30. april 2005 - 17:55 #43
Så jeg vil tro du kan gøre sådan her
if (!mysql_num_rows($data)){
echo "ingen poster";
}else{
echo "dine resultater her";
}
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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