Hur i ... x( kan 1 skrivas ut när inte resten gör det??? :q
Tabellen ska innehålla en rad, och något måste den ju innehålla annars skulle inte 1:an heller skrivas ut! Så var är felet? :x
Inget verkar hämtas från databasen.
Att 1 skrivs ut är ju inte så konstigt, det har du ju gett med variabeln $pos = 1;
Förmodligen har du något fel vid din sql sats.
Förutsättningen för att while-satsen ska köras är att villkoret är uppfyllt. Eftersom villkoret är &&-at, måste båda villkoren vara uppfyllda. Om $q är tom så lämnar väl mysql_fetch_array($q) tillbaka FALSE? Det gör den ju i alla andra sammanhang när det inte finns mer att hämta. Menar du att den hanterar en tom mängd annorlunda??? :q
Dock har jag felsökt även på annat sätt och därför vet jag att tabellen innehåller en rad med följande info, (hämtad med mysql_fetch_array):
0 => Tester, 1 => 1, 2 => 2004-09-15, 3 => 10, 4 => <mitt ip>
Av detta borde (Tester, 10, 2004-09-15) komma ut med min SQL-fråga. Förutsatt att minst ett av de två tips jag fick i SQL-forumet om hur man jämför datum stämmer. Jag börjar tro att det är där skon klämmer... Eller kanske snarast i min tillämpning av tipsen. Dock förklarar det fortfarande inte hur jag hamnar i while-slingan om den inte hittar raden.... :(
Följande fungerar inte:
$fiveDaysAgo = date("Y-m-d", time() - 60 * 60 * 24 * 5);
$query = "SELECT * FROM tabell
WHERE A ='".$_SESSION["sessID"]."' AND
B=".$_POST["B"]." AND Datum < $fiveDaysAgo";
Men inte heller detta verkar funka...
$query = "SELECT * FROM FROM tabell
WHERE A ='".$_SESSION["sessID"]."' AND
B=".$_POST["B"]." AND Datum < DATE_SUB( CURDATE( ) , INTERVAL 5 DAY )";
En testkod som använder endera varianten och sedan:
$res = mysql_query($query) or die("main save: ".mysql_error());
while ($row = mysql_fetch_array($res, MYSQL_NUM)) {
foreach ($row as $ix => $val)
echo "$ix => $val, ";
echo "<BR>";
}