Hur i ... kan 1 skrivas ut när inte resten gör det???
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?
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???
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>";
}