function ilikia()

Μια περιοχή όπου τα μέλη μας μπορούν να βάζουν τα PHP scripts που έχουν φτιάξει και θέλουν να τα μοιραστούν με τα υπόλοιπα μέλη.

Συντονιστές: Super-Moderators, WebDev Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

function ilikia()

Δημοσίευση από vassilism » 16 Οκτ 2009 19:39

Πρόσφατα έφτιαξα μια συνάρτηση που υπολογίζει την ηλικία με βάση την ημερομηνία γέννησης. Δηλαδή εσείς δίνετε την ημερομηνία γέννησης και σας επιστρέφει την ηλικία.

Η συνάρτηση είναι η παρακάτω:

Κώδικας: Επιλογή όλων

function ilikia($im_genisis){
 $im_genisis = explode( '/', $im_genisis);
 $im_genisis = $im_genisis[2]; 
 $today = date("d/m/Y");
 $today = explode( '/', $today);
 $today = $today[2];
 $ilikia = $today - $im_genisis; 
 if ($im_genisis > $today){ echo 'lathos imerominia genisis'; }
 else if ($im_genisis == $today){ echo 'den exeis svisei oute ena keraki';}
 else if ($ilikia > '140'){ echo 'lathos imerominia genisis'; }
 else{ echo $ilikia; }
 }
Για να την καλείτε γράφετε:

Κώδικας: Επιλογή όλων

ilikia('23/02/1984');
Όπου 23/02/1984 την ηλικία που θέλετε σε μορφή xx/xx/xxxx

Άβαταρ μέλους
dimsis
Reporter
Δημοσιεύσεις: 7994
Εγγραφή: 25 Ιούλ 2001 03:00

function ilikia()

Δημοσίευση από dimsis » 16 Οκτ 2009 21:27

Να προσθέσεις μεταβλητές φύλλου και αν είναι γυναίκες να κρύβει χρόνια, το ίδιο και για άντρες άνω των 35 :p
Ευχαριστούμε :)

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

function ilikia()

Δημοσίευση από vassilism » 16 Οκτ 2009 22:21

dimsis έγραψε:Να προσθέσεις μεταβλητές φύλλου και αν είναι γυναίκες να κρύβει χρόνια, το ίδιο και για άντρες άνω των 35 :p
Άμα σε βολεύει καλύτερα θα το φτιάξουμε :lol:

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

function ilikia()

Δημοσίευση από korgr » 16 Οκτ 2009 22:59

Βασιλη απορια! :D
Απο οτι βλεπω μια αφαιρεση ετων γινεται.
Υπαρχει λογος που για να παρεις το today εφαρμοζεις το explode αντι του $today=date("Y")?
Απλα απορια γιατι ...κολησα :lol:

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6227
Εγγραφή: 30 Νοέμ 2004 03:09

function ilikia()

Δημοσίευση από fafos » 16 Οκτ 2009 23:16

Re patrida!! exei dikio o kontopatridas... ektos autou den douleuei kala.. autos pou exei gennhthei ton december tou 84 den einai 25, einai 24 akoma:

Κώδικας: Επιλογή όλων

function ilikia($bDay,$bMonth,$bYear) {

	$cMonth = date('n');
	$cDay = date('j');
	$cYear = date('Y');

	if(($cMonth >= $bMonth && $cDay >= $bDay) || ($cMonth > $bMonth)) {
		return ($cYear - $bYear);
	} else {
		return ($cYear - $bYear - 1);
	}
}
print ilikia('23','12','1984');



Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

function ilikia()

Δημοσίευση από Banavas » 16 Οκτ 2009 23:28

Ναι αλλά αυτό δεν έχει ωραία μηνυματάκια... :)
ούτε το option που πρότεινε ο Δημήτρης. :D
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6227
Εγγραφή: 30 Νοέμ 2004 03:09

function ilikia()

Δημοσίευση από fafos » 16 Οκτ 2009 23:37

Banavas έγραψε:Ναι αλλά αυτό δεν έχει ωραία μηνυματάκια... :)
ούτε το option που πρότεινε ο Δημήτρης. :D
dikio exeis.. ksexasa na tou valo kai to:

Κώδικας: Επιλογή όλων

if($user == fafos) {$ilikia =  $ilikia - $kalokairia;}
:lol:
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

function ilikia()

Δημοσίευση από Banavas » 17 Οκτ 2009 00:02

Το θέμα είναι πιο περίπλοκο. Χρειάζεται ένα δυνατό αλγόριθμο ώστε για ηλικίες από 0 έως 10 να τις αφήνει ανέπαφες, από 10 έως 16 να προσθέτει 2-3 χρόνια, από 17-25 να τίς αφήνει επίσης όπως είναι, από 25 έως 40 να αφαιρεί προοδευτικά αυξανόμενα χρόνια και τέλος μετά τα 40 να ειστρέφει το νούμερο 40. :lol:
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

function ilikia()

Δημοσίευση από vassilism » 17 Οκτ 2009 00:37

korgr έγραψε:Βασιλη απορια! :D
Απο οτι βλεπω μια αφαιρεση ετων γινεται.
Υπαρχει λογος που για να παρεις το today εφαρμοζεις το explode αντι του $today=date("Y")?
Απλα απορια γιατι ...κολησα :lol:
Όχι δεν χρειάζεται, απλά αυτή η explode ήταν ξεχασμένη γιατί στην αρχή έδειχνα τους μήνες και τις ημέρες.
fafos έγραψε:Re patrida!! exei dikio o kontopatridas... ektos autou den douleuei kala.. autos pou exei gennhthei ton december tou 84 den einai 25, einai 24 akoma:
Πατρίδα ή εγώ δεν ξέρω να μετράω ή εσύ θες να κρύβεις χρόνια :lol:
Banavas έγραψε:μετά τα 40 να ειστρέφει το νούμερο 40. :lol:
Καλά όλοι πάνω από 40 είστε :lol:

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

function ilikia()

Δημοσίευση από vassilism » 17 Οκτ 2009 01:21

Τελικά δεν είστε όλοι πάνω από 40 είστε πάνω από 50 :lol:
Αυτή μήπως είναι καλύτερη? :kaloe:

Κώδικας: Επιλογή όλων

function ilikia_gia_vip_melh($user){

 if ($user == 'fafos' || $user == 'Banavas' || $user == 'korgr' || $user == 'dimsis'){ echo '39'; }
 else{ echo 'Sorry, den eisai VIP melos'; }
 }

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

function ilikia()

Δημοσίευση από Banavas » 17 Οκτ 2009 09:35

vassilism έγραψε:Τελικά δεν είστε όλοι πάνω από 40 είστε πάνω από 50 :lol:
Μετά τα σαράντα αρχίζουν τα ρητά του τύπου "είμαι όσο φαίνομαι" ή είμαι όσο αισθάνομαι" κλπ ... Όλοι 18 αισθάνονται :-?

Να μια καλή πρόταση για να την συμπεριλάβεις στην φόρμα εισαγωγής ημερομονίας: Γράψτε πόσο δείχτετε ή πόσο αισθάνεστε. :lol:
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
dimsis
Reporter
Δημοσιεύσεις: 7994
Εγγραφή: 25 Ιούλ 2001 03:00

function ilikia()

Δημοσίευση από dimsis » 17 Οκτ 2009 09:47

Γαμάτη ανάλυση :) Μου αρέσει ο τρόπος που σκέφτεσαι!
Banavas έγραψε:Το θέμα είναι πιο περίπλοκο. Χρειάζεται ένα δυνατό αλγόριθμο ώστε για ηλικίες από 0 έως 10 να τις αφήνει ανέπαφες, από 10 έως 16 να προσθέτει 2-3 χρόνια, από 17-25 να τίς αφήνει επίσης όπως είναι, από 25 έως 40 να αφαιρεί προοδευτικά αυξανόμενα χρόνια και τέλος μετά τα 40 να ειστρέφει το νούμερο 40. :lol:

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

function ilikia()

Δημοσίευση από cpulse » 17 Οκτ 2009 19:47

Είχε ένα λαθάκι το προηγούμενο function

Κώδικας: Επιλογή όλων

function ilikia($bDay,$bMonth,$bYear) {

	$cMonth = date('n');
	$cDay = date('j');
	$cYear = date('Y');

	if(($cMonth >= $bMonth && $cDay >= $bDay) || ($cMonth > $bMonth)) {
		$result = $cYear - $bYear;
	} else {
		$result = $cYear - $bYear - 1;
	}

	if &#40;$result < 30&#41;
		return $result;
	else
		return "29 + " . &#40;$result - 29&#41;;
&#125;
print ilikia&#40;'23','12','1984'&#41;;
οκ τώρα είναι σωστό

mariosal
Honorary Member
Δημοσιεύσεις: 1473
Εγγραφή: 09 Νοέμ 2007 23:55

function ilikia()

Δημοσίευση από mariosal » 18 Οκτ 2009 00:23

Η δικιά μου έκδοση είναι αυτή.

Κώδικας: Επιλογή όλων

<?php
function age&#40;$bDay, $bMonth, $bYear&#41; &#123;
    if&#40; &#40; &#40; date&#40;'n'&#41; >= $bMonth &#41; && &#40; date&#40;'j'&#41; >= $bDay &#41; &#41; || &#40; date&#40;'n'&#41; > $bMonth &#41; &#41;
        return date&#40;'Y'&#41; - $bYear;
    return date&#40;'Y'&#41; - $bYear - 1;
&#125;
echo age&#40;'1', '3', '1996'&#41;;
?>
@vassilism Στις Functions ποτέ μη χρησιμοποιείς echo. Μόνο return

@fafos @cpulse Και οι δύο γράψατε

Κώδικας: Επιλογή όλων

if &#40; statement &#41; &#123;
    return statement;
&#125;
else &#123;
    return statement;
&#125;
Αφού η return βγαίνει αμέσως από τη function δε χρειάζεται η else :wink:
Τελευταία επεξεργασία από το μέλος mariosal την 18 Οκτ 2009 01:43, έχει επεξεργασθεί 2 φορές συνολικά.

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

function ilikia()

Δημοσίευση από vassilism » 18 Οκτ 2009 00:41

mariosal έγραψε:@vassilism Στις Functions ποτέ μη χρησιμοποιείς echo. Μόνο return
Μπορείς να αναλύσεις λίγο τους λόγους?

Απάντηση

Επιστροφή στο “PHP τα δικά μας scripts”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες