Avatar billede soundgarden Nybegynder
11. september 2005 - 20:26 Der er 10 kommentarer

indexer på dato i PHP

Hvordan vil man normalt indexer på dato i PHP?

Har ikke helt kunne få dette til at virke og er nu også blevet i tvivl om det er smart at gøre det sådan.
input:
<input name="index_dato" type="text" value="<?php echo date(d.m.Y); ?>
output:
$query_rsKalender = sprintf("SELECT * FROM kalender WHERE index_dato >= 'echo(d.m.Y)' ", $colname_rsKalender);
Avatar billede coderdk Praktikant
11. september 2005 - 20:27 #1
Hvis det er DATETIME i MySQL:

yyyy-mm-dd altså 2005-09-11 og det er så date('Y-m-d');
Avatar billede soundgarden Nybegynder
11. september 2005 - 20:33 #2
Ja jeg kender godt de forskellige måder at skrive år måned og dato på.
Men hvordan indexer man bedst på datoen?

et eksempel:
Jeg skal have vist indlæg i kalender dateret i dag og fremad, hvor imod jeg ikke vil have vist indlæg i kalender hvor datoen er passeret.
Avatar billede coderdk Praktikant
11. september 2005 - 20:50 #3
Indekser er noget helt andet. Men hvis du bruger DATETIME formatet så er det YYYY-MM-DD, og selv hvis det er et tekstfelt, vil du kunne sortere på det på den måde:

$sql = sprintf( "SELECT * FROM kalender WHERE index_dato >= '%s'", '2005-07-07' );
Avatar billede soundgarden Nybegynder
11. september 2005 - 21:13 #4
Så hvad skal der stå i:
<input name="index_dato" type="text" value="<?php echo date(d.m.Y); ?>?
Avatar billede soundgarden Nybegynder
11. september 2005 - 21:59 #5
Nu skriver jeg:
input:
<input name="dato" type="text" value="<?php echo date('Y-m-d'); ?>
og der gemmer den kun 2005 uanset om det er INT VARCHAR eller TEXT
Hvorfor det?
Avatar billede coderdk Praktikant
11. september 2005 - 22:38 #6
No clue. Du har ikke vist os hvordan du gemmer.
Avatar billede soundgarden Nybegynder
13. september 2005 - 12:26 #7
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;   
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO kalender (dato, txt) VALUES (%s, %s)",
                      GetSQLValueString($_POST['dato'], "int"),
                      GetSQLValueString($_POST['txt'], "text"));

  mysql_select_db($database_CMS, $CMS);
  $Result1 = mysql_query($insertSQL, $CMS) or die(mysql_error());

  $insertGoTo = "index.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}
?>
Avatar billede soundgarden Nybegynder
13. september 2005 - 13:10 #8
Okay har ordnet det ved at ændre:
GetSQLValueString($_POST['dato'], "int"),
til:
GetSQLValueString($_POST['dato'], "text"),
kommer tilbage med at få det udskrevet
Avatar billede soundgarden Nybegynder
13. september 2005 - 14:24 #9
Her er udtræk af hele komandoen og den virker stadig ikke, hvad kan du se hvad der er galt?
$colname_rsInfo = "2005-07-07";
if (isset($_GET['dato'])) {
  $colname_rsInfo = (get_magic_quotes_gpc()) ? $_GET['dato'] : addslashes($_GET['dato']);
}
mysql_select_db($database_CMS, $CMS);
$query_rsInfo = sprintf("SELECT * FROM kalender WHERE dato >= '%s' ", $colname_rsInfo);
$rsInfo = mysql_query($query_rsInfo, $CMS) or die(mysql_error());
$row_rsInfo = mysql_fetch_assoc($rsInfo);
$totalRows_rsInfo = mysql_num_rows($rsInfo);
Avatar billede soundgarden Nybegynder
13. september 2005 - 14:26 #10
tabellen hedder: kalender
der er kun 3 atributter: id - dato - txt
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester