webForumDet fria alternativet

Array -> While

8 svar · 412 visningar · startad av ume090

ume090Medlem sedan aug. 200518 inlägg
#1

Hej!

Hur ska man lösa det?

$days = array( 
    1=>array('?blogg=LZdfZMs9VGnJADdbmyh2'), 
    8=>array('?blogg=rls5xcnAi5LENxgBeXXg'), 
    14=>array('?blogg=diCetHRShyCcjmSlTL94'), 
    22=>array('?blogg=1iM4tszcwNxTikDduyrK'), 
    27=>array('?blogg=k7AfWPVbvXA730rskWis'), 
    29=>array('?blogg=jK6U9NbxkX424e7ZW7e2'), 
);

Jag tänker att datum ska hämta från databas istället - då trodde jag att det ska fungera med det här

$hamta = "Select * From blogg";
$resultat = mysql_query($hamta) or die("Sorry!");
while($rad = mysql_fetch_array($resultat))
{
	$datum    = date("d", $rad["datum"]);
	$days = '$datum."=>array(\'?blogg=".$rad["id_blogg"]."\')\n";'
}

Men nähää, det fungerar inte. Då undrar jag hur ska man lösa det?

fiddlerMedlem sedan juli 20022 464 inlägg
#2
$hamta = "Select * From blogg";
$resultat = mysql_query($hamta) or die("Sorry!");
while($rad = mysql_fetch_array($resultat))
{
	$datum    = date("d", $rad["datum"]);
	$days[$datum] = "?blogg=".$rad['id_blogg'];
}

Så kanske... :)

ume090Medlem sedan aug. 200518 inlägg
#3

Det ser bättre ut ;)

Men det fungerar ändå inte, jag tycker att det bör fungerar.

Jag kör med
http://keithdevens.com/software/php_calendar/colorsource

Det går fint med

$days = array( 
    2=>array('/weblog/archive/2004/Jan/02'), 
    3=>array('/weblog/archive/2004/Jan/03'), 
    8=>array('/weblog/archive/2004/Jan/08'), 
    22=>array('/weblog/archive/2004/Jan/22'), 
);

Men inte med while...hmm*funderar*

fiddlerMedlem sedan juli 20022 464 inlägg
#4

Testa att skriva ut $days, print_r($days), och se om du blir något klokare...

ume090Medlem sedan aug. 200518 inlägg
#5
$hamta = "Select * From blogg";
$resultat = mysql_query($hamta) or die("Sorry!");
while($rad = mysql_fetch_array($resultat))
  	{
	$datum    = date("d", $rad["datum"]); 
	$days[$datum] = "?blogg=".$rad['id_blogg']; 
	$days = print_r($days);
}

Så fick jag --


Array ( [01] => ?blogg=LZdfZMs9VGnJADdbmyh2 ) 
Warning: Cannot use a scalar value as an array in /htdocs/Better/text.php on line 22
1
Warning: Cannot use a scalar value as an array in /htdocs/Better/text.php on line 22
1
Warning: Cannot use a scalar value as an array in /htdocs/Better/text.php on line 22
1
Warning: Cannot use a scalar value as an array in /htdocs/Better/text.php on line 22
1
Warning: Cannot use a scalar value as an array in /htdocs/Better/text.php on line 22
1

Som jag inte fattar vad det innebär?

fiddlerMedlem sedan juli 20022 464 inlägg
#6

Lägg print_r($days) efter while-loopen och utan $days =

ume090Medlem sedan aug. 200518 inlägg
#7

Nu ser jag!

Det blir så här

Array
(
    [01] => ?blogg=LZdfZMs9VGnJADdbmyh2
)
Array
(
    [01] => ?blogg=LZdfZMs9VGnJADdbmyh2
    [08] => ?blogg=rls5xcnAi5LENxgBeXXg
)
Array
(
    [01] => ?blogg=LZdfZMs9VGnJADdbmyh2
    [08] => ?blogg=rls5xcnAi5LENxgBeXXg
    [14] => ?blogg=diCetHRShyCcjmSlTL94
)
Array
(
    [01] => ?blogg=LZdfZMs9VGnJADdbmyh2
    [08] => ?blogg=rls5xcnAi5LENxgBeXXg
    [14] => ?blogg=diCetHRShyCcjmSlTL94
    [27] => ?blogg=k7AfWPVbvXA730rskWis
)
Array
(
    [01] => ?blogg=LZdfZMs9VGnJADdbmyh2
    [08] => ?blogg=rls5xcnAi5LENxgBeXXg
    [14] => ?blogg=diCetHRShyCcjmSlTL94
    [27] => ?blogg=k7AfWPVbvXA730rskWis
    [29] => ?blogg=jK6U9NbxkX424e7ZW7e2
)
Array
(
    [01] => ?blogg=LZdfZMs9VGnJADdbmyh2
    [08] => ?blogg=rls5xcnAi5LENxgBeXXg
    [14] => ?blogg=diCetHRShyCcjmSlTL94
    [27] => ?blogg=k7AfWPVbvXA730rskWis
    [29] => ?blogg=jK6U9NbxkX424e7ZW7e2
    [22] => ?blogg=1iM4tszcwNxTikDduyrK
)

.. inte bra..
Hur ska jag lösa det?

fiddlerMedlem sedan juli 20022 464 inlägg
#8

Du har print-satsen inne i loopen ;) Det är den sista arrayen som är den riktiga. Vad är felet som du ser det? Du kan ta bort inledande nolla på dagen genom att ändra "d" till "j" i date-satsen.

ume090Medlem sedan aug. 200518 inlägg
#9

Jag fattar inte.....noll!


<?php 
# PHP Calendar (version 2.3), written by Keith Devens 
# http://keithdevens.com/software/php_calendar 
#  see example at http://keithdevens.com/weblog 
# License: http://keithdevens.com/software/license 

function generate_calendar($year, $month, $days = array(), $day_name_length = 3, $month_href = NULL, $first_day = 0, $pn = array()){ 
    $first_of_month = gmmktime(0,0,0,$month,1,$year); 
    #remember that mktime will automatically correct if invalid dates are entered 
    # for instance, mktime(0,0,0,12,32,1997) will be the date for Jan 1, 1998 
    # this provides a built in "rounding" feature to generate_calendar() 

    $day_names = array(); #generate all the day names according to the current locale 
    for($n=0,$t=(3+$first_day)*86400; $n<7; $n++,$t+=86400) #January 4, 1970 was a Sunday 
        $day_names[$n] = ucfirst(gmstrftime('%A',$t)); #%A means full textual day name 

    list($month, $year, $month_name, $weekday) = explode(',',gmstrftime('%m,%Y,%B,%w',$first_of_month)); 
    $weekday = ($weekday + 7 - $first_day) % 7; #adjust for $first_day 
    $title   = htmlentities(ucfirst($month_name)).'&nbsp;'.$year;  #note that some locales don't capitalize month and day names 

    #Begin calendar. Uses a real <caption>. See http://diveintomark.org/archives/2002/07/03 
    @list($p, $pl) = each($pn); @list($n, $nl) = each($pn); #previous and next links, if applicable 
    if($p) $p = '<span class="calendar-prev">'.($pl ? '<a href="'.htmlspecialchars($pl).'">'.$p.'</a>' : $p).'</span>&nbsp;'; 
    if($n) $n = '&nbsp;<span class="calendar-next">'.($nl ? '<a href="'.htmlspecialchars($nl).'">'.$n.'</a>' : $n).'</span>'; 
    $calendar = '<table class="calendar">'."\n". 
        '<caption class="calendar-month">'.$p.($month_href ? '<a href="'.htmlspecialchars($month_href).'">'.$title.'</a>' : $title).$n."</caption>\n<tr>"; 

    if($day_name_length){ #if the day names should be shown ($day_name_length > 0) 
        #if day_name_length is >3, the full name of the day will be printed 
        foreach($day_names as $d) 
            $calendar .= '<th abbr="'.htmlentities($d).'">'.htmlentities($day_name_length < 4 ? substr($d,0,$day_name_length) : $d).'</th>'; 
        $calendar .= "</tr>\n<tr>"; 
    } 

    if($weekday > 0) $calendar .= '<td colspan="'.$weekday.'">&nbsp;</td>'; #initial 'empty' days 
    for($day=1,$days_in_month=gmdate('t',$first_of_month); $day<=$days_in_month; $day++,$weekday++){ 
        if($weekday == 7){ 
            $weekday   = 0; #start a new week 
            $calendar .= "</tr>\n<tr>"; 
        } 
        if(isset($days[$day]) and is_array($days[$day])){ 
            @list($link, $classes, $content) = $days[$day]; 
            if(is_null($content))  $content  = $day; 
            $calendar .= '<td'.($classes ? ' class="'.htmlspecialchars($classes).'">' : '>'). 
                ($link ? '<a href="'.htmlspecialchars($link).'">'.$content.'</a>' : $content).'</td>'; 
        } 
        else $calendar .= "<td>$day</td>"; 
    } 
    if($weekday != 7) $calendar .= '<td colspan="'.(7-$weekday).'">&nbsp;</td>'; #remaining "empty" days 

    return $calendar."</tr>\n</table>\n"; 
} 
?>

Jaa, man ska lägga in
<?php
$days = array(
2=>array('/weblog/archive/2004/Jan/02','linked-day'),
3=>array('/weblog/archive/2004/Jan/03','linked-day'),
8=>array('/weblog/archive/2004/Jan/08','linked-day'),
22=>array('/weblog/archive/2004/Jan/22','linked-day'),
);
?>

För att man ska kunna klicka på "2, 3, 8 och 22" i kalendar

Så jag kör istället med while.

$hamta = "Select * From blogg";
$resultat = mysql_query($hamta) or die("Sorry!");
while($rad = mysql_fetch_array($resultat))
  	{
	$datum    = date("d", $rad["datum"]); 
	$days[$datum] = "?blogg=".$rad['id_blogg']; 
}

Så det fungerar inte,

127 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
124 ms — hämta tråd, inlägg och bilagor (db)