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 moet ik veranderen?
@ Lissy: netter zou zijn:

SELECT veld1, veld2
FROM
tabel
WHERE YEAR(datum) = 2006
AND MONTH (datum) = 8

maar het kan ook op jouw manier:

SELECT * FROM tabel WHERE datum LIKE '2006-08-%'

In jouw voorbeeld gebruik je Date, maar die zou ik niet doen, want dat is een gereserveerd woord in MySQL.
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.
Grr... het lukt me echt nooit om Jan voor te zijn, geloof ik ;-)
Hahaha, maar we liggen wel erg op één lijn, Willem ;-)
Grinnnnnnnn..... jullie zijn beide lieverds die altijd klaar staan met een helpend antwoord.

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?
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

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

EDIT: Je query is mislukt.
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-%
@ Lissy: in wat voor veldtype is de datum eigenlijk opgeslagen? En is het formaat dd-mm-yyyy?
lissy schreef op 03.09.2006 11:33
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());

? ik neem aan van wel?

Reageren