Maand + Jaartal selecteren
Dit heb ik al geprobeerd maar is niet juist:
Code (php)
1
2
3
4
2
3
4
<?php
// dit voor ook op jaar te selecteren
$strSQL = "SELECT * FROM tabel WHERE Date LIKE '%-08-2006%'";
?>
// 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:
Code (php)
1
2
3
4
2
3
4
<?php
// geeft alles van september
$strSQL ="SELECT * FROM tabel WHERE Date LIKE '%-09-%' ORDER BY Date ASC";
?>
// geeft alles van september
$strSQL ="SELECT * FROM tabel WHERE Date LIKE '%-09-%' ORDER BY Date ASC";
?>
Wat moet ik veranderen?
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.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
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 ;-)
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?
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$Date =""
$Date = date("d-m-Y (G:i)");
$strSQL ="SELECT * FROM tabel WHERE datum LIKE '2006-09-%'";
?>
$Date =""
$Date = date("d-m-Y (G:i)");
$strSQL ="SELECT * FROM tabel WHERE datum LIKE '2006-09-%'";
?>
ik heb ook dit geprobeerd:
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:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?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']);
?>
// 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
Gewijzigd op 01/01/1970 01:00:00 door Lissy Pixel
Quote:
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.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?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']."'";)
}
?>
$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.
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
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-%
Gewijzigd op 01/01/1970 01:00:00 door Willem vp
@ Lissy: in wat voor veldtype is de datum eigenlijk opgeslagen? En is het formaat dd-mm-yyyy?
lissy:
Helaas voor deze oplossing:
ik heb ook dit geprobeerd:
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:
de rest van de output......
edit : aanvulling
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$Date =""
$Date = date("d-m-Y (G:i)");
$strSQL ="SELECT * FROM tabel WHERE datum LIKE '2006-09-%'";
?>
$Date =""
$Date = date("d-m-Y (G:i)");
$strSQL ="SELECT * FROM tabel WHERE datum LIKE '2006-09-%'";
?>
ik heb ook dit geprobeerd:
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:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?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']);
?>
// 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?
@ Willem_vp : Ja joh inderdaad de date moest zijn datum en dat veranderd dan geen foutmelding meer. Nu krijg ik alleen te zien dat er nog geen berichten zijn en dat is niet waar want er staat al wel wat aan data in voor de maand 09.
Als je veld een varchar was met als format dd-mm-yyyy, dan kun je in 1 keer je hele tabel opruimen. Maak een nieuw veld aan dat datum_goed heet. Het oude veld noem je datum_oud (of je past de naam in mijn voorbeeldquery aan):
Code (php)
1
2
3
2
3
UPDATE tabel
SET
datum_goed = CONCAT(SUBSTRING(datum_fout, 7, 4), '-', SUBSTRING(datum_fout, 4, 2), '-', SUBSTRING(datum_fout, 1, 2))
SET
datum_goed = CONCAT(SUBSTRING(datum_fout, 7, 4), '-', SUBSTRING(datum_fout, 4, 2), '-', SUBSTRING(datum_fout, 1, 2))
Edit:
het nieuwe veld moet natuurlijk van het type DATE zijn ;-)
het nieuwe veld moet natuurlijk van het type DATE zijn ;-)
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
lissy:
Die gaat niet werken, omdat de datum eruit ziet als "03-09-2006 (9:15)".WHERE datum LIKE '%-09-2006%'
zou dus wel moeten werken. Ik heb dit zojuist op mijn eigen servers (MySQL 3.23.53 en 5.0.24) geprobeerd, en hier werkte het. Met je oorspronkelijke query lijkt dus niets mis te zijn.
@ Klaasjan : de fout heb ik al opgelost (zie hierboven) :)
Ja, met dingen als 02-9-2006 wordt het lastig voor MySQL ;-)
en de tijd ben je dan wel kwijt BTW
BEDANKT voor zover en ik ga nog aan de slag met de aanpassingen :)
@ Willem_vp : ik heb het draaien en vraag me niet waarom het nu wel draait....zal wel de vroege zondagmorgen zijn !!
In iedergeval zoals hierboven staat wederom veel geleerd en zal voor de toekomst een andere oplossing doen !!
Gewijzigd op 01/01/1970 01:00:00 door Lissy Pixel