---
title: "Tappar en post"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/183129-tappar-en-post"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "TomasA"
published: "2010-04-10T13:10:49.000Z"
updated: "2010-04-11T20:56:11.000Z"
replies: 21
views: 774
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/183129-tappar-en-post"
---

# Tappar en post

_Sida 1 av 2._

## #1 — TomasA, 2010-04-10T13:10Z

Kör PHP och MySQL

I min kalender tappar jag 1:a posten som skall vara med.
Har äldre poster med i dasen men det funkar ok

Har följande select:

```php
 $result=mysql_query("select * FROM kalender WHERE CURDATE() <= dag AND CURDATE() <= '".date("Y-12-31")."' ORDER BY dag limit 20");
```

 
Är denna fel eller skall jag leta efter felet någon annanstans i koden?
Mvh

Permalänk: https://www.webforum.nu/p/183129

## #2 — nitro2k01, 2010-04-10T13:41Z

Du har ett fel åtminstone: **CURDATE() \<= '".date("Y-12-31")."'**
Där kollar du om dagens datum är mindre än eller lika med sista december i år. Och det är ju alltid sant.
Jag antar att det du vill söka efter är **dag \<= '".date("Y-12-31")."'**. Ett bättre sätt att uppnå det resultatet är: **... AND YEAR(dag) = YEAR(NOW())**

Det bör dock ändå inte vara orsaken till ditt problem. Vilken datatyp är dag? Eller mer intressant, vad lagrar du där? Bara datum eller datum och tid?

Permalänk: https://www.webforum.nu/p/2232819

## #3 — TomasA, 2010-04-10T13:52Z

Jag har två datum 
1 - date som är när posten registeras. Typ "date"
2 - dag som är när händelsen sker. Typ "datetime" Detta för att kunna sortera händelse på samma dag efter när på dagen det sker.

Och databasen är MySQL 5.1
OK?

Permalänk: https://www.webforum.nu/p/2232820

## #4 — TomasA, 2010-04-10T13:56Z

Jag tror detta sök är helt onödigt för mig.

```php
CURDATE() <= '".date("Y-12-31")."'
```

Permalänk: https://www.webforum.nu/p/2232821

## #5 — nitro2k01, 2010-04-10T14:13Z

Nej, helt OK är det inte. Det enda "date" jag ser i frågan ovan är **date("Y-12-31")** och sättet du använder det på är felaktigt, som jag förklarade ovan. (date är som du använder det där en funktion i PHP.)

Dessutom kan det eventuellt bli fel med **CURDATE() \<= dag** om servern har en annan tidszon inställd. Om ett inlägg har dag satt till någon gång under natten/morgonen till idag kan det vara sparat som sen kväll igår, sett från databasens sida. Och kommer alltså inte dyka upp i resultatet. Prova att ändra tiden för den saknade posten till något senare och se om den syns. Då vet du i alla fall vad felet är.

Permalänk: https://www.webforum.nu/p/2232822

## #6 — TomasA, 2010-04-10T14:35Z

Har ändrat select till
**$result=mysql_query("select \* FROM kalender WHERE CURDATE() \<= dag ORDER BY dag limit 20");**
och det fungerar OK, men 1:a posten fortfarande borta.
Värdet på "dag" i den posten är "2010-04-12 10:00:00" - alltså inte tidzons-fel.
Har också testat med att ta bort posten - då är det gamla 2:a som försvinner.
Jag är klart fundersam!

Permalänk: https://www.webforum.nu/p/2232823

## #7 — nitro2k01, 2010-04-10T14:40Z

Då ligger felet troligen i PHP-koden. Vad händer om du kör frågan i phpMyAdmin?

Permalänk: https://www.webforum.nu/p/2232824

## #8 — TomasA, 2010-04-10T15:49Z

Glömde bort den möjligheten - tack för det!
Jag fick följande svar:
**\#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$result=mysql_query("select \* FROM kalender WHERE CURDATE() \<= dag ORDER BY dag"' at line 1**
Skall nu kolla min manual
 :r

Permalänk: https://www.webforum.nu/p/2232827

## #9 — nitro2k01, 2010-04-10T16:08Z

```
select * FROM kalender WHERE CURDATE() <= dag ORDER BY dag
```

**$result=mysql_query("** är ju PHP-kod. Själva SQL-frågan finns i strängen och ser ut som ovan.

Permalänk: https://www.webforum.nu/p/2232829

## #10 — TomasA, 2010-04-10T17:51Z

Det enda phpMyAdmin föreslog (eller visade) var att sätta in 0 i LIMIT enligt 
LIMIT 0 , 3 ( Var tvungen att ha med LIMIT, annars blir visningen för lång.)
Testade även utan det, men med samma resultat.

Permalänk: https://www.webforum.nu/p/2232834

## #11 — colione, 2010-04-10T18:36Z

Hur ser det ut om du kör en SHOW CREATE TABLE Kalender;

Permalänk: https://www.webforum.nu/p/2232835

## #12 — TomasA, 2010-04-10T21:31Z

Sry? Vad betyder det?

Permalänk: https://www.webforum.nu/p/2232847

## #13 — nitro2k01, 2010-04-10T21:34Z

Kör SQL-frågan **SHOW CREATE TABLE Kalender;** i phpMyAdmin och kopiera svaret hit. Den SQL-frågan visar information angående tabellen **Kalender** som kan vara användbara.

Permalänk: https://www.webforum.nu/p/2232849

## #14 — TomasA, 2010-04-10T21:53Z

Svar: Din SQL-fråga utfördes korrekt.

\+Alternativ
kalender CREATE TABLE \`kalender\` (
 \`kalendid\` int(6) unsi... 

??

Permalänk: https://www.webforum.nu/p/2232853

## #15 — nitro2k01, 2010-04-10T22:01Z

Du måste få ut hela texten, det där är bara början. Ser du möjligen ett T med två pilar på sidorna? Isåfall, klicka på den.

Permalänk: https://www.webforum.nu/p/2232854

## #16 — TomasA, 2010-04-11T14:19Z

Hej igen
Då fick jag ut tabellstrukturen enl nedan:
kalender CREATE TABLE \`kalender\` (
 \`kalendid\` int(6) unsigned NOT NULL AUTO_INCREMENT,
 \`event\` varchar(60) NOT NULL,
 \`var\` varchar(60) NOT NULL,
 \`om\` longtext,
 \`eventdag\` varchar(40) NOT NULL,
 \`datum\` date NOT NULL,
 \`dag\` datetime DEFAULT NULL,
 \`tid\` varchar(5) DEFAULT NULL,
 \`adminid\` int(6) DEFAULT NULL,
 \`bild1\` varchar(40) DEFAULT NULL,
 \`bild1ext\` varchar(20) DEFAULT NULL,
 \`bildtext1\` varchar(100) DEFAULT NULL,
 \`bild2\` varchar(40) DEFAULT NULL,
 \`bild2ext\` varchar(20) DEFAULT NULL,
 \`bildtext2\` varchar(100) DEFAULT NULL,
 PRIMARY KEY (\`kalendid\`)
) ENGINE=MyISAM AUTO_INCREMENT=29 DEFAULT CHARSET=latin1 

OK, eller?   :q

Permalänk: https://www.webforum.nu/p/2232879

## #17 — colione, 2010-04-11T17:54Z

Hur ser posten du tappar ut då?

Permalänk: https://www.webforum.nu/p/2232889

## #18 — nitro2k01, 2010-04-11T18:15Z

Tomas, det här kanske är en dum fråga, men... Har du möjligen en **for**\-loop där du sätter **$i=1** fast du borde sätta **$i=0**
Eller kan det vara så att du kör hämtar ut data med **while($row = mysql_fetch_assoc($result))** fast du kör **mysql_fetch_assoc($result)** en gång innan loopen startar så att du missar en post på det viset?

Permalänk: https://www.webforum.nu/p/2232890

## #19 — TomasA, 2010-04-11T18:51Z

Nej ingen dum fråga. Det är jag som försöker lära mig.
Min kod ser ut så här:

 **$i = 0;
 while ($myrow = mysql_fetch_array($result) AND $i \<= 4)**

Och vad är skillnaden mellan **assoc** och **array**?
Men det förändrar inte resultatet om jag ändrar till **assoc**.

Permalänk: https://www.webforum.nu/p/2232891

## #20 — TomasA, 2010-04-11T19:00Z

Hej nitro2k01!

Jag hittade det Du pekade på, nämligen en **FOR-**loop som inte skulle vara med. 
Fast det visste jag inte, men Din fråga gjorde att jag kontrollerade och testade och **pang på - där satt den!**

Jättestort tack för Din hjälp! 
Kanon!

Permalänk: https://www.webforum.nu/p/2232892

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/183129-tappar-en-post  
Nästa sida: https://www.webforum.nu/amne/databaser-sql/183129-tappar-en-post/page2.md
