Avatar billede pepsiman Juniormester
10. maj 2009 - 09:01 Der er 27 kommentarer og
1 løsning

Hvordan laver start_dato og slut_dato?

Hej.

Jeg vil hører om hvordan laver start_dato og slut_dato?
det bruger til arrangement.

tak
Avatar billede showsource Seniormester
10. maj 2009 - 10:11 #1
Typisk gemmer man dato m.m. i db, f.eks. Mysql
Her har man så to DATETIME felter, hvor tiden kan gemmes i.

F.eks. har du så dropdowns med dato, måned, og år samt timer/min.
Hvis det er andre end dig selv som skal gemme, kan du bruge chekdate() til at sikre et er en gyldig dato.

Og så gemmer du datoen i stil med:
2009-05-28 14:00:00
År, måned, dag, time, min. sek.

Du kan altid senere formatere datoen til dansk "look", men det er altid bedst at bruge sql'ens datofelt, fremfor f.eks. 28/5 09 14.00
Avatar billede pepsiman Juniormester
10. maj 2009 - 10:36 #2
ok.

jeg har glemte at skrive om tilmeld skal med.
hvis det nåer til slut dato. det vil deaktivere tilmeld, man klik på.

det kan være enter arr. er lukket for tilmeld på slut dato eller det er ikke mere plads til tilmelder..f.eks max 80 person.
Avatar billede webweaver Praktikant
10. maj 2009 - 11:04 #3
<?

$datoToday = date(Y-m-d H:i:s);
$eventName = "Linie 3";

$query = mysql_query("SELECT * FROM myTable WHERE eventName = '$eventName' AND WHERE slut_dato = '$datoToday'") or die (mysql_error));
$check = mysql_num_rows($query);

If ($check) {

echo "Inaktiv";

} else {

echo "Aktiv";

}

?>

Lige hurtigt fikset.
Ligeledes med antal personer, kan det laves på samme måde. Husk at connecte til databasen.
Avatar billede pepsiman Juniormester
10. maj 2009 - 11:12 #4
hej web.
Det ser god ud og jeg kan bruger det..

svar
Avatar billede webweaver Praktikant
10. maj 2009 - 11:25 #5
Det var godt :)
Avatar billede showsource Seniormester
10. maj 2009 - 11:29 #6
Det var godt nok lidt hurtigt fikset :O)
2 WHERE duer ikke
Og
slut_dato = '$datoToday'
duer heller ikke :O)
Avatar billede webweaver Praktikant
10. maj 2009 - 12:42 #7
Hov, det gik for hurtigt. 1 WHERE :)

$query = mysql_query("SELECT * FROM myTable WHERE eventName = '$eventName' AND slut_dato = '$datoToday'") or die (mysql_error));

Hvorfor vil slut-dato ikke matche? :)
Det er klart at det kræver at han har det i det format.
Avatar billede jakobdo Ekspert
10. maj 2009 - 12:57 #8
Hvad med en sql ala:

SELECT *,if(slut_dato > now(),'aktiv','inaktiv') AS status FROM myTable WHERE eventName = '$eventName'
Avatar billede showsource Seniormester
10. maj 2009 - 13:02 #9
Det vil jo kun hente de rows hvor slut_dato er lig med ligenu.

Hvis vi går ud fra at det er et datetime felt, og der kun er et row for hvert arrangement:
SELECT FROM myTable WHERE slut_dato < NOW()
Så finder den de arrangementer som endnu ikke er afsluttet.

Og jeg ville nok fordele det over flere tabeller,

arrangementtype:
id, navn ( f.eks. Linie 3, er ikke et "engangs" foretagende )

arrangement:
id, start_dato, slut_dato, hvad ( hvor "hvad" er id fra "arrangementtype" )

tilmeldte:
id, idref, brugerid ( idref er id for "arrangement", og "brugerid" er id fra tabel "brugere" )

brugere:
id, navn, tlf m.m.


Men det kommer jo også helt an på hvad planen er for pepsiman
Avatar billede showsource Seniormester
10. maj 2009 - 13:03 #10
Og hov, slut_dato > NOW()  :O)
Avatar billede webweaver Praktikant
10. maj 2009 - 13:43 #11
Nu hvor jeg lige kigger en ekstra gang på det jeg lavede, så er det naturligvis klart at $datoToday = date(Y-m-d H:i:s);
ikke vil fungere. Eller jo, men kun lige på sekundet.
H:i:S, skulle fjernes ihvertfald. Der er det noget nemmere med NOW(), hvis det alligevel er datetime :-)
Avatar billede pepsiman Juniormester
10. maj 2009 - 18:58 #12
alle herind har ret med NOW()...:)

Men jeg kan ikke finde ude af det med if(!$check)....

Kan en af jer ændrer lidt kode derned?.

jeg ønsker at tilmeld,hvor man klik på. hvis slut dato vil udskifter ud med tilmeld er lukket på hver arrangement

Sidste frist tilmeld: <?=$rows['slut_dato']?> <a href="tilmeld.php?id=<?=$rows['id']?>">Tilmelder</a>

skifter til tilmeld er lukket,hvis slut dato..

-----------

test siden her:



$query = "SELECT * FROM arr WHERE slut_dato > NOW()";
$check = mysql_query($query);

if(!$check) {

    echo "<p class='green'>Tilmeld</p>";
}else{

    echo "<p class='red'>arr. er lukket</p>";

}

mysql_close();
?>
<form id="form1" name="form1" method="post" action="">
  <table width="500" border="0" cellspacing="0">
   
    <?php
    while($rows=mysql_fetch_array($check)) {
    ?>
    <TR><TD><HR></TD></TR>
    <tr>
          <td><?=$rows['arr_navn']?> - <?=$rows['start_dato']?></td>
        </tr>
        <tr>
          <td valign="top"><?=$rows['text']?></td>
        </tr>
        <tr>
          <td>Sidste frist tilmeld: <?=$rows['slut_dato']?> <a href="tilmeld.php?id=<?=$rows['id']?>">Tilmelder</a></td>
        </tr>
<?
}
?>
  </table>
 
</form>
Avatar billede pepsiman Juniormester
10. maj 2009 - 19:33 #13
jeg har prøvet med det:

if(!$check) {
?>
<form id="form1" name="form1" method="post" action="">
  <table width="500" border="0" cellspacing="0">
   
    <?php
    while($rows=mysql_fetch_array($check)) {
    ?>
    <TR><TD><HR></TD></TR>
    <tr>
          <td><?=$rows['arr_navn']?> - <?=$rows['start_dato']?></td>
        </tr>
        <tr>
          <td valign="top"><?=$rows['text']?></td>
        </tr>
        <tr>
          <td>Sidste frist tilmeld: <?=$rows['slut_dato']?> <?php

    echo "<p class='green'><a href='tilmeld.php?=<?=$rows['id']?>'>Tilmeld</a></p>";
}else{

    echo "<p class='red'>Tilmeld er lukket</p>";
   

?></td>
        </tr>
<?
}
mysql_close();
?>
  </table>
 
</form>

det virker ikke.
Avatar billede webweaver Praktikant
10. maj 2009 - 19:35 #14
$query = "SELECT * FROM arr WHERE slut_dato > NOW()";
$query = mysql_query($query);
$check = mysql_num_rows($query);
Avatar billede pepsiman Juniormester
10. maj 2009 - 20:51 #15
jeg kigger på det i morgen
Avatar billede pepsiman Juniormester
11. maj 2009 - 07:13 #16
$query = "SELECT * FROM arr WHERE slut_dato > NOW()";
$query =mysql_query($query);
$check = mysql_num_rows($query);

if(!$check) {

?>
<form id="form1" name="form1" method="post" action="">
  <table width="500" border="0" cellspacing="0">
   
    <?php
    while($rows=mysql_fetch_array($check)) {
    ?>
    <TR><TD><HR></TD></TR>
    <tr>
          <td><?=$rows['arr_navn']?> - <?=$rows['start_dato']?></td>
        </tr>
        <tr>
          <td valign="top"><?=$rows['text']?></td>
        </tr>
        <tr>
          <td>Sidste frist tilmeld:<?=$rows['slut_dato']?> <? echo "<p class='green'><a href='tilmeld.php?id<?=$rows['id']?>'>Tilmeld</a></p>";
}else{

    echo "<p class='red'>arr. er lukket</p>";

}
?>
</td>
        </tr>

<?php }

mysql_close();
?>
  </table>
 
</form>

besked fejl:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/#.dk/public_html/#/a-test.php on line 48

line 48:
<?=$rows['slut_dato']?> <? echo "<p class='green'><a href='tilmeld.php?id<?=$rows['id']?>'>Tilmeld</a></p>";
Avatar billede pepsiman Juniormester
11. maj 2009 - 09:38 #17
web. du får alligevel point..


jeg har finde ude af det med line 48.. jeg ved ikke hvordan jeg skriver. hvordan kan jeg udtræk data fra databasen?

jeg har tit skrevet denne: ?id=<? echo $rows['id']; ?>,men det er en anden sag nu,da det ligger inde for if. Så.. jeg har prøvet med denne: ?id=.$rows[id].

Sidste frist tilmeld: <? echo $rows['slut_dato']; ?> <?php if(!check) {
         
          echo '<p class='green'><a href='tilmeld.php?id=.$rows['id'].'>tilmeld</a></p>';
          }else{
         
          echo '<p class='red'>Tilmeld er lukket</p>';
         
          }
Avatar billede showsource Seniormester
11. maj 2009 - 10:14 #18
$check er antal rows som hentes, så det skal være

while($rows=mysql_fetch_array($query)) {
Avatar billede pepsiman Juniormester
11. maj 2009 - 10:20 #19
Nå!.

jeg har lige testet det, det virker fint med NOW()...

Jeg mener ikke at arrangementet skal væk efter NOW(). Arrangement skal forbliver på siden til efter arrangemenet er overstået.

nu skal jeg forklarer det igen..

Når jeg arranger noget og giver dem sidste frist være med til arr. en uge før dato,hvor arrangementet skal står.

jeg ønsker at klik på tilmeld skifter til disable for enter alt er udsolget eller tid udløb for sidste frist. arrangement forbliver på siden for det kan sker for enhver at glemme hvornår og hvor :).. jeg bruger det til foreningen. ikke biografter eller teater,hvis i mener det :)
Avatar billede showsource Seniormester
11. maj 2009 - 10:43 #20
$query = "SELECT * FROM arr WHERE DATE_SUB(slut_dato, INTERVAL 1 WEEK) > NOW()";

Den henter rows, hvor slut_dato minus en uge er større end lige nu

UTESTET !
Avatar billede showsource Seniormester
11. maj 2009 - 10:47 #21
Avatar billede pepsiman Juniormester
11. maj 2009 - 10:53 #22
jeg mener at det skal bruger function, der tjekker for tid udløb eller alt er udsloget.

noget i stil:

if(klik)
{
echo "<a href="tilmeld.php?id=<? echo $ros[id]; ?>">tilmeld</a>"
}
elseif(klik_disable > NOW() // tiden udløb
{
echo "<a href="tilmeld.php" disable="disable">Lukket - tiden udløb</a>
}
elseif(klik_person) // MAX 80 person
{
echo "<a href="tilmeld.php?id=<? echo $ros[id]; ?>">tilmeld</a>"
}
elseif(alt_udsolget)
{
echo "Lukket - alt udsolget"
}
?>

jeg ved at det er ikke 100% rigtigt.

jeg håber i forstår mig
Avatar billede showsource Seniormester
11. maj 2009 - 11:00 #23
hmm, lad os sige du henter alle arrangementer.

$ligenu = date("Y-m-d H:i:s", strtotime("-1 WEEK"));


inde i din while

if($rows["slut_dato"] < $ligenu)
{
echo"SLUT";
}
else if ($rows["tilmeldte"] > 80)
{
echo"OPTAGET";
}
else
{
echo"Link til tilmelding";
}
Avatar billede pepsiman Juniormester
11. maj 2009 - 11:04 #24
jeg har testet #20. Arr. er alligevel væk..

jeg skrive slut dato: 2009-05-11 11:15

start_dato er varchar. kun slut_dato til datetime. jeg skal skifter til date senere,når her er færdig.
Avatar billede pepsiman Juniormester
11. maj 2009 - 11:06 #25
nu tester jeg #23
Avatar billede pepsiman Juniormester
11. maj 2009 - 11:27 #26
ok

jeg ved ikke hvor jeg skal ligger dit kode ind efter while..
har testet det. kun id 1 har SLUT..selvom tiden udløb først 22 maj ^^

$query = "SELECT * FROM arr ORDER BY id DESC";
$result=mysql_query($query);


$ligenu = date("Y-m-d H:i:s", strtotime("-1 WEEK"));

?>
<form id="form1" name="form1" method="post" action="">
  <table width="500" border="0" cellspacing="0">
   
    <?php
    while($rows=mysql_fetch_array($result)) {
    ?>
    <tr><td colspan="2"><hr></td></tr>
    <tr>
          <td colspan="2"><?=$rows['arr_navn']?> - <?=$rows['start_dato']?></td>
        </tr>
        <tr>
          <td colspan="2" valign="top"><? echo nl2br($rows['text']); ?></td>
        </tr>
        <tr>
          <td>Sidste frist tilmeld: <? echo $rows['slut_dato']; ?>
<?php if($rows["slut_dato"] < $ligenu)
{
echo"<p class='red'>SLUT</p>";
}
else if ($rows["tilmeldte"] > 80)
{
echo"<p class=''red'>OPTAGET</p>";
}
else
{
echo "<a href='tilmeld.pgp'>tilmeld</a>";
}
?>
</td>
          <td><a href="test.php">test</a></td>
        </tr>

<?php }

mysql_close();
?>
  </table>
 
</form>
Avatar billede pepsiman Juniormester
11. maj 2009 - 11:50 #27
Nu virker det!!

jeg har ændret $ligenu = date("Y-m-d H:i:s", strtotime("-1 WEEK")); til $ligenu = date("Y-m-d");

tak for hjælpen!
Avatar billede pepsiman Juniormester
11. maj 2009 - 11:53 #28
svar?  show
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