» Utilizator
LAMP
» Parteneri» De citit» Recomandari» Taskuri securitate » Statistici
  • 65486 de mesaje.
  • 7732 de topicuri.
  • 1231 de utilizatori.
  •  
  • Kopotosa e ultimul utilizator inregistrat.
[Detalii]

 

| |
Pagini: [1]
Print

[php] Concurs 2 : date calendaristice [1170 afisari]

emi



Mesaje:

Concursul 1, a lamurit (sper) ce inseamna formular, si cum se pot prelua variabilele introduse in el.
Acum sa trecem la cautare functii pe site-ul PHP:
http://www.php.net/time

Sa se creeze un formular in care se cere anul, luna, ziua, ora, si minutul zilei de nastere.
Se cere sa se afiseze virsta.

Concursul dureaza pina pe 15 iulie, postati solutiile, dar sursele mi le timiteti sa zicem pe 14.

Daca e prea greu pentru incepatori, se cere doar anul in formular.
Logged
02-07-2009, 12:47 Twitt ::
Smash
*


Mesaje: 1173
OfflineOffline

WWW

Se pare ca sunt primul participant : http://depozit.imagesl.info/concursuri%20php%20skullbox/concurs_2_time.php


Logged



03-07-2009, 13:59 Twitt ::
emi



Mesaje:

Solutia mea: http://emi.skullbox.info/c/phpc2.php  Big grin
Logged
05-07-2009, 09:28 Twitt ::
Claudiu
*


Mesaje: 1543
OfflineOffline

WWW

Pentru inceput...

Revin cu o alta solutie pana pe 15 Tongue Asta e ce am reusit sa fac azi Smile

Multumesc emi pentru crash-course-ul in php!
Logged

06-07-2009, 20:16 Twitt ::
emi



Mesaje:

Mai sunt citeva zile pina la expirarea concursului.

Vreti sugestii ? :
In lipsa unor functii deja facute, cum scadeti lucruri care nu sunt in baza 10 ?
Secundele se numara de la 0 pina la 59, si apoi se numara un minut, dar asta e la adunare asa ?
Daca vrei sa scazi din 20 de minute si 0 secunde, 40 de secunde ?
Pai din 0 secunde nu ai cum, scrii 19 minute si 20 de secunde.
Logged
10-07-2009, 20:27 Twitt ::
emi



Mesaje:

Sursa Smash:
Code:
<?
$mesaj_eroare = "";
$text_varsta = "";

$Zile_Luna[01]="31";
$Zile_Luna[02]="28";
$Zile_Luna[03]="31";
$Zile_Luna[04]="30";
$Zile_Luna[05]="31";
$Zile_Luna[06]="30";
$Zile_Luna[07]="31";
$Zile_Luna[08]="31";
$Zile_Luna[09]="30";
$Zile_Luna[10]="31";
$Zile_Luna[11]="30";
$Zile_Luna[12]="31";

$anul = "";
$luna = "";
$ziua = "";
$ora = "";
$minutul = "";

if (isset($_POST['calculeaza'])) {
if ((isset($_POST['anul'])) && ($_POST['anul'] != "") && ($_POST['anul'] != "-1") ) {
$anul = $_POST['anul'];
} else {
$mesaj_eroare = $mesaj_eroare . "Nu ati completat campul an. <br>";
}
if ((isset($_POST['luna'])) && ($_POST['luna'] != "")  && ($_POST['luna'] != "-1")) {
$luna = $_POST['luna'];
} else {
$mesaj_eroare = $mesaj_eroare . "Nu ati completat campul luna. <br>";
}
if ((isset($_POST['ziua'])) && ($_POST['ziua'] != "") && ($_POST['ziua'] != "-1")) {
$ziua = $_POST['ziua'];
} else {
$mesaj_eroare = $mesaj_eroare . "Nu ati completat campul ziua. <br>";
}
if ((isset($_POST['ora'])) && ($_POST['ora'] != "")  && ($_POST['ora'] != "-1") ) {
$ora = $_POST['ora'];
} else {
$mesaj_eroare = $mesaj_eroare . "Nu ati completat campul ora. <br>";
}
if ((isset($_POST['minutul'])) && ($_POST['minutul'] != "")  && ($_POST['minutul'] != "-1")) {
$minutul = $_POST['minutul'];
} else {
$mesaj_eroare = $mesaj_eroare . "Nu ati completat campul minutul. <br>";
}
if ($mesaj_eroare == "") {
$data_curenta_unix = time();
$data_nastere_unix = mktime  ($ora  , $minutul  ,0, $luna, $ziua, $anul);
if ($data_curenta_unix > $data_nastere_unix) {
$data_diferenta_unix = $data_curenta_unix - $data_nastere_unix - 7200 ;
$ani = intval(strftime( "%Y" ,$data_diferenta_unix )) - 1970;
$luni = strftime("%m" ,$data_diferenta_unix) -1 ;
$zile = strftime("%d" ,$data_diferenta_unix) - 1;
$ore = strftime("%H" ,$data_diferenta_unix);
$minute = strftime("%M" ,$data_diferenta_unix);
$secunde = strftime("%S" ,$data_diferenta_unix);

if ($ani != 0) {
if ($ani == 1 ) {
$text_varsta = $text_varsta . "Un an ";
} else {
$text_varsta = $text_varsta . "$ani ani ";
}
}
if ($luni != 0) {
if ($luni == 1 ) {
$text_varsta = $text_varsta . "o luna ";
} else {
$text_varsta = $text_varsta . "$luni luni ";
}
}
if ($zile != 0) {
if ($zile == 1 ) {
$text_varsta = $text_varsta . "o zi ";
} else {
$text_varsta = $text_varsta . "$zile zile ";
}
}
if ($ore != 0) {
if ($ore == 1 ) {
$text_varsta = $text_varsta . "o ora ";
} else {
$text_varsta = $text_varsta . "$ore ore ";
}
}
if ($minute != 0) {
if ($minute == 1 ) {
$text_varsta = $text_varsta . "un minut ";
} else {
$text_varsta = $text_varsta . "$minute minute ";
}
}
if ($secunde != 0) {
if ($secunde == 1 ) {
$text_varsta = $text_varsta . "o secunde ";
} else {
$text_varsta = $text_varsta . "$secunde secunde ";
}
}


if (($anul % 4 == 0) && ($luna == "2")) {
$nr_zile = 29;
} else {
$nr_zile = $Zile_Luna[$luna];
}

} else {
$mesaj_eroare = "Data de nastere aleasa este mai mare decat data curenta.";
}
}


}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>[php] Concurs 2 : date calendaristice</title>
<script language="javascript" type="text/javascript">
function AdaugaZilele () {
var Zile_Luna=new Array();
Zile_Luna[01]="31";
Zile_Luna[02]="28";
Zile_Luna[03]="31";
Zile_Luna[04]="30";
Zile_Luna[05]="31";
Zile_Luna[06]="30";
Zile_Luna[07]="31";
Zile_Luna[08]="31";
Zile_Luna[09]="30";
Zile_Luna[10]="31";
Zile_Luna[11]="30";
Zile_Luna[12]="31";
select_ziua = document.getElementById('ziua');
select_ziua.length = 0;
Opt_Nou = document.createElement('option');
Opt_Nou.text = "Ziua";
Opt_Nou.value = -1;
try {
select_ziua.add(Opt_Nou, null);
} catch(ex) {
select_ziua.add(Opt_Nou);
}
luna =  document.getElementById("luna").options[document.getElementById("luna").selectedIndex].value;
anul =  document.getElementById("anul").options[document.getElementById("anul").selectedIndex].text;
if ((anul % 4 == 0) && (luna == "2")) {
nr_zile = 29;
} else {
nr_zile = Zile_Luna[luna];
}
for (i=1; i<= nr_zile; i  ) {
Opt_Nou = document.createElement('option');
if (i < 10) {
Opt_Nou.text = "0"   i;
} else {
Opt_Nou.text = i;
}
Opt_Nou.value = i;
try {
    select_ziua.add(Opt_Nou, null);
  } catch(ex) {
    select_ziua.add(Opt_Nou);
  }
}
}
</script>
<style type="text/css">
<!--
#raspuns {
text-align: center;
height: 90px;
vertical-align: middle;
color: #FFF;
font-size: 24px;
font-weight: 800;
font-variant: normal;
text-transform: capitalize;
background-repeat: repeat-x;
padding-top: 60px;
margin: 0px;
}
#form1 {
text-align: center;
background-image: url(http://www.imagesl.info/imagine/Anonymous/Anonymous/gradient2.png);
background-repeat: repeat;
color: #FFF;
font-size: 18px;
font-weight: bold;
padding-top: 10px;
padding-bottom: 15px;
}
body {
margin: 0px;
padding: 0px;
background-image: url(http://www.skullbox.info/Themes/SkullBox/images/background.png);
background-color: #BBA;
background-position: center;
background-repeat: repeat-y;
}
.eroare {
font-size: 24px;
color: #FC0;
}
-->
</style>
</head>

<body>
<form id="form1" name="form1" method="post" action="/concursuri php skullbox/concurs_2_time.php">
Data si ora curenta pe server : <? print strftime("%d.%m.%Y %H:%M:%S" ,time()) ?>  <br/><br/>
  <label>Anul
    <select name="anul" id="anul"  onchange="AdaugaZilele()">
    <option value="-1">Anul</option>
<?php
    for ($i=1945; $i <= 2009; $i  ) {
if ($anul == $i) {
print "<option selected value='$i'>$i</option>
"; 
} else {
print "<option value='$i'>$i</option>
";
}
}
?>
    </select>
  </label>
  <label>Luna
    <select name="luna" id="luna" onchange="AdaugaZilele()">
      <option value="-1">Luna</option>
      <option value="1" <? if ($luna == 1) { print " selected "; }?>>Ianuarie</option>
      <option value="2" <? if ($luna == 2) { print " selected "; }?>>Februarie</option>
      <option value="3" <? if ($luna == 3) { print " selected "; }?>>Martie</option>
      <option value="4" <? if ($luna == 4) { print " selected "; }?>>Aprilie</option>
      <option value="5" <? if ($luna == 5) { print " selected "; }?>>Mai</option>
      <option value="6" <? if ($luna == 6) { print " selected "; }?>>Iunie</option>
      <option value="7" <? if ($luna == 7) { print " selected "; }?>>Iulie</option>
      <option value="8" <? if ($luna == 8) { print " selected "; }?>>August</option>
      <option value="9" <? if ($luna == 9) { print " selected "; }?>>Septembrie</option>
      <option value="10" <? if ($luna == 10) { print " selected "; }?>>Octombrie</option>
      <option value="11" <? if ($luna == 11) { print " selected "; }?>>Noiembrie</option>
      <option value="12" <? if ($luna == 12) { print " selected "; }?>>Decembrie</option>
    </select>
  </label>
  <label>Ziua
    <select name="ziua" id="ziua">
    <option value="-1">Ziua</option>
<?
if (isset($nr_zile)) {
for ($i=0; $i <= $nr_zile; $i  ) {
if ($i < 10) {
$i = "0$i";
}
if ($ziua == $i) {
print "<option selected value='$i'>$i</option>
"; 
} else {
print "<option value='$i'>$i</option>
";
}
}
}
?>
    </select>
  </label>
  <label>Ora
    <select name="ora" id="ora">
    <option value="-1">ora</option>
<?php
for ($i=0; $i <= 23; $i  ) {
if ($i < 10) {
$i = "0$i";
}
if ($ora == $i) {
print "<option selected value='$i'>$i</option>
"; 
} else {
print "<option value='$i'>$i</option>
";
}
}
?>
    </select>
  </label>
  <label>Minutul
    <select name="minutul" id="minutul">
    <option value="-1">Minutul</option>
<?php
for ($i=0; $i <= 59; $i  ) {
if ($i < 10) {
$i = "0$i";
}
if ($minutul == $i) {
print "<option selected value='$i'>$i</option>
"; 
} else {
print "<option value='$i'>$i</option>
";
}
}
?>   
    </select>
  </label>
  &nbsp;
  <label>
    <input type="submit" name="calculeaza" id="calculeaza" value="Calculeaza varsta" />
  </label>
</form>
<br />
<div id="raspuns">
<? if ($mesaj_eroare != "" ) print "<span class='eroare'>$mesaj_eroare</span>"; ?>
    <? if ($text_varsta != "" ) print "$text_varsta"; ?>
</div>
</body>
</html>
Logged
15-07-2009, 01:45 Twitt ::
emi



Mesaje:

Sursa Emi:
Code:
<html>
<head>
<title>PHP Concurs 2</title>
</head>
<body>
<p>Data nasterii:
<form action="phpc2.php" method="post">
<table>
<tr><td>An</td><td><input type="text" maxlength="4" size="4"  name="an" value="<?php if(isset($_POST['an'])) echo $_POST['an'] ?>"></td>
<td>Luna</td><td><input type="text" maxlength="2" size="2" name="luna" value="<?php if(isset($_POST['luna'])) echo $_POST['luna'] ?>"></td>
<td>Zi</td><td><input type="text" maxlength="2" size="2" name="zi" value="<?php if(isset($_POST['zi'])) echo $_POST['zi'] ?>"></td></tr>
<tr><td>Ora</td><td><input type="text" maxlength="2" size="2" name="ora" value="<?php if(isset($_POST['ora'])) echo $_POST['ora'] ?>"></td>
<td>Minut</td><td><input type="text" maxlength="2" size="2" name="minut" value="<?php if(isset($_POST['minut'])) echo $_POST['minut'] ?>"></td></tr>
</table>
<input type="submit" name="submit" value="Calculeaza virsta">
</form>

<?php

function GetNr($x,$nume,$min,$max) {
  if((!isset($_POST[$x])) || (!is_numeric($_POST[$x]))) die("Completati cimpul '$nume'");
  $nr = (int) $_POST[$x];
  if( ($nr<$min) || ($nr>$max) ) die("'$nume' trebuie sa fie intre $min si $max");
  return $nr;
};

function is_bisect($an) {
  return (( $an % 4 == 0 && $an % 100 != 0 ) || $an % 400 == 0 );
}

if(isset($_POST['submit'])) {
  $y0    = (int) date("Y");
  $an    = GetNr('an', 'An', $y0-140, $y0);
  $luna  = GetNr('luna', 'Luna', 1, 12);
 
  $zile_in_luna = array(0,31,28,31,30,31,30,31,31,30,31,30,31);
  if(is_bisect($an)) $zile_in_luna['2'] = 29;
 
  $zi    = GetNr('zi', 'Zi' , 1, $zile_in_luna[$luna]);
  $ora   = GetNr('ora', 'Ora', 0, 23);
  $minut = GetNr('minut', 'Minut', 0, 59);
 
  // data actuala
  $azi_an    = (int) date("Y");
  $azi_luna  = (int) date("m");
  $azi_zi    = (int) date("d");
  $azi_ora   = (int) date("H");
  $azi_minut = (int) date("i");
 
  // scadem data initiala
  $carry = 0;
  if($minut > $azi_minut) {
    $carry=1; // trebuie scazuta o ora
    $virsta_minut = 60 + $azi_minut - $minut;
  } else $virsta_minut = $azi_minut - $minut;
 
  if($ora > $azi_ora-$carry) {
    $virsta_ora = 24 + $azi_ora - $carry - $ora;
    $carry=1; // trebuie scazuta o zi
  } else {
    $virsta_ora = $azi_ora - $carry - $ora;
    $carry=0;
  }
 
  if($zi > $azi_zi-$carry) {
    $virsta_zi = $zile_in_luna[$luna] + $azi_zi - $carry - $zi;
    $carry=1; // trebuie scazuta o luna
  } else {
    $virsta_zi = $azi_zi - $carry - $zi;
    $carry=0;
  }
 
  if($luna > $azi_luna-$carry) {
    $virsta_luna = 12 + $azi_luna - $carry - $luna;
    $carry=1; // trebuie scazut un an
  } else {
    $virsta_luna = $azi_luna - $carry - $luna;
    $carry=0;
  }

  $virsta_an = $azi_an - $carry - $an;
  if($virsta_an<0) die("Ati introdus o data din viitor ;)");
   
  // afisam rezultatul:
  echo "<p>$virsta_an ani, $virsta_luna luni, $virsta_zi zile, $virsta_ora ore si $virsta_minut minute.";
}
?>

</body>
</html>
Logged
15-07-2009, 01:47 Twitt ::
emi



Mesaje:

Sursa Claudiu:
Code:
<html>
  <head>
    <title>Varsta</title>
  </head>
  <body>
    <form action="varsta_data.php" method="post">Anul =
      <input type="text" name="an">  Luna =
      <input type="text" name="luna">  Ziua =
      <input type="text" name="zi"> Ora =
      <input type="text" name="ora"> Minutul =
      <input type="text" name="minut">
      <input type="submit" name ="buton" value = "Do not push the button!">
    </form>
   
<?php

// Preluam data/timpul din sistem
$an_sistem =  (int) date("Y");
$luna_sistem = (int) date("m");
$zi_sistem = (int) date("d");
$ora_sistem = (int) date("H");
$minut_sistem = (int) date("i");

// Verificam inputul (sa nu fie NULL si sa aiba valori valide)
if (isset($_POST['an']) && $_POST['an'] > 1900 && $_POST['an'] < 2010) {
  $an = $_POST['an'];
}
  else exit("Nu ati introdus un an valid");
if (isset($_POST['luna']) && $_POST['luna'] > 0 && $_POST['luna'] < 13) {
  $luna = $_POST['luna'];
}
  else exit("Nu ati introdus o luna valida");
 
if (isset($_POST['zi']) && $_POST['zi'] > 0 && $_POST['zi'] < return_month_days($luna, $an)) {
  $zi = $_POST['zi'];
}
  else exit("Nu ati introdus o zi valida");
if (isset($_POST['ora']) && $_POST['ora'] > -1 && $_POST['ora'] < 25) {
  $ora = $_POST['ora'];
}
  else exit("Nu ati introdus o ora valida");
 
if (isset($_POST['minut']) && $_POST['minut'] > -1 && $_POST['minut'] < 61) {
  $minut = $_POST['minut'];
}
  else exit("Nu ati introdus un minut(?) valid");

// Returneaza true pentru ani bisecti, false pentru restul
function is_bisect($an) {
  return (( $an % 4 == 0 && $an % 100 != 0 ) || $an % 400 == 0 );
}

// Returneaza numarul de zile din luna $month, anul $year
// folosind o lista de define-uri si functia de mai sus
function return_month_days($month, $year) {

  define ("Ianuarie",   "31");
  define ("Martie",     "31");
  define ("Aprilie",    "30");
  define ("Mai",        "31");
  define ("Iunie",      "30");
  define ("Iulie",      "31");
  define ("August",     "31");
  define ("Septembrie", "30");
  define ("Octombrie",  "31");
  define ("Noiembrie",  "30");
  define ("Decembrie",  "31");
 
  // Folosim metoda switch() pentru a returna valoarea ceruta
  switch($month) {
    case "1":
    case "01":{
      return Ianuarie;
      break;
      }
    case "2":
    case "02":{
      if (is_bisect($year)) {
        return 28;
        break;
      }
      return 29;
      break;
      }
    case "3":
    case "03":{
      return Martie;
      break;
      }
    case "4":
    case "04":{
      return Aprilie;
      break;
      }
    case "5":
    case "05":{
      return Mai;
      break;
      }
    case "6":
    case "06":{
      return Iunie;
      break;
      }
    case "7":
    case "07":{
      return Iulie;
      break;
      }
    case "8":
    case "08":{
      return August;
      break;
      }
    case "9":
    case "09":{
      return Septembrie;
      break;
      }
    case "10":{
      return Octombrie;
      break;
      }
    case "11":{
      return Noiembrie;
      break;
      }
    case "12":{
      return Decembrie;
      break;
      }   
    }
} // function return_month_days($month, $year)

/* Calculam varsta scazand anii/lunile/zilele/orele si minutele inregistrate
 din cele actuale. Unde avem valori negative scadem scadem "unitatea" anterioara
 si adunam numarul total de "subunitati"
 Spre exemplu, daca luna curenta e 02, iar cea a nasterii e 06, inseamna ca au
 trecut X ani si 8 luni (2-6 + 12)
*/
$ani = $an_sistem - $an;

$luni = $luna_sistem - $luna;
if ($luni < 1) {
  $ani--;
  $luni += 12;
}

// Aici trebuie avut grija atat la luni cat si la ani
$zile = $zi_sistem - $zi;
if ($zile < 1) {
  $luni--;
  if ($luni < 1) {
    $ani--;
    $luni += 12;
  }
  $zile += return_month_days($luna, $an);
}

$ore = $ora_sistem - $ora;
if ($ore < 0) {
  $zile--;
  $ore += 24;
}

$minute = $minut_sistem - $minut;
if ($minute < 0) {
  $ore--;
  $minute += 60;
}

// Outputul final
echo 'Varsta: '.$ani.' ani, '.$luni.' luni, '.$zile.' zile, '.$ore.' ore si '.$minute.' minute';
    ?>
   
  </body>
</html>
Logged
15-07-2009, 01:54 Twitt ::
Pagini: [1]
Print
SkullBox Forum  |  Development  |  Concursuri de programare  |  Topic: [php] Concurs 2 : date calendaristice