Avatar billede cyberdude Nybegynder
09. november 2000 - 11:54 Der er 21 kommentarer og
1 løsning

tid + 30 min ??

Goddag!!

Jeg har denne form

--- cut ----
echo \"<Table><tr>\";

echo \"<FORM ACTION=\\\"send_ordre.php3\\\" name=\\\"bestilling\\\" METHOD=\\\"POST\\\" onsubmit=\\\"return check(document.bestilling)\\\">\";
echo \"<td width=\\\"200\\\">Navn: </td>\";
echo \"<td><INPUT TYPE=text NAME=navn size=30></td>\";
echo \"</tr><tr>\";
echo \"<td width=\\\"200\\\">Adresse:</td>\";
echo \"<td width=\\\"200\\\"><select name=\\\"vej\\\">\";
echo \"<option value=\\\"\\\">Find din gade!\";
$gade = mysql_query(\"select * from gade order by gade\");
while ($gade1=mysql_fetch_array($gade)) {
    $ress = htmlspecialchars(stripslashes($gade1[gade]));
echo \"<option value=\\\"$ress\\\">$ress\\n\";
}
echo \"</select></td>\";



echo \"</tr>\";
echo \"<tr><td>Nr./Etage:</td>\";
echo \"<td><INPUT TYPE=text NAME=nr size=6></td>\";
echo \"</tr><tr>\";
echo \"<td width=\\\"200\\\">Post Nr.: \";
echo \"<td><INPUT TYPE=text NAME=post size=4> By: <INPUT TYPE=text NAME=by width=30></td>\";
echo \"</tr><tr>\";
echo \"<td width=\\\"200\\\">Telefon: <td><INPUT TYPE=text NAME=tlf size=30></td>\";
echo \"</tr><tr>\";
echo \"<td width=\\\"200\\\">Em@il: <td><INPUT TYPE=text NAME=email size=30></td>\";
echo \"</tr><tr>\";
echo \"<td width=\\\"200\\\">Betalingsmåde: </td>\";
echo \"<td><input type=radio name=betal value=Kontant checked>Kontant</value>\";
echo \"<input type=radio name=betal value=Dankortk>Dankort</value>\";
echo \"<input type=radio name=betal value=Check>Check</value></td>\";
echo \"</tr>\";
echo \"<td width=\\\"200\\\">Levering\'s tidspungt: </td>\";
echo \"<td><input type=radio name=hurtig value=Nu checked>Snarest</value>&nbsp; (Normalt inden for 45 min.)<br>\";
echo \"<input type=radio name=hurtig value=senere>Senere</value>&nbsp; (Angiv tidspungt i feltet neden for.)\";
echo \"</td>\";

echo \"</tr><tr>\";
echo \"<td width=\\\"200\\\">Andet leverings tidspungt (ca.):</td>\";
echo \"<td><INPUT type=text size=30 name=levering></td>\";
echo \"</tr><tr>\";
echo \"<td></td><td><INPUT TYPE=submit name=submit value=Bestil!></td>\";
echo \"</tr>\";
echo \"</FORM>\";

--- cut ---

Jeg vil gerne have indlagt følgende...

et felt hvor man kan skrive et tidspunkt (ikke noget problem for mig at tilføje)
men jeg skal så samtidig have den til at tjække (når feltet hvor tidspunktet skal skrives forlades) at den aktuelle tid er eks. 14:27 og tidspunktet som skrives i feltet må skal tidligst være AKTUEL tid + 30 min. altså i dette tilfælde må det klokkeslet der indtastes tidligst være 14:57

hvis det evt. kan laves på en smartere måde høre jeg også gerne.
Avatar billede halnet Nybegynder
09. november 2000 - 11:58 #1
Du kan med lidt modificering bruge: time()+60*30
Det er 30 minutter fra tiden lige nu.

- Anders
Avatar billede halnet Nybegynder
09. november 2000 - 11:59 #2
Og nej... ikke helt sådan hvis man selv må bestemme tidspunktet!

- Anders
Avatar billede defrost Nybegynder
09. november 2000 - 12:00 #3
Hvis det skal kontrolleres når feltet forlades skal det vist laves i javascript...
Avatar billede halnet Nybegynder
09. november 2000 - 12:05 #4
Du kan evt. skrive at tidspunktet skal være efter: date(\"His\", time()+60*30)

IKKE TESTET!

- Anders
Avatar billede halnet Nybegynder
09. november 2000 - 12:07 #5
Hmmm... du kan nok undvære det sidste \"s\" :o)

- Anders
Avatar billede erikjacobsen Ekspert
09. november 2000 - 12:10 #6
I php kan man bare

  $time=\"13\";
  $minu=\"30\";

if (time()+30*60<=mktime($time,$minu)) {
  echo \"der er mere end 30 min til det tidspunkt!!<br>\";
} else {
  echo \"der er mindre end 30 min til det tidspunkt!<br>\";
}
Avatar billede cyberdude Nybegynder
09. november 2000 - 12:24 #7
okay prøvewr lige en anden retning...

hvis nu at når siden loades tjækkes hvad tiden er og dertil lægges 30 minutter..

dette tal skrives så i det felt hvor man kan indtaste tidspunktet..

der bliver så dannet en $loadtime som indeholder tallet for hvornår siden blev loadet

dette tjækkes så med det brugeren evt. har skrevet (hvis der er ændret i det der blev skrevet i feltet ved indlæsningen af siden)

hvis så brugeren har ændret i feltet, tjækkes der så om der min. er 30 minutter til forskel mellem $loadtime og det som brugeren har indtastet...
Avatar billede halnet Nybegynder
09. november 2000 - 12:30 #8
Den ericjakobsen kom med tjekker om det tidspunkt der er skrevet er mere eller mindre end 30 minutter efter man har submittet formen. I hans tilfælde skal du have 2 felter, \"time\" og \"minu\", i din form. Det er ikke nødvendigt med en loadtime.

- Anders
Avatar billede halnet Nybegynder
09. november 2000 - 12:35 #9
Du kan bruge det som jeg skrev som value i din form.

$time = date(\"H\", time()+60*35);
$minu = date(\"i\", time()+60*35);
print \"<input type=\\\"text\\\" name=\\\"time\\\" value=\\\"$time\\\"><br>\\n\";
print \"<input type=\\\"text\\\" name=\\\"minu\\\" value=\\\"$minu\\\">\";

Jeg aner ikke om det virker... men tror det :o)

- Anders
Avatar billede mains Nybegynder
09. november 2000 - 12:36 #10
Af følgende \"(når feltet hvor tidspunktet skal skrives forlades)\", har du allerede slået fast at det skal ske på klienten, dvs du skal have gang i noget JavaScript kode på klientsiden, altså ikke et decideret PHP spørgsmål.

-Mains
Avatar billede defrost Nybegynder
09. november 2000 - 12:56 #11
Javascript, nemlig. Man kan bruge PHP til at skrive værdien af mindst tilladte tid i en javascript variable, og når feltet forlades i formen bliver man nødt til at kontrollere om det indtastede tidspunkt er større end det mindst tilladte. Hvis ikke kan man lave en alert-box.

Men hvis det skal laves i ren PHP, bliver man nødt til først at verificere, når formen bliver submittet.
Avatar billede cyberdude Nybegynder
09. november 2000 - 13:32 #12
jeg er på arbejde lige nu, så jeg kan desvære ikke tjække det før i aften....

Jeg vender tilbage!!
Avatar billede cyberdude Nybegynder
10. november 2000 - 10:19 #13
okay så udskriver den tiden i felterne (brugte halnet\'s sidste forslag)

men hvordan får jeg den til at tjække om brugeren evt. har ændret i felterne (der har med tiden at gøre) ??
hvis det skal laves i javascript er så er der 200 point til vedkommende som kan give et eks. på dette... jeg opretter så bare et nyt spm. i javascript kategorien, hvis der er en her der kan komme med et eks. på det...

her er hele min form...

---- cut ---

echo \"<FORM ACTION=\\\"send_ordre.php3\\\" name=\\\"bestilling\\\" METHOD=\\\"POST\\\" onsubmit=\\\"return check(document.bestilling)\\\">\";
echo \"<td width=\\\"200\\\">Navn: </td>\";
echo \"<td><INPUT TYPE=text NAME=navn size=30></td>\";
echo \"</tr><tr>\";
echo \"<td width=\\\"200\\\">Adresse:</td>\";
echo \"<td width=\\\"200\\\"><select name=\\\"vej\\\">\";
echo \"<option value=\\\"\\\">Find din gade!\";
$gade = mysql_query(\"select * from gade order by gade\");
while ($gade1=mysql_fetch_array($gade)) {
    $ress = htmlspecialchars(stripslashes($gade1[gade]));
echo \"<option value=\\\"$ress\\\">$ress\\n\";
}
echo \"</select></td>\";

$time = date(\"H\", time()+60*30);
$minu = date(\"i\", time()+60*30);

echo \"</tr>\";
echo \"<tr><td>Nr./Etage:</td>\";
echo \"<td><INPUT TYPE=text NAME=nr size=6></td>\";
echo \"</tr><tr>\";
echo \"<td width=\\\"200\\\">Post Nr.: </td>\";
echo \"<td><INPUT TYPE=text NAME=post size=4> By: <INPUT TYPE=text NAME=by width=30></td>\";
echo \"</tr><tr>\";
echo \"<td width=\\\"200\\\">Telefon: </td><td><INPUT TYPE=text NAME=tlf size=30></td>\";
echo \"</tr><tr>\";
echo \"<td width=\\\"200\\\">Em@il: </td><td><INPUT TYPE=text NAME=email size=30></td>\";
echo \"</tr><tr>\";
echo \"<td width=\\\"200\\\">Afhentnings tidspunkt: </td>\";
echo \"<td><input type=\\\"text\\\" name=\\\"time\\\" value=\\\"$time\\\" size=\\\"2\\\">\";
echo \"<input type=\\\"text\\\" name=\\\"minu\\\" value=\\\"$minu\\\" size=\\\"2\\\"></td>\";
echo \"</tr><tr>\";
echo \"<td width=\\\"200\\\">Levering\'s tidspungt: </td>\";
echo \"<td><input type=radio name=hurtig value=Nu checked>Snarest</value>&nbsp; (Normalt inden for 45 min.)<br>\";
echo \"<input type=radio name=hurtig value=senere>Senere</value>&nbsp; (Angiv tidspungt i feltet neden for.)\";
echo \"</td>\";

echo \"</tr><tr>\";
echo \"<td width=\\\"200\\\">Andet leverings tidspungt (ca.):</td>\";
echo \"<td><INPUT type=text size=30 name=levering></td>\";
echo \"</tr><tr>\";
echo \"<td></td><td><INPUT TYPE=submit name=submit value=Bestil!></td>\";
echo \"</tr>\";
echo \"</FORM>\";

--- cut ---
som det fremgår af formen så har jeg allerede noget javascript som tjækker de andre felter...
dete stykke javascript ser sådant her ud (postes fordi det kode haløj som skal ind mht. tid sikkert skal ind heri)??
--- java kode cut ----
<script language=\"Javascript\">
function check(f) {
if (f.navn.value==\"\") {
alert(\"Du skal skrive dit navn\");
f.navn.focus();
return false;
}
if (f.vej.value==\"\") {
alert(\"Du skal skrive din adresse\");
f.vej.focus();
return false;
}
if (f.post.value==\"\") {
alert(\"Du skal skrive dit post nr.\");
f.post.focus();
return false;
}
if (f.by.value==\"\") {
alert(\"Du skal skrive navnet på den by hvor du bor\");
f.by.focus();
return false;
}
if (f.tlf.value==\"\") {
alert(\"Du skal skrive dit Telefon nr.\");
f.tlf.focus();
return false;
}
if (!f.email.value.match(/^[^\\.]?[\\w\\.-]+@[^\\.]?[\\w\\.-]+\\.[A-Z]{2,3}$/i)) {
alert(\"Du skal skrive din e-m@il adresse\");
f.email.focus();
return false;
}
if (f.betal.value==\"\") {
alert(\"Du skal vælge en betalings metode\");
f.betal.focus();
return false;
}
if (f.hurtig.value==\"\") {
alert(\"Du skal vælge Leverings tidspungt\");
return false;
}
return true;
}
</script>
--- cut ---
Avatar billede el_gnu Nybegynder
10. november 2000 - 19:30 #14
Kan du ikke tjekke det hele client-side?

Altså tjekke om det tidspunkt hvor formen submittes ligger min. 30 minutter før det tidspunkt der står i formen.

Eks.

d = new Date();
t = d.getHours();
m = d.getMinutes();
s = d.getSeconds();
ld = f.tidsfelt.value.split(\':\');
lt = ld[0];
lm = ld[1];
ls = ld[2];
if (lt < t) {
  alert(\'Det indtastede tidspunkt er tidligere i dag!\');
  return false;
if (lt = t) {
  if (lm < m) {
    alert(\'Det indtastede tidspunkt er tidligere i dag!\');
    return false;
  }
  else if ((100 * m + 3000 + s) > (100 * lm + ls)){
    alert(\'Det indtastede tidspunkt er inden for 30 minutter\');
    return false;
  }
}


I ovenstående er det forudsat at tidspunktet er på formen t:m:s

Jeg håber det er noget af det rigtige ellers må du lige uddybe det lidt

( )
00///////>
~  /\\  /\\
Avatar billede cyberdude Nybegynder
10. november 2000 - 23:52 #15
jo det kan ikkert sarktens tjækkes på klient siden, men jeg har bare ikke et \"dyt\" forstand på javascript....

tidspunktet på formen er tm (altså timer i et felt og minutter i et andet...)
sekunder er jeg ligeglad med :-))

og kan man i ovenstående....

tiden er nu eks. 1400
og man skriver i formen eks. kl 1500 vil den godkende den/det ??

man må bare ikke kunne angive en tid som er mindre end 30 minutter væk.... altså eks. 1429 ville resultere i en fejl.. ??

de to feltnavne som skal tjækkes hedder
time
minu (ja der er ingen t på det er ikke glemt..)

der er tråsalt 500 point på højkant (sammenlagt)...
Avatar billede defrost Nybegynder
11. november 2000 - 08:03 #16
Det er nok en meget god ide at lave alt validering på client-siden. Hvis man laver noget af det server-side og resten client-side, så støder man ind i et problem, hvis serveren ok klienten ikke kører samme tidszone. Eller hvis klients ur ganske simpelt går forkert....

Så javascript it is....

Jeg er desværre bare ikke hård nok til JS til at lave det.

Avatar billede el_gnu Nybegynder
11. november 2000 - 10:55 #17
Prøv at udskifte din check funktion med følgende:

<script language=\"Javascript\">
function check(f) {
  if (f.navn.value==\"\") {
    alert(\"Du skal skrive dit navn\");
    f.navn.focus();
    return false;
  }
  if (f.vej.value==\"\") {
    alert(\"Du skal skrive din adresse\");
    f.vej.focus();
    return false;
  }
  if (f.post.value==\"\") {
    alert(\"Du skal skrive dit post nr.\");
    f.post.focus();
    return false;
  }
  if (f.by.value==\"\") {
    alert(\"Du skal skrive navnet på den by hvor du bor\");
    f.by.focus();
    return false;
  }
  if (f.tlf.value==\"\") {
    alert(\"Du skal skrive dit Telefon nr.\");
    f.tlf.focus();
    return false;
  }
  if (!f.email.value.match(/^[^\\.]?[\\w\\.-]+@[^\\.]?[\\w\\.-]+\\.[A-Z]{2,3}$/i)) {
    alert(\"Du skal skrive din e-m@il adresse\");
    f.email.focus();
    return false;
  }
  if (f.betal.value==\"\") {
    alert(\"Du skal vælge en betalings metode\");
    f.betal.focus();
    return false;
  }
  if (f.hurtig.value==\"\") {
    alert(\"Du skal vælge Leverings tidspungt\");
    return false;
  }

  d = new Date();
  t = d.getHours();
  m = d.getMinutes();
  regExp = \'^[0-9]{1,2}$\';
  lt = f.time.value;
  if (lt.search(regExp) == -1) {
    alert(\'Timerne skal angives som et eller to cifre\');
    return false;
  }
  lm = f.minu.value;
  if (lm.search(regExp) == -1) {
    alert(\'Minutterne skal angives som et eller to cifre\');
    return false;
  }
  if (lt < t) {
    alert(\'Det indtastede tidspunkt er tidligere i dag!\');
    return false;
  }
  if (lt == t) {
    if (lm < m) {
      alert(\'Det indtastede tidspunkt er tidligere i dag!\');
      return false;
    }
    else if ((m + 30) > lm){
      alert(\'Det indtastede tidspunkt er inden for 30 minutter\');
      return false;
    }
  }
  if (lt > t) {
    if ((60 - parseInt(m) + parseInt(lm)) < 30) {
      alert(\'Det indtastede tidspunkt er inden for 30 minutter\');
      return false;
    }
  }
  return true;
}
</script>


Ovenstående er dit eget script plus en del der tjekker om indholdet i time og minu hver især er et eller to cifre. Derefter tester scriptet om det angivne tidspunkt allerede er passeret. Hvis det ikke er tilfældet tjekker scriptet om tidspunktet er inden for 30 min.
Scriptet skal dog omskrives hvis det er muligt at angive en bestilling med levering en anden dato!

( )
00///////>
~  /\\  /\\
Avatar billede el_gnu Nybegynder
11. november 2000 - 10:59 #18
hovsa, der var vist lige noget jeg havde glemt!

Udskift

  regExp = \'^[0-9]{1,2}$\';
  lt = f.time.value;
  if (lt.search(regExp) == -1) {
    alert(\'Timerne skal angives som et eller to cifre\');
    return false;
  }
  lm = f.minu.value;
  if (lm.search(regExp) == -1) {
    alert(\'Minutterne skal angives som et eller to cifre\');
    return false;
  }

med

  regExp = \'^[0-1][0-9]$|^[0-9]$\';
  lt = f.time.value;
  if (lt.search(regExp) == -1) {
    alert(\'Timerne skal angives som et eller to cifre\');
    return false;
  }
  regExp = \'^[0-6][0-9]$|^[0-9]$\';
  lm = f.minu.value;
  if (lm.search(regExp) == -1) {
    alert(\'Minutterne skal angives som et eller to cifre\');
    return false;
  }
Avatar billede el_gnu Nybegynder
11. november 2000 - 11:07 #19
og så prøve vi lige en gang til for prins Knud

  regExp = \'^2[0-4]$|^1[0-9]$|^[0-9]$\';
  lt = f.time.value;
  if (lt.search(regExp) == -1) {
    alert(\'Det indtastede time-tal er ikke gyldigt!\');
    return false;
  }
  regExp = \'^[0-5][0-9]$|^[0-9]$\';
  lm = f.minu.value;
  if (lm.search(regExp) == -1) {
    alert(\'Det indtastede minut-tal er ikke gyldigt!\');
    return false;
  }

Avatar billede cyberdude Nybegynder
11. november 2000 - 14:32 #20
Bekalger til alle i denne kategori!!

det viste sig at det skulle laves i javascript, derfor går de 200 point i javascript gruppen til el_gnu
Avatar billede cyberdude Nybegynder
12. november 2000 - 15:59 #21
der er ydderliger oplysninger omkring dette atfinde på denne side...

http://www.eksperten.dk/spm/32821

en lille bid som er smuttet over i javascript gruppen..
Avatar billede cyberdude Nybegynder
12. november 2000 - 19:41 #22
nyt problem relateret til dette er oprettet i nyt spørgsmål her......

http://www.eksperten.dk/spm/33084
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