dahlgrenMedlem sedan aug. 20011 946 inlägg Jag har skapat en sida som vissar nyheter. Nu vill jag att de bara ska visas mellan vissa datum. Datumen finns att tillgå genom $r['start'] och $r['slut']. Hur ska jag göra för att nyheten bara visas när det är ok med datumen?
<?PHP
$objConn = mysql_connect ('localhost', 'root', '');
mysql_select_db('test');
$strQuery = mysql_query("
SELECT * FROM nyhet
ORDER BY position ASC
") or exit(mysql_error());
while ($r = mysql_fetch_array($strQuery))
{
echo "<b>",$r['rubrik'],"</b><br/>", $r['text'] . "<br/><hr/>";
}
mysql_close($objConn);
?>
K@llenMedlem sedan mars 20032 667 inlägg Lite kod du får justera:
$strQuery = mysql_query("SELECT * FROM nyhet
WHERE datumField BETWEEN $datum1 AND $datum2
ORDER BY position ASC")
dahlgrenMedlem sedan aug. 20011 946 inlägg Förstår inte riktigt hur det ska fungera datumen ligger i 2 fält vilka jag antar ska stå istället för $datum1 och $datum2. Men vad ska jag ersätta datumField med?
K@llenMedlem sedan mars 20032 667 inlägg
dahlgren skrev:
Men vad ska jag ersätta datumField med?
Jag fattade som så att du hade en datumkolumn att jämföra med. Nu i efterhand ser jag att det inte var så självklart. Vad är det du vill jämföra med? Är det kanske dagens datum som ska ligga mellan dina andra två datum?
dahlgrenMedlem sedan aug. 20011 946 inlägg Precis det är dagens datum jag vill jämföra mot.
K@llenMedlem sedan mars 20032 667 inlägg Du borde kunna skriva så här under förutsättning att dina datumvärden är utformade på följande vis: YYYY-MM-DD eller YYYYMMDD.
$strQuery = mysql_query("SELECT * FROM nyhet
WHERE CURDATE() BETWEEN $datum1 AND $datum2
ORDER BY position ASC")
dahlgrenMedlem sedan aug. 20011 946 inlägg Det är rätt format på dumen så det borde funka men ger ändå följande felmeddelande.
Parse error: parse error, unexpected '"' in C:\Server root\int\index.php on line 7
Rad 7 innehåller:
") or exit(mysql_error());
K@llenMedlem sedan mars 20032 667 inlägg Hur ser hela koden ut?
Vad skrivs ut om du skriver ut sql-strängen?
SteadyMedlem sedan dec. 2004225 inlägg Visa kod, ser ut som du skrivit fel någonstans.
Parse error får man när man missat en ; eller dyl.
dahlgrenMedlem sedan aug. 20011 946 inlägg Hela koden
<?PHP
$objConn = mysql_connect ('localhost', 'root', '');
mysql_select_db('test');
$strQuery = mysql_query("SELECT * FROM nyhet
WHERE CURDATE() BETWEEN $start AND $slut
ORDER BY position ASC")
") or exit(mysql_error());
while ($r = mysql_fetch_array($strQuery))
{
echo "<b>",$r['rubrik'],"</b><br/>", $r['text'] . "<br/><hr/>";
}
mysql_close($objConn);
?>
Är helt ny på php så jag lyckkas inte riktigt skriva ut sql-satsen. Hur gör man det?
K@llenMedlem sedan mars 20032 667 inlägg Du hade en ") förmycket. Testa detta:
<?PHP
$objConn = mysql_connect ('localhost', 'root', '');
mysql_select_db('test');
$strQuery = mysql_query("SELECT * FROM nyhet
WHERE CURDATE() BETWEEN " . $start . " AND " . $slut . "
ORDER BY position ASC") or exit(mysql_error());
while ($r = mysql_fetch_array($strQuery))
{
echo "<b>",$r['rubrik'],"</b><br/>", $r['text'] . "<br/><hr/>";
}
mysql_close($objConn);
?>
SteadyMedlem sedan dec. 2004225 inlägg :)
<?PHP
$objConn = mysql_connect ('localhost', 'root', '');
mysql_select_db('test');
$strQuery = mysql_query("SELECT * FROM nyhet
WHERE CURDATE() BETWEEN $start AND $slut
ORDER BY position ASC")
or exit(mysql_error());
while ($r = mysql_fetch_array($strQuery))
{
echo "<b>",$r['rubrik'],"</b><br/>", $r['text'] . "<br/><hr/>";
}
mysql_close($objConn);
?>
dahlgrenMedlem sedan aug. 20011 946 inlägg Nu får jag istället att variablerna start och slut är odefinerade trots att de finns i databasen.
K@llenMedlem sedan mars 20032 667 inlägg Nu ser jag lite fler fel. Strängkonkatinering sker i PHP med punkt inte komma:
<?PHP
$objConn = mysql_connect ('localhost', 'root', '');
mysql_select_db('test');
$strQuery = mysql_query("SELECT * FROM nyhet
WHERE CURDATE() BETWEEN " . $start . " AND " . $slut . "
ORDER BY position ASC") or exit(mysql_error());
while ($r = mysql_fetch_array($strQuery))
{
echo "<b>" . $r['rubrik'] . "</b><br/>" . $r['text'] . "<br/><hr/>";
}
mysql_close($objConn);
?>
@ndersMedlem sedan juni 200032 969 inlägg Fråga från en lekman: Bör man inte ha apostrofer runt datumvärden i sin SQL-fråga? :)
dahlgrenMedlem sedan aug. 20011 946 inlägg Det ger fortfarande samma felmeddelande.
Notice: Undefined variable: start in C:\Server root\int\index.php on line 5
Notice: Undefined variable: slut in C:\Server root\int\index.php on line 5
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 'AND ORDER BY position
Databasen innehåller förjande
id rubrik text position start slut
2 Min rubrik 1 Testar ltie 5 2004-12-27 2005-01-01
3 Min rubrik 3 2004-12-27 2005-01-01
4 Test $start =$\_POST\['start_ar'\] . $\_POST\['start_manad'\]... 2 2008-03-08 2006-05-06
5 Dagens Nu borde det mesta funka. 1 2004-12-26 2005-02-05
@ndersMedlem sedan juni 200032 969 inlägg Aha, det är fältnamnen, inga variabler. I så fall, byt:
WHERE CURDATE() BETWEEN " . $start . " AND " . $slut . "
mot:
WHERE CURDATE() BETWEEN start AND slut
mvh
K@llenMedlem sedan mars 20032 667 inlägg
@nders skrev:
Fråga från en lekman: Bör man inte ha apostrofer runt datumvärden i sin SQL-fråga? :)
Så rätt, så rätt, miss av mig. Man ska aldrig göra många sysslor samtidigt. :)
dahlgrenMedlem sedan aug. 20011 946 inlägg Tack för all hjälp nu funkar det som jag vill.
SnakesMedlem sedan okt. 2004392 inlägg Kan du vara snäll och markera tråden som löst.
Tryck på "Accepetera som slutgiltligt svar", som ligger i nedre högra hörnan av varje inlägg.