Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [php]calcolare numero giorni partendo solo dal numero di settimana

    dunque, io ho in input solamente il numero della settimana, ad es. 5
    partendo da questo dato mi devo creare un piccolo calendarietto settimanale, e l'ho quasi finito, mi manca solo una piccola parte, che sarà semplicissima ma non mi viene

    ossia scrivere in parte ad ogni giorno anche il numero. Io ora stampo solamente Lunedì, Martedì, ...

    mentre vorrei scrivere, sempre facendo riferimento al 5, una cosa del genere:

    Lunedì 30/1 Martedì 31/1 Mercoledì 1/2 ....




    Come la posso realizzare una cosa del genere? Grazie mille!




    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    525
    http://it.php.net/manual/it/function.date.php

    Prova ad elaborare i dati ricavati dalle seguenti funzioni:
    la prima,get_monday, dato il valore numerico della settimana ti restituisce il corrispondente lunedì mentre la seconda, select_settimana, ti restituisce un menù con indicata l'inizio e la fine della settimana passata come argomento.
    Puoi richiamare la funzione così:

    $array_settimana=array("1","2","3","4","5");
    select_settimana($array_settimana,"5","s");


    function get_monday ($week, $year=""){
    $first_date = strtotime("1 January ".($year ? $year : date("Y")));
    $w_day = date("w", $first_date);
    $d_week = 0;

    switch($w_day){
    case 1: $monday = $first_date;
    break;
    case 2:
    case 3:
    case 4: $d_week = 604800;
    default:$monday = strtotime("Monday", $first_date)-$d_week;
    }

    $plus_week = "+".($week-1)." week";

    return (strtotime($plus_week, $monday));
    }


    function select_settimana($array_value,$default,$periodo){
    // set_display($boxname,$serie_def)
    ?><SELECT NAME ='settimana' <? set_display("settimana",$periodo) ?> ><?
    foreach ($array_value as $index => $value){
    //echo "
    $value";
    //echo "$default";
    $sett=get_monday ($value, "2006");
    $d=date("z", $sett); //gg dell'anno che parte da 0
    $d=date("d", $sett);
    $m=date("m", $sett);

    $m=to_string($m);
    $l=strlen($d);
    if ($l=="1") $sp="";
    else $sp="";

    $label=$d.$sp.$m;

    if ($value == $default)
    echo "<option value='$value' selected>$label</option>";
    else
    echo "<option value='$value'>$label</option>";
    }
    echo "<select>";
    }

    function set_display($boxname,$serie_def){
    $stmp="n";
    switch($serie_def){
    case "s": if ($boxname=='settimana') $stmp="y"; break;
    case "g": if (($boxname=='n_giorno')OR ($boxname=='n_mese')) $stmp="y"; break;
    case "m": if ($boxname=='n_mese') $stmp="y"; break;
    }
    if ($stmp=="y")
    echo "style='display:block;'";
    else
    echo "style='display:none;'";

    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    525

    ops... dimenticata funzione

    function to_string($numero){
    switch ($numero){
    case "01": $mese="Gennaio";
    break;
    case "02": $mese="Febbraio";
    break;
    case "03": $mese="Marzo";
    break;
    case "04": $mese="Aprile";
    break;
    case "05": $mese="Maggio";
    break;
    case "06": $mese="Giugno";
    break;
    case "07": $mese="Luglio";
    break;
    case "08": $mese="Agosto";
    break;
    case "09": $mese="Settembre";
    break;
    case "10": $mese="Ottobre";
    break;
    case "11": $mese="Novembre";
    break;
    case "12": $mese="Dicembre";
    break;

    }
    return $mese;
    }

  4. #4
    non c'ho capito un granchè
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    525
    beh,,,prova in un file di test, richiamando la funzione, vedi il risultato che dovresti ottenere ( un menù che per ogni settimana ti indica la data di inizio e fine) e trova una soluzione adatta alle tue esigenze....

    $array_settimana=array("1","2","3","4","5");
    select_settimana($array_settimana,"5","s");

  6. #6
    ho usato quest'altra funzione:
    codice:
    function findWeekPeriod($week, $year)
    {
       $x = 0;
       $aPeriod['start'] = date("d/m", mktime(0, 0, 0, 1, 1 + $week*7 + $x - 6, $year));
       $aPeriod['end'] = date("d/m", mktime(0, 0, 0, 1, 1 + $week*7 + $x, $year));
       return $aPeriod['start'];
    }
    di cui ho modificato il return e il formato della data, e da quello sono partito per calcolarmi il resto.



    Grazie!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.