webForumDet fria alternativet

Nästa händelse?

4 svar · 315 visningar · startad av Abbedissan

AbbedissanMedlem sedan okt. 200434 inlägg
#1

Tjena!

Har lyckats fastna i detta scriptet...
Tanken jag har är att få nästa händelse att synas, dvs ej som nu att det skrivs ut alla som är större än dagens datum. Utan endast nästa.
Går det att lösa i denna koden?
Har försökt lösa det med en else sats, men kan ej komma på hur man skriver för att endast få "next" (Eller liknande)

<?
$arrDays = array(
"10-15" => array("Göteborg borta"),
"04-16" => array("Halmstad hemma"),
"06-20" => array("Landskrona borta"),
);

    foreach($arrDays as $key =\> $arr){
            if (date("m-d")==$key \|\| date("Y-m-d")==$key \|\| date("Y-m-d")\<$key){
                    echo "\<b\>".$key."\</b\>\<br\>";
                    foreach($arr as $val)
                            echo births($val)."\<br\>"; echo "\<br\>";
            }
    }

    function births($string){
            preg_match_all("/\[yy=(\[^\]\]\*?)\]/", $string, $matches);
            for ($i=0;$i\<count($matches);$i++)
                    $string = str_replace($matches\[0\]\[$i\],date("Y")-$matches\[1\]\[$i\],$string);
            return $string;
    }

?>

lunne82Medlem sedan dec. 2003153 inlägg
#2

Alltså, vill du skriva ut allt i arrayen $arrDays eller bara de två kommande (från dagens datum sett)?

Är väl bara att göra som du gjort men du lägger till en if-sats som hela tiden kollar om den aktuella händelsen är mindre än "next" så att säga. Då den man tittar på blir mindre har du "kört förbi" den och ska då bara skriva ut info om en till "nästa". Då du skrivit ut den informationen använder du bara break 2 eller vad som behövs för att sluta skriva ut. Är du med?

AbbedissanMedlem sedan okt. 200434 inlägg
#3

Tack för svaret!
Grejjen är att jag e helt ny när det gäller php. Hittade detta scriptet på nätet och tänkte försöka använda de till att visa näst kommande match.
Dvs att den hela tiden skriver ut en rad, den raden som ej varit men som kommer sedan.

lunne82Medlem sedan dec. 2003153 inlägg
#4

Ok, detta är ett förslag. Ändrade bara din foreach, inget annat. Om det är en match dagens datum skriver den ut den också, annars skriver den bara ut nästa match.

foreach($arrDays as $key => $arr){
    // Next
    if (strcmp(date("m-d"),$key) < 0) {
        echo "Next:<b>".$key."</b><br />";
        foreach($arr as $val)
          echo births($val)."<br>"; echo "<br>";
        break;
    }elseif(strcmp(date("m-d"),$key) == 0) {
        echo "Today:<b>".$key."</b><br />";
        foreach($arr as $val)
          echo births($val)."<br>"; echo "<br>";
    }
}
AbbedissanMedlem sedan okt. 200434 inlägg
#5

tack för svar!

Har fått de att funka nu!

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)