login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Dag toevoegen bij weergave van een datum uit een database. (Opgelost)

Offline Kosmoseistis - 12/01/2011 11:01 (laatste wijziging 12/01/2011 11:02)
Avatar van KosmoseistisLid Hallo,

Ik ben op zoek naar de beste oplossing om de weergave van datums die werden opgevraagd uit een database weer te geven met een dag vermeld voor de datum.

Ben nieuw in 'php' en 'mysql', maar momenteel lukt alles met onderstaande code:

1) Code voor ophalen van alle data en het in een array verkijgen.

public function getOptredenLijst()
{
$lijst = array();
$sql = "select * from tbloptredens where optredendatum between CURRENT_DATE and '2018-12-12' order by optredendatum";
$dbh = new PDO($this->dbConn, $this->dbUsername, $this->dbPassword);
$resultSet = $dbh->query($sql);

foreach ($resultSet as $rij)
{
$optreden = new Optreden($rij["optredenID"], $rij["optredendatum"], $rij["optredenstad"], $rij["optredenzaal"], $rij["optredenuur"], $rij["optredenshow"], $rij["optredenwebsite"], $rij["optredentelefoon"], $rij["optredentickets"]);
array_push($lijst,$optreden);
}
$dbh = null;
return $lijst;
}


2) Code voor de opgehaalde date mooi weer te geven in een tabel:

<?php
$rr = new OptredenLijst;
$alles = $rr->getOptredenLijst();

foreach ($alles as $x)
{
echo("<tr><td>" . $x->optredenDatum . "</td><td>" . $x->optredenStad . "</td><td>" . $x->optredenZaal . "</td><td>" . $x->optredenUur . "</td><td>" . $x->optredenShow . "</td><td><a href='" . $x->optredenWebsite . "' target='_blank'>&nbsp;&nbsp;visit</a></td><td>" . $x->optredenTelefoon . "</td><td>" . $x->optredenTickets . "</td></tr>");
}

Welke code en waar voeg ik deze code het beste aan om mijn datums weeer te geven met een dag ervoor vermeld. vb. zat 11 jan 2011 of zat 11 01 2011?

Iemand kennis hierover?

Bedankt voor het lezen van mijn post 

16 antwoorden

Gesponsorde links
Offline Beirensg - 12/01/2011 11:16
Avatar van Beirensg HTML beginner met php en de functie date() lukt dit (toch in het engels)
  1. date("D d m Y",$var_date); //output bvb: Sat 03 10 2011


dit is enkel in het engels, maar moet simpel om te vormen zijn met een switch-instructie (Sat wordt Zat, Mon wordt Maa,...)

Meer info over date formats: http://php.net/manual/en/function.date.php
Offline rickvanhout - 12/01/2011 11:17
Avatar van rickvanhout Lid Selecteer je script even en klik dan op het 4e kopje in de opmaakbalk hierboven, klik dan op PHP...
Bedankt door: Kosmoseistis
Offline Kosmoseistis - 12/01/2011 11:25
Avatar van Kosmoseistis Lid
  1. <?php
  2. foreach ($alles as $x)
  3. {
  4. echo("<tr><td>" . date("D d m y", $x->optredenDatum) . "</td><td>" . $x->optredenStad . "</td><td>" . $x->optredenZaal . "</td><td>" . $x->optredenUur . "</td><td>" . $x->optredenShow . "</td><td><a href='" . $x->optredenWebsite . "' target='_blank'>&nbsp;&nbsp;visit</a></td><td>" . $x->optredenTelefoon . "</td><td>" . $x->optredenTickets . "</td></tr>");
  5. }
  6. ?>


Zoals je kan zien heb ik de code toegevoegd van Beirensg, maar dat geeft niet het gewenste resultaat: Alle datums krijgen dezelfde datum met dag: Thu 01 01 70.

Moet ik die code ergens anders toevoegen?
Moet de code vroeger worden toegevoegd?
  1. public function getOptredenLijst()
  2. {
  3. $lijst = array();
  4. $sql = "select * from tbloptredens where optredendatum between CURRENT_DATE and '2018-12-12' order by optredendatum";
  5. $dbh = new PDO($this->dbConn, $this->dbUsername, $this->dbPassword);
  6. $resultSet = $dbh->query($sql);
  7.  
  8. foreach ($resultSet as $rij)
  9. {
  10. $optreden = new Optreden($rij["optredenID"], $rij["optredendatum"], $rij["optredenstad"], $rij["optredenzaal"], $rij["optredenuur"], $rij["optredenshow"], $rij["optredenwebsite"], $rij["optredentelefoon"], $rij["optredentickets"]);
  11. array_push($lijst, $optreden);
  12. }
  13. $dbh = null;
  14. return $lijst;
  15. }


Alvast bedankt Rick om me wegwijs te maken in het correct weergeven van php-code 
Offline rickvanhout - 12/01/2011 11:43
Avatar van rickvanhout Lid als de datum $date heet:

  1. $date_year=substr($date,0,4);
  2. $date_month=substr($date,5,2);
  3. $date_day=substr($date,8,2);
  4. $date=date("D d m Y", mktime(0,0,0,$date_day,$date_month,$date_year));
  5. echo $date;
Bedankt door: Kosmoseistis
Offline Kosmoseistis - 12/01/2011 11:58 (laatste wijziging 12/01/2011 11:59)
Avatar van Kosmoseistis Lid Alweer bedankt voor je post rickvanhout,

Maar helaas krijg ik een foutmelding:

Warning: mktime() expects parameter 6 to be long, string given in C:\xampp\htdocs\dag05\optredenlijst.class.php on line 28

Heb de code eerst proberen toe te voegen in de code die de tabel weergeeft.
Resultaat: foutmelding zoals hierboven.
En vervolgens in de code die de informatie uit de database ophaalt en in een array/lijst stopt.
Maar ook hier zelfde foutmelding.

Sorry Rickvanhout, maar ik ben een groentje 
Ik probeer verder te zoeken en ga de link eens na ivm formats.

Alle hints zijn welkom.
  1. public function getOptredenLijst()
  2. {
  3. $lijst = array();
  4. $sql = "select * from tbloptredens where optredendatum between CURRENT_DATE and '2018-12-12' order by optredendatum";
  5. $dbh = new PDO($this->dbConn, $this->dbUsername, $this->dbPassword);
  6. $resultSet = $dbh->query($sql);
  7.  
  8. foreach ($resultSet as $rij)
  9. {
  10. $date_year=substr($optredenDatum,0,4);
  11. $date_month=substr($optredenDatum,5,2);
  12. $date_day=substr($optredenDatum,8,2);
  13. $optredenDatum=date("D d m Y", mktime(0,0,0,$date_day,$date_month,$date_year));
  14. $optreden = new Optreden($rij["optredenID"], $rij["optredendatum"], $rij["optredenstad"], $rij["optredenzaal"], $rij["optredenuur"], $rij["optredenshow"], $rij["optredenwebsite"], $rij["optredentelefoon"], $rij["optredentickets"]);
  15. array_push($lijst, $optreden);
  16. }
  17. $dbh = null;
  18. return $lijst;
  19. }
Offline rickvanhout - 12/01/2011 12:01
Avatar van rickvanhout Lid hoe is je output?
2018-12-12
12-12-2018
of zonder die streepjes?

graag de exacte output 
Bedankt door: Kosmoseistis
Offline Kosmoseistis - 12/01/2011 12:06
Avatar van Kosmoseistis Lid Mijn output, zonder toegevoegde code voor de dag, is: 2011-01-15.

Offline vinTage - 12/01/2011 12:21
Avatar van vinTage Nieuw lid
  1. //nederlandse tijd maken
  2. setlocale(LC_ALL, 'nl_NL');
  3. setlocale(LC_ALL, 'nld_nld');
  4. function nltijd($d)
  5. {
  6. return strftime( "%A %d %B %Y", strtotime($d));
  7. }
  8.  
  9. echo nltijd("2011-01-04");
Offline rickvanhout - 12/01/2011 12:22 (laatste wijziging 12/01/2011 12:23)
Avatar van rickvanhout Lid
  1. $date_year=substr($optredenDatum,0,4);
  2. $date_month=substr($optredenDatum,5,2);
  3. $date_day=substr($optredenDatum,8,2);
  4. $optredenDatum=date("d m Y", mktime(0,0,0,$date_day,$date_month,$date_year));
  5. echo date('D') .' '. $date_day .' '. $date_month .' '. $date_year;
Bedankt door: Kosmoseistis
Offline Kosmoseistis - 12/01/2011 13:02
Avatar van Kosmoseistis Lid Hmmm,

Lukt niet Rick, heb ook geprobeerd jouw code aan te passen, want de echo gebeurt samen met nog andere berichten. Doch code voor mij nog te moeilijk om te verstaan en/of aan te passen.

Momenteel heb ik reeds een aanpassing gedaan in de code zodat de datum wordt opgeroepen alvorens de echo-voor-aanmaak-tabel wordt gestart.
Kwestie van met één enkele variabele ($dagDatum) de juiste datum(met dag) kan worden weergegeven.
En dat op die variabele ik de format kan toepassen zodat hij van deze weergave: 2011-01-15 naar deze weergave kan gaan: sat 15-01-2011.

  1. <?php
  2. foreach ($alles as $x)
  3. {
  4. $dagDatum = $x->optredenDatum;
  5.  
  6. echo("<tr><td>" . $dagDatum . "</td><td>" . $x->optredenStad . "</td><td>" . $x->optredenZaal . "</td><td>" . $x->optredenUur . "</td><td>" . $x->optredenShow . "</td><td><a href='" . $x->optredenWebsite . "' target='_blank'>&nbsp;&nbsp;visit</a></td><td>" . $x->optredenTelefoon . "</td><td>" . $x->optredenTickets . "</td></tr>");
  7. }
  8. ?>


Met deze kleine verandering, worden de data nog steeds weergeven in de tabel (yyyy-mm-dd). En is is er in de code een nieuwe variabele $dagdatum waarop ik de format kan uitvoeren voor verandering van weergave (dag dd-mm-yyyy).

dichter bij de oplossing kom ik niet 

Offline vinTage - 12/01/2011 13:12
Avatar van vinTage Nieuw lid En wat is er dan mis met mijn voorbeeld? 
Bedankt door: Kosmoseistis
Offline rickvanhout - 12/01/2011 13:19
Avatar van rickvanhout Lid ik heb beide scripts van mij getest en ze werken!  
Bedankt door: Kosmoseistis
Offline vinTage - 12/01/2011 13:21
Avatar van vinTage Nieuw lid jouw vb is veel te omslachtig 
Bedankt door: Kosmoseistis
Offline Kosmoseistis - 12/01/2011 13:30
Avatar van Kosmoseistis Lid Euhm,

Is mij gelukt! 
Maar helaas niet met uw code RickVanHout. En dat zal wel volledig aan mijn gepruts liggen.
Dus toch bedankt voor de poging om te helpen.

@Vintage: uw code leek beter te passen in het stadium/de code waar ik nu reeds was.

Heb je functie bovenaan mijn pagina toegevoegd en dan in de echo-voor-de-aanmaak-tabel ze toegepast op mijn variabele


Dit gaf dit als resultaat en dat werkt perfect.
  1. <?php
  2. //code voor bovenaan in de header
  3. setlocale(LC_ALL, 'nl_NL');
  4. setlocale(LC_ALL, 'nld_nld');
  5. function nltijd($d)
  6. {
  7. return strftime( "%A %d %B %Y", strtotime($d));
  8. }
  9. ?>
  10. <?php
  11. //Code voor de aanmaak tabel en weergave van alle data met datumdag vermeld
  12. foreach ($alles as $x)
  13. {
  14. $dagDatum = $x->optredenDatum;
  15.  
  16. echo("<tr><td>" . nltijd($dagDatum) . "</td><td>" . $x->optredenStad . "</td><td>" . $x->optredenZaal . "</td><td>" . $x->optredenUur . "</td><td>" . $x->optredenShow . "</td><td><a href='" . $x->optredenWebsite . "' target='_blank'>&nbsp;&nbsp;visit</a></td><td>" . $x->optredenTelefoon . "</td><td>" . $x->optredenTickets . "</td></tr>");
  17. }
  18. ?>


Allebei dus hartelijk bedankt.

Nu nog op zoek hoe ik de dag en maand enkel weergeef met drie eerste letters 
Offline Beirensg - 13/01/2011 12:05
Avatar van Beirensg HTML beginner
  1. #
  2. function nltijd($d)
  3. #
  4. {
  5. #
  6. return strftime( "%a %d %b %Y", strtotime($d));
  7. #
  8. }


Dit zou ervoor moeten zorgen dat men dag en maand weergeeft door 3 letters. Let op het minieme verschil %a ipv %A (dagen) en %b ipv %B (maanden).
Bedankt door: Kosmoseistis
Offline Kosmoseistis - 13/01/2011 17:39
Avatar van Kosmoseistis Lid Thanks Beirensg! 
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.269s