Just nu i M3-nätverket
Jump to content

Hämta senaste post fungerar inte alltid


kungmats
 Share

Recommended Posts

Hej

Jag har en funktion som hämtar kundens senaste order och utifrån detta visar nästa leveransdatum. Problemet är att  någon enstaka gång (typ 1 på 200) hämtas inte den senaste posten utan någon tidigare order (oftast näst sista) från samma kund och då blir allt fel ...

Jag kan inte begripa hur detta kan uppstå. Jag har felsökt i månader nu men kan inte hitta felet. Koden är allt för komplex för att lägga ut allt här men det är i den här frågan det skiter sig. 

Det är inget fel på min db-uppkoppling. Allt annat fungerar som det ska.

 

Finns det något annat, bättre sätt jag kan skriva min sql-fråga för att vara helt 100 på att jag får den senaste ordern?

$k = $kundnummer;

$sql = " SELECT * FROM order WHERE kundid=? ORDER BY id DESC LIMIT 1 ";   
$stmt = $db->prepare($sql);                    
$stmt->execute(array("$k"));                  
while($c = $stmt->fetch())                 
{  
	echo $c['leveransdatum'];
}

 

Link to comment
Share on other sites

Vad är id du sorterar på? Ett löpnummer? Är det garanterat att öka för varje insert? Om du tar bort en post, finns det en risk att nästa insert "tar över" det gamla id?

 

Spontant skulle jag föreslå att du lägger till en kolumn med datum och tid när insert gjordes och hämtar senaste på den och se om det löser problemet.

Link to comment
Share on other sites

Ja, id är unikt och ökas hela tiden.

Att lägga till en kolumn för när den skapades fungerar inte ftersom jag redan har 70000 poster som måste ingå. Alla med sitt unika id.

 

Däremot har jag ju redan leveransdatum som jag kan använda men min frågeställning blir ju detsamma. Det ska ju fungera med id. Nånstans tänker jag fel eller så är det databasen som spökar.

image.png.22cd67ff24abcc6d029d2c8d183019eb.png

id.JPG

Edited by kungmats
Link to comment
Share on other sites

Undrar om det är så enkelt att databasen väljer att använda något slags index på id och det är inte helt uppdaterat alla gånger. Vad händer om du väntar en stund och kör frågan? Fungerar det då?

 

Kanske så enkelt att du kör din hämtning alldeles för snabbt efter att insert gjorts?

Link to comment
Share on other sites

Problemet är att jag aldrig får fram felet själv. Det händer bara när kunderna går in via sin egen länk. Om jag använder kundens identiska länk händer det inte.

"Inserten" är oftast gjord fleraveckor innan och det är inte kunden som gjort det.

Jag har provat alla kunders länkar (där felet uppstått) i olika webbläsare och laddat om sidan många, många gånger men jag kan inte få fram felet.

Link to comment
Share on other sites

Då kanske det är så enkelt att det är cache i webbläsaren som ställer till det? Php bör skicka med headrar som skall förhindra att sidor cachas, men det är nog ingen garanti. Prova att lägga på headrar som berättar för webbläsaren och eventuella brandväggar och så att det inte ska cachas och se om det hjälper.

 

Exempel finns här.

https://stackoverflow.com/questions/13640109/how-to-prevent-browser-cache-for-php-site

Link to comment
Share on other sites

Tack, jag har lagt till det nu för att testa. Att sortera på leveransdatum hjälpte inte. Jag fick in ett fel direkt efter.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share



×
×
  • Create New...