Link farbig

Ich habe ein kleines Problem und zwar ich soll für jemand ein Script anpassen und zwar so, das Links je nach kriterien farbig sind!

den Farb-Code speichere ich in der DB aber er ist nicht farbig!

[PHP]for($i=0;$i<$days;$i++) {
$date = mktime(0,0,0,$month,$i+1,$year);
$text = ‚‘;
if (isset($data[$date])) {
foreach($data[$date] as $info) {
$text .= ‚‘.$info[‚title‘].'; ';
}
}[/PHP]

MfG Marcel

schön das du $color hinschreibst und vorallem wo diese variable definiert wurde.

Ich sagte doch der Farb-Code ist in datenbank gespeichert und $color = $row[‚color‘];, dies habe ich weiter oben ausgelesen!
Wenn ich halt die Links anzeigen lasse, so sind entweder alle in der einenFarbe, vom letzten Link in der Datenbank oder es sind alle in der anderen Farbe (grün oder rot).

MfG Marcel

  1. Poste alles.
  2. Zeig mal das array (var_dump) welches aus der datenbank kommt.

mit dem code den du postest kann man nur raten woran es liegt.

Da ist ein weng viel ^^

[PHP]<?php

Kalender Script © by Nickel

defined (‚main‘) or die ( ‚no direct access‘ );

//-----------------------------------------------------------|

$title = $allgAr[‚title‘].’ :: Kalender’;
$hmenu = ‚Kalender‘;
$design = new design ( $title , $hmenu );
$design->header();

$tpl = new tpl ( ‚kalender.htm‘ );

//-----------------------------------------------------------|

//Daten
$month = date(‚n‘);
$year = date(‚Y‘);
$gday = 0;
$view = 0;
$eid = 0;
if ($menu->getA(1) == ‚v‘ AND is_numeric($menu->getE(1))) {
$view = $menu->getE(1);
}
if ($menu->getA(2) == ‚m‘ AND is_numeric($menu->getE(2)) AND $menu->getE(2) > 0 AND $menu->getE(2) < 13) {
$month = $menu->getE(2);
}
if ($menu->getA(4) == ‚d‘ AND is_numeric($menu->getE(4)) AND $menu->getE(4) > 0 AND $menu->getE(4) < 32) {
$gday = $menu->getE(4);
}
if ($menu->getA(3) == ‚y‘ AND is_numeric($menu->getE(3)) AND $menu->getE(3) > 2000 AND $menu->getE(3) < date(‚Y‘, (time()+pow(8,9)))) {
$year = $menu->getE(3);
}
if ($menu->getA(2) == ‚e‘ AND is_numeric($menu->getE(1))) {
$eid = $menu->getE(2);
}

$arr_month = array(‚1‘=>‚Januar‘,‚Februar‘,‚März‘,‚April‘,‚Mai‘,‚Juni‘,‚Juli‘,‚August‘,‚September‘,‚Oktober‘,‚November‘,‚Dezember‘);
$arr_day = array(‚So‘,‚Mo‘,‚Di‘,‚Mi‘,‚Do‘,‚Fr‘,‚Sa‘);

$days = date(‚t‘,mktime(0,0,0,$month,1,$year));
$start_col = date(‚w‘,mktime(0,0,0,$month,1,$year))-1;
$rows = ceil($days/7);
$day=1;
$data = array ();
$data_id = array ();
$aus = array();

//Daten aus der MySQL
$where1 = mktime(0 ,0,0,$month,1,$year);
$where2 = mktime(24,0,0,$month,date(‚t‘,$where1),$year);

$result = db_query(„SELECT *
FROM prefix_kalender
WHERE ((time > „.$where1.“ AND time < „.$where2.“) OR id = „.$eid.“)
AND „.$_SESSION[‚authright‘].“ <= recht
ORDER BY time LIMIT 200“);
while ($row = db_fetch_assoc($result)) {
$t_id = $row[‚id‘];
$t_d = date(‚j‘, $row[‚time‘]);
$t_m = date(‚n‘, $row[‚time‘]);
$t_y = date(‚Y‘, $row[‚time‘]);
$color = $row[‚color‘];
$date = mktime(0,0,0,$t_m,$t_d,$t_y);
$data_id[$t_id] = $row;
$data[$date] = $row;
}
$ueid = 0;
if (substr($eid, 0, 3) == 999) {
$ueid = substr ($eid, 3);
}
$result = db_query(„SELECT
name, gebdatum, id
FROM prefix_user
WHERE MONTH(gebdatum) = „.$month.“
OR id = „.$ueid.“
ORDER BY MONTH(gebdatum), DAYOFMONTH(gebdatum) LIMIT 200“);
while ($r = db_fetch_assoc($result)) {
list($y,$m,$d) = explode(‚-‘,$r[‚gebdatum‘]);
$date = mktime(0,0,0,$m,$d,date(‚Y‘));
$dateA = mktime(0,0,0,$m,$d,$y);
$jetzt = time();
$alter = $jetzt - $dateA;
if ($date > $jetzt) {
$alter = date(„Y“,$alter) - 1970 +1;
} else {
$alter = date(„Y“,$alter) - 1970;
}
$row = array(
‚title‘ => $alter.‚. Geburtstag von ‚.$r[‚name‘],
‚text‘ => ‚Der ‚.$alter.‘. Geburtstag von [.$_SERVER[„SCRIPT_NAME“]).‘?user-details-‘.$r[‚id‘].‘]‚.$r[‚name‘].‘](http://‚.($_SERVER["HTTP_HOST)‘,
‚time‘ => $date + 99,
‚id‘ => ‚999‘.$r[‚id‘],
);
$data_id[‚999‘.$r[‚id‘]] = $row;
$data[$date] = $row;
}

if ($view == 0) {
$title_liste = $arr_month[$month].’ '.$year;
} elseif ($view == 1 && !empty($gday)) {
$title_liste = 'Nur am ‚.$gday.‘ ‚.$arr_month[$month].‘ '.$year;
} elseif ($view == 1) {
$title_liste = 'Liste ab ‚.$arr_month[$month].‘ '.$year;
}

//Template Ausgabe
$aus[‚MONTH‘] = $arr_month[$month];
$aus[‚YEAR‘] = $year;
$aus[‚TITLE‘] = ($eid) ? $data_id[$eid][‚title‘] : $title_liste;
$aus[‚TITLE_ALIGN‘] = ($eid) ? ‚‘ : ’ align=„center“';
$tpl->set_ar_out($aus,0);
unset($aus);

//Deatilansicht
if ($eid) {
$aus[‚DEATIL_DATE‘] = date(‚d.m.Y‘,$data_id[$eid][‚time‘]);
$aus[‚DEATIL_TIME‘] = date(‚H:i‘,$data_id[$eid][‚time‘]);
$aus[‚DEATIL_TEXT‘] = BBcode($data_id[$eid][‚text‘]);
//Marcels Änderungen start
$aus[‚DETAIL_MAX_TEILNEHMER‘] = BBcode($data_id[$eid][‚max_teilnehmer‘]);
$aus[‚DETAIL_TEILNEHMER‘] = BBcode($data_id[$eid][‚teilnehmer‘]);
//Marcels Änderungen ende
$tpl->set_ar_out($aus,2);
unset($aus);
}
//Liste der Tage (Monats-Ansicht)
elseif ($view == 0) {
for($i=0;$i<$days;$i++) {
$date = mktime(0,0,0,$month,$i+1,$year);
$text = ‚‘;
if (isset($data[$date])) {
foreach($data[$date] as $info) {
$text .= ‚‘.$info[‚title‘].'; ';
}
}

    $aus['LIST_I'] = $i+1;
    $aus['LIST_D'] = $arr_day[date('w',mktime(0,0,0,$month,$i+1,$year))];
    $aus['LIST_T'] = $text;
    $class = ($i % 2) ? 'Cnorm' : 'Cmite' ;
    $aus['LIST_CLASS'] = ($i+1 == date('j') && $month == date('n') && $year == date('Y')) ? 'Cdark' : $class;
    $tpl->set_ar_out($aus,1);
    unset($aus);
}

}
//Liste der Tage (Listenansicht)
elseif ($view == 1) {
//Nur ein Tag
if (isset($data) && !empty($gday)) {
$date = mktime(0,0,0,$month,$gday,$year);
$i = 1;
if (isset($data[$date])) {
foreach($data[$date] as $info) {
$text = ‚‘;
$text .= ‚‘.$info[‚title‘].'; ‚;
$aus[‚LIST_I‘] = $arr_day[date(‚w‘,$date)];
$aus[‚LIST_D‘] = date(‚H:i‘,$info[‚time‘]);;
$aus[‚LIST_T‘] = $text;
$class = ($i % 2) ? ‚Cnorm‘ : ‚Cmite‘ ;
$aus[‚LIST_CLASS‘] = ($i+1 == date(‚j‘) && $month == date(‚n‘) && $year == date(‚Y‘)) ? ‚Cdark‘ : $class;
$tpl->set_ar_out($aus,1);
unset($aus);
$i++;
}
}
//Ganze Liste
} elseif (isset($data)) {
$i = 1;
foreach($data as $date => $data1) {
$text = ‚‘;
foreach($data1 as $info) {
$text .= ‚‘.$info[‚title‘].‘; ';
}
$aus[‚LIST_I‘] = date(‚d.m.Y‘,$date);
$aus[‚LIST_D‘] = $arr_day[date(‚w‘,$date)];
$aus[‚LIST_T‘] = $text;
$class = ($i % 2) ? ‚Cnorm‘ : ‚Cmite‘ ;
$aus[‚LIST_CLASS‘] = ($i+1 == date(‚j‘) && $month == date(‚n‘) && $year == date(‚Y‘)) ? ‚Cdark‘ : $class;
$tpl->set_ar_out($aus,1);
unset($aus);
$i++;
}
} else {
$aus[‚LIST_I‘] = ‚-‘;
$aus[‚LIST_D‘] = ‚-‘;
$aus[‚LIST_T‘] = ‚-‘;
$aus[‚LIST_CLASS‘] = ‚Cnorm‘;
$tpl->set_ar_out($aus,1);
unset($aus);
}
}

kalender

$tpl->set(‚calender‘, getCalendar($month,$year, ‚index.php?kalender-v1-m{mon}-y{jahr}-d{tag}‘, ‚index.php?kalender-v‘.$view.‚-m{mon}-y{jahr}‘, $data));
$tpl->out(3);

$design->footer();
?>[/PHP]

das was ich meine ist ein bissl weiter wie die mitte!

MfG Marcel

[LEFT]Hallo,
vielleicht so?:'<a style="color: '.$color.';" ... '
mfg Bleistift
[/LEFT]

Nein, ist ja das gleiche wie sonst auch!

MfG Marcel

Ohne jetzt deinen ganzen Code gelesen zu haben…:
Wie speicherst du die Farbe?? Als RGB-Hex-Code oder als CSS-Farbname?? Bei ersterem musst du noch ein # vor den Wert stellen.

Stimmt schon was du sagst, aber die Farben werden einmal als ‚red‘ und als ‚green‘ gespeichert!

MfG Marcel

Also jetzt mit oder ohne Angabe des CSS-Attributs? Das ganze muss am Ende ja so aussehen:

style="color:Red"

ja ist es ja auch, aber da haut nicht hin, weil wenn ich das so mache, dann sind alle Links in der Farbe rot aber ich sage mal der Link 1 soll rot sein, der 2. grün, der dritte grün und der vierte wieder rot, und das funktioniert leider nicht!

MfG Marcel

Du holst erst schön für jede Zeile die Werte, überschreibst die dann aber gleich wieder mit denen der nächsten Zeile ohne sie weiterzuverarbeiten (auszugeben). So hast du am Ende natürlich nur Zugriff auf die Werte des letzten Datensatzes.

Kannste mir das Script so umschreiben das dies geht?

MfG Marcel

:stuck_out_tongue: Dein Skript ist ziemlich lang, aber ich zeig dir mal, wo du was ändern musst:
Hier durchläufst du die Einträge:
[PHP]
while ($row = db_fetch_assoc($result)) {
$t_id = $row[‚id‘];
$t_d = date(‚j‘, $row[‚time‘]);
$t_m = date(‚n‘, $row[‚time‘]);
$t_y = date(‚Y‘, $row[‚time‘]);
$color = $row[‚color‘];
$date = mktime(0,0,0,$t_m,$t_d,$t_y);
$data_id[$t_id] = $row;
$data[$date] = $row;
}
[/PHP]
…machst aber gar nichts mit denen! Du musst in der gleichen while-Schleife für jeden Eintrag deinen Text ausgeben.

naja das mache ich doch aber in der foreach() oder?

Ich kann deinen Gedankengang mit gleich text machen nicht folgen!

Marcel

Ich weiß grad nicht, welche foreach du meinst (zu faul zum nachschauen ;)), aber dafür müsstest du doch erstmal in dieser while-Schleife alle Einträge in einem Array speichern! Tust du aber nicht. Der Variable $color z.B. wird beim ersten Datensatz vll. Green zugewiesen, beim 2ten dan Red und sie behält schließlich den wert des letzten Datensatzes. Nun hast du nachher natürlich nur noch diesen einen Wert verfügbar, es sei denn, du gibst den Text gleich für jeden Datensatz aus.

also auslesen und dann als $variable 1 speicher, das wiederum in einem Array und dann durch foreach durchlaufen lassen!

Aber da ergibt sich das Problem, das ich ja nicht weiss, wieviel datensätze enthalten sind usw

Marcel

Vereinfachtes Beispiel:
Tabelle mit Feldern title und link:
[PHP]
$result = mysql_query(…);
while ($row = mysql_fetch_assoc($result))
{
$title = $row[„title“];
$link = $row[„link“];
echo „<a href="$link">$title“; //Hier für jedes Element ausgeben
}
[/PHP]

oO wird aber schwer dies umzubasteln!

Marcel

Drum mach ichs auch nich einfach so für dich… :smiley: