Ik heb een database met berichten en wil nu graag ook op maand en jaartal kunnen selecteren.
Dit heb ik al geprobeerd maar is niet juist:
<?php
// dit voor ook op jaar te selecteren
$strSQL = "SELECT * FROM tabel WHERE Date LIKE '%-08-2006%'";
?>
Dit werkt wel maar dan selecteer je alleen op de maand:
<?php
// geeft alles van september
$strSQL ="SELECT * FROM tabel WHERE Date LIKE '%-09-%' ORDER BY Date ASC";
?>
Wat voor type is je Date-veld? Als het een DATE of DATETIME is, is het simpel:
SELECT *
FROM tabel
WHERE MONTH(Date) = 9
AND YEAR(Date) = 2006;
Als het "gewoon" een string is, wat is het formaat? Wordt ook het tijdstip opgeslagen? Je zou nog kunnen overwegen er een DATE of DATETIME van te maken.
Helaas voor deze oplossing:
<?php
$Date =""
$Date = date("d-m-Y (G:i)");
$strSQL ="SELECT * FROM tabel WHERE datum LIKE '2006-09-%'";
?>
ik heb ook dit geprobeerd:
<?php
$strSQL ="SELECT * FROM tabel WHERE datum LIKE '%-09-2006'";
?>
krijg ik dit:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /www/sandokanshome/html/dagboek.php on line 293
regel 293 is dit:
<?php
// Nu loop door de database heen
for($a=0; $a < mysql_num_rows($Result);$a++)
{
$Row = mysql_fetch_array($Result);
$Row['Bericht'] = eregi_replace("\n", "<br>", $Row['Bericht']);
?>
de rest van de output......
Voor dit deze casus kan ik verklappen dat dit een reeds bestaande tabel is van een vriendin en kan ik (denk ik) niet maar zo veranderen of wel?
Nope is niet zo handig.
Al het veld een varchar is en alle data staan er in als:
dag-maand-jaar en ja maakt van het veld date(time) dan klopt er van de data nix meer.
je zou wel iets kunnnen doen als:
Aan de bestaande tabel met bijv PHPmyadmin een kolom toevoegen DATUM_GOED oid.
Ni kun je een php scriptje schrijven.
<?php
$sql="SELECT date FROM tabel";
$res=mysql_query($sql)or die(mysql_error());
while($datum=mysql_fetch_array($res)){
$jaar=substr($datum['date'],7,4);
$maand=substr($datum['date'],4,2);
$dag=substr($datum['date'],0,2);
$datumgoed=$jaar."-".$maand."-".$dag;
mysql_query("UPDATE tabel SET DATUM_GOED= '".$datumgoed."' WHERE id = '".$datum['id']."'";)
}
?>
zoiets. Waarschijnlijk kan het ook wel met alleen sql met een do loopje maar dat kan ik niet.
Klaasjan
Die mysql_num_rows()-melding geeft aan dat er een fout zit in je SQL-query. Ik zie dat je het Date-veld nu datum hebt genoemd; heb je dat ook in de database veranderd?
Edit: hou er rekening mee dat de datum wordt ingevoerd als date("d-m-Y (G:i)") en je dus het formaat dd-mm-yyyy hebt. Je moet dan dus selecteren op %-09-2006 ipv op 2006-09-%
Helaas voor deze oplossing:
<?php
$Date =""
$Date = date("d-m-Y (G:i)");
$strSQL ="SELECT * FROM tabel WHERE datum LIKE '2006-09-%'";
?>
ik heb ook dit geprobeerd:
<?php
$strSQL ="SELECT * FROM tabel WHERE datum LIKE '%-09-2006'";
?>
krijg ik dit:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /www/sandokanshome/html/dagboek.php on line 293
regel 293 is dit:
<?php
// Nu loop door de database heen
for($a=0; $a < mysql_num_rows($Result);$a++)
{
$Row = mysql_fetch_array($Result);
$Row['Bericht'] = eregi_replace("\n", "<br>", $Row['Bericht']);
?>
de rest van de output......
edit : aanvulling
Heb je ook ergens staan
$Result=mysq_query($strSQL) or die mysql_error());