PDA

View Full Version : [php]Non mi capacito...


yashi79
03-07-2013, 15:45
ho la seguente funzione, ma non mi fa "vede" l'if...


<? $nome = $_GET["nome"];
$cogn=$_GET["cognome"];
$giornoN=$_GET["giorno"];
$meseN=$_GET["mese"];
$annoN=$_GET["anno"];


$today = date("j/ n/ Y");
$giornoT= date('j');
$meseT=date('n');
$annoT=date('Y');
echo 'Sei '.$nome .' '. $cogn.' ed oggi ';
echo $today. ' hai ' ;
$eta1 = $annoT-$annoN;
if (($meseT >= $meseN) and ($giornoT>= $giornoN)){
echo $eta1. 'buono';}
else {$eta2= $annoT-$annoN-1 ;
echo $eta2;}
echo ' anni, poichè la tua data di nascita è '. $giornoN.'/'.$meseN.'/'.$annoN;
?>




quel buono l'ho inserito come sentinella...
premetto che sono niubba completa: come vado a capo????:mc:

Questo il semplice codice della pag. html:
<html>

<body>
<form method="get" action="get.php">
NOME:<input type="text" name="nome"><br>
CogNOME:<input type="text" name="cognome"><br>
Data di Nascita:<br>
<input name="giorno" size="2" maxlenght="2" value="" type="text">/ <input name="mese" size="2" maxlenght="2" value="" type="text">/ <input name="anno" size="4" maxlenght="4" value="" type="text">
<input type="submit" value="OK">
</form>

</body>
</html>

OoZic
03-07-2013, 17:48
<?php
$nome = $_GET["nome"];
$cogn = $_GET["cognome"];
$giornoN = $_GET["giorno"];
$meseN = $_GET["mese"];
$annoN = $_GET["anno"];


$today = date("j/ n/ Y");
$giornoT = date('j');
$meseT = date('n');
$annoT = date('Y');
echo 'Sei ' . $nome . ' ' . $cogn . ' ed oggi ';
echo $today . ' hai ';
$eta1 = $annoT - $annoN;
if (($meseT >= $meseN) and ($giornoT >= $giornoN)) {
echo $eta1 . 'buono';
} else {
$eta2 = $annoT - $annoN - 1;
echo $eta2;
}
echo ' anni, poichè la tua data di nascita è ' . $giornoN . '/' . $meseN . '/' . $annoN;
?>

per fare gli "a capo" puoi stampare un <br> se si tratta poi di una pagina html.
per fare gli "a capo" in un testo semplice ti rimando a questa spiegazione:
http://stackoverflow.com/questions/4238433/php-how-to-create-a-newline-character

per quanto riguarda il tuo problema credo sia dettato dal fatto che stai comparando delle stringhe non dei numeri e quindi gli operatori > < non funzionano.

dovresti assicurarti di comparare dei numeri.
questa funzione può aiutarti
http://php.net/manual/en/function.intval.php

:)

yashi79
03-07-2013, 22:40
ambè! grazie gentilissimo!

edit: ho modificato usando le funzioni che restituiscono le date come int (http://php.net/manual/en/function.date.php), ho promosso ad int anche le variabili passate da get, mail codice continuava ad essere errato...posto quello giusto:
<? $nome = $_GET["nome"];
$cogn=$_GET["cognome"];
$giornoN=$_GET["giorno"];
$meseN=$_GET["mese"];
$annoN=$_GET["anno"];


$today = date("d/ m/ Y");
$giornoT= date('d');
$meseT=date('m');
$annoT=date('Y');
echo 'Sei '.$nome .' '. $cogn.' ed oggi ';
echo $today. ' hai ' ;

if ($meseT >$meseN)
{$eta = $annoT-$annoN;
echo $eta;}
else if (($meseT =$meseN) and ($giornoT>= $giornoN)){
$eta = $annoT-$annoN;
echo $eta;}
else {$eta= $annoT-$annoN-1 ;
echo $eta;}
echo ' anni, poichè la tua data di nascita è '. $giornoN.'/'.$meseN.'/'.$annoN;
?>


in pratica si deve differenziare il caso in cui il mese è > da quello in cui è =; se è uguale effettua la verifica sul giorno, altrimnti quella verifica mi portava ad avere vere solo le volte in cui il giorno precedeva quello attuale!

OoZic
04-07-2013, 08:23
ok dovrebbe funzionare così giusto?
non mi ero soffermato a pensare al fatto che si contasse solo il mese , mi ero concentrato più sulla correttezza del codice :D

yashi79
05-07-2013, 14:12
ok dovrebbe funzionare così giusto?
non mi ero soffermato a pensare al fatto che si contasse solo il mese , mi ero concentrato più sulla correttezza del codice :D

senza le tue osservazioni mi sarei inchiodata lì... :D