Scoutnet vzw

We connect scouts!
Het is momenteel 17 Nov 2024 5:22

Alle tijden zijn UTC + 1 uur




Plaats een nieuw onderwerp Reageren op dit onderwerp  [ 3 berichten ] 
Auteur Bericht
BerichtGeplaatst: 29 Apr 2005 10:53 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 27 Sep 2004 23:00
Berichten: 661
Hello,

ik heb een veld in mijn tabel, datum, maar die is een gewone varchar ...

Nu wil ik ergens een lijst sorteren op die datum, maar dat lukt blijkbaar niet :s em neemt eerst alle 01 dagen, dan alle 01 maanden ...

Kan je (ik hoorde via CAST()) die datum omzetten in een "echte" datum in je sql statement en dan daarop sorteren ?

Ik heb al redelijk wat gezocht maar niets gevonden die werkte ..

Merci alvast ;)


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 29 Apr 2005 13:10 
Offline
Site Admin
Site Admin
Gebruikers-avatar

Geregistreerd: 17 Jul 2002 23:00
Berichten: 1522
Woonplaats: Wetteren
Ik denk dat je best de tabel eenmalig optimaliseert door de datum in een veld van het type "date" om te zetten. Ik heb even wat code voor je uitgeschreven; dit werkt bij mij:
Code:
<?php

  // veronderstelling: in de tabel $tabel zit een veld "datum" van het type
  // varchar en is opgebouwd als "DD-JJ-MMMM"
  // de tabel heeft een sleutelveld "id" om records uniek te kunnen identitificeren
  // doel: omzetten naar een veld "datum" van het type date en opgebouwd
  // als "JJJJ-MM-DD"
 
  // naam van de tabel opgeven
  $tabel = "nieuws";
 
  // nieuw veld "datum2" toevoegen aan tabel
  $sql = "ALTER TABLE $tabel ADD `datum2` DATE NOT NULL AFTER `datum`";
  $query = mysql_query($sql)or die(mysql_error());
 
  // gegevens van veld "datum" naar veld "datum2" kopiëren
  $select = "SELECT * FROM $tabel";
  $query = mysql_query($select)or die(mysql_error());
 
  while($list = mysql_fetch_object($query)){
    $datumrij = preg_split('//', $list->datum, -1, PREG_SPLIT_NO_EMPTY);
    $datumnieuw = $datumrij[6] . $datumrij[7] . $datumrij[8] . $datumrij[9] . "-" . $datumrij[3] . $datumrij[4] . "-" . $datumrij[0] . $datumrij[1];
   
    $update = "UPDATE $tabel SET datum2='$datumnieuw' WHERE id='$list->id'";
    $querietje = mysql_query($update)or die(mysql_error());
    echo ("\n<br />record $list->id aangepast");
   
  }
 
  // oud veld "datum" mag nu verwijderd worden
  $sql = "ALTER TABLE $tabel DROP `datum`";
  $query = mysql_query($sql)or die(mysql_error());
 
  // nieuw veld "datum2" nog hernoemen naar "datum"
  $sql = "ALTER TABLE $tabel CHANGE `datum2` `datum` DATE NOT NULL";
  $query = mysql_query($sql)or die(mysql_error());
 
  // klaar!
  echo ("\n<br />\n<br />einde verwerking");

?>

Nadien kan je
Code:
  $datumrij = preg_split('//', $list->datum, -1, PREG_SPLIT_NO_EMPTY);

ook gebruiken om je datum opnieuw uit te spitten in bijvoorbeeld DD-MM-JJJJ. Vanaf nu kan je
Code:
  $select = "SELECT * FROM $tabel ORDER BY datum DESC";
  $query = mysql_query($select)or die(mysql_error());

gebruiken om alles volgens datum uitgesorteerd te laten weergeven.

Fun ermee!

To


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 29 Apr 2005 13:12 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 24 Sep 2002 23:00
Berichten: 91
Kun je ze ook nie omzetten, een keer dit scriptje oproepen en voila?
Code:
include ('db.php');
$sql    = "SELECT * FROM `table`";
$result = $db->query($sql);
if (DB::isError($result)){
      die ($result->getMessage());
}
while ($row  = $result->fetchRow(DB_FETCHMODE_ASSOC)){
   $dag     = substr($row['datum'],0,2);
   $maand   = substr($row['datum'],3,2);
   $jaar    = substr($row['datum'],5,4);
   $sql     = "UPDATE `talbe` SET `datum` = '".$jaar."-".$maand."-".$dag."' WHERE `ID` = '".$row['ID']."' LIMIT 1";
   $result2 = $db->query($sql);
   if (DB::isError($result2)){
      die ($result2->getMessage());
   }
}


grtz


Omhoog
 Profiel  
 
Berichten weergeven van de afgelopen:  Sorteer op  
Plaats een nieuw onderwerp Reageren op dit onderwerp  [ 3 berichten ] 

Alle tijden zijn UTC + 1 uur


Wie is er online?

Gebruikers in dit forum: Majestic-12 [Bot] en 5 gasten


U mag geen nieuwe onderwerpen plaatsen in dit forum
U mag geen reacties plaatsen op onderwerpen in dit forum
U mag uw berichten niet wijzigen in dit forum
U mag uw berichten niet verwijderen in dit forum
U mag geen bijlagen plaatsen in dit forum

Zoeken naar:
Ga naar:  
cron
Powered by phpBB® Forum Software © phpBB Group
Vertaald door phpBBservice.nl.