Sketchy
14.02.2008, 21:43:35
Witam,
Mam nadzieję, że moje pytanie kieruję do dobrego działu. Otóż.
Mam formularz na stronie w którym użytkownik wypełnia następujące pola: e-mail, opis, adres url.
Po dodaniu, widać go na liście gdzie każdy z dodanych wpisów jest wyświetlony jeden pod drugim.
Chciałbym aby każdy wpis dostawał losowo kolor z odpowiednio przygotowanej puli np. 6 kolorów.
Nie do końca wiem jak to wykonać, ale pomyślałem że mógłbym dodać do tabeli bazy danych pole "kolor", a podczas dodawania wpisu formularz miał by pole hidden pod które podpisany byłby losowy kolor pobierany z bazy.
Chciałbym wiedzieć jak to wykonać oraz czy może ktoś ma inne propozycje na to.
Podkreślę też, że chciałbym aby ten wyświetlany wpis z losowym kolorem pomimo wszystko miał stale przypisany kolor np. niebieski. (nie chodzi mi o losowy kolor za każdym razem wyświetlenia strony, tylko o to by każdy link miał losowo dobrany kolor.)
Przykład: Link czerwony, link niebieski, link szary, link pomarańczowy, link różowy, link czarwony, link niebieski, link niebieski, link czerwony, link szary, link pomarańczowy, link różowy... itd.)
Mam nadizeje że udało mi się konkretnie opisać o co mi chodzi.
Proszę o pomoc. Pozdrawiam i witam na forum wszystkich użytkowników
Grzyw
14.02.2008, 21:57:05
W tabeli dodaj pole kolor.
W skrypcie zapisującym userów przypisz im wartość pola poprzez funkcję rand()
<?php
$losowyKolor = rand(1
,6
); ?>
Wrzuć tę wartość do bazy.
Ilekroć wyświetlasz ten link, w skrypcie na początku zdefiniuj kolory choćby tak:
<?php
$kolor[1]='blue';
$kolor[2]='red';
$kolor[3]='black';
$kolor[4]='green';
$kolor[5]='purple';
$kolor[6]='navy';
?>
A w skrypcie dalej:
<a style="color:<?=$row->kolor?>" (...)>LINK</a>
Zakładam, że w $row->kolor trzymasz kolor z bazy.
MajareQ
14.02.2008, 22:11:40
Ew, możesz dać kolory do tablicy assoc i wybierać losowo z tablicy i przypisywać do linku...
Wieviór
14.02.2008, 22:17:29
Możesz jeszcze zrobić rand() i potem switch z case'ami.
<?
switch ($numer) {
case 1:
$kolor = 'red';
break;
case 2:
$kolor = 'green';
break;
case 3:
$kolor = 'blue';
break;
// itd.
}
?>
PS. Za każdym razem jak będziesz miał jakiś problem, opisuj go w taki właśnie sposób, to na pewno zawsze sporo osób Ci chętnie pomoże. Brawo! ;]
Grzyw
15.02.2008, 08:47:00
Wiewiór, celowo zastosowałem tablicę, nie case'a, bo instrukcja warunkowa jest znacznie mniej wydajna od zwykłej tablicy. Po co zmuszać parser do wykonywania jakichkolwiek warunków, skoro alternatywnie można wyciągnąć konkretny element z tablicy?
Wieviór
15.02.2008, 22:52:36
Cytat(Grzyw @ 15.02.2008, 10:47:00 )

Po co zmuszać parser do wykonywania jakichkolwiek warunków, skoro alternatywnie można wyciągnąć konkretny element z tablicy?
Słusznie, ale nowicjuszom lepiej dawać więcej, bo się zawsze czegoś więcej mogą nauczyć. Co nie zmienia faktu, że tablica lepsza ;]