Autor Zpráva
panvicka
Profil
Ahoj, mám menší problém s programem, co má vyplivnout duhovou větu. Bohužel mi to vypíše jen nějakých část znaků té věty. Pomůžete prosím?


<form name="duha" method="GET" action="#">
<p>Zduhovaťet?: </p> 
<input type="text" name="duha" />
<input type="submit" name="OK" value="OK" />
</form>

<?php
if (isset($_GET["OK"])) {
if (!empty($_GET["duha"])) {
$veta = $_GET["duha"];

$r = 255;
$t = 0;
$s = 10;
$i = 0;
while ($s < 127 && $i < strlen($veta)) {
echo '<span style="color: rgb(';
echo $r;
echo ',';
echo $s;													// oranzova cervena rgb(255,127,0)
echo ',';												//$r = 255; $s = 127; $t = 0 
echo $t;
echo ')">'.$veta[$i].'</span>';
$s = $s + 20;
$i++;
}

while ($s > 127 && $i < strlen($veta) && $s < 255) {
echo '<span style="color: rgb(';
echo $r;
echo ',';
echo $s;
echo ',';												// zluta
echo $t;													// $r = 255; $s = 255; $t = 0;		
echo ')">'.$veta[$i].'</span>';
$s = $s + 20;
$i++;
}

while ($i < strlen($veta) && $r > 0) {
echo '<span style="color: rgb(';
echo $r;
echo ',';
echo $s;													// zeleny
echo ',';												// $r = 0; $s = 255; $t = 0; 
echo $t;
echo ')">'.$veta[$i].'</span>';
$i++;
$r = $r - 20;;
}

 while ($i < strlen($veta) && $t < 255 && $s > 0) {
echo '<span style="color: rgb(';
echo $r;
echo ',';												// modra
echo $s;													// $r = 0; $s = 0; $t = 255;	
echo ',';
echo $t;
echo ')">'.$veta[$i].'</span>';
$i++;
$t = $t + 20;
$s = $s - 20;
}

 while ($i < strlen($veta) && $r < 102) {
echo '<span style="color: rgb(';
echo $r;
echo ',';
echo $s;												// fialkova
echo ',';											// $r = 102; $s = 0; $t = 255	
echo $t;
echo ')">'.$veta[$i].'</span>';
$i++;
$r = $r + 20;
}

 while ($i < strlen($veta) && $r < 255) {
echo '<span style="color: rgb(';
echo $r;
echo ',';
echo $s;
echo ',';
echo $t;
echo ')">'.$veta[$i].'</span>';
$i++;
$r = $r + 20;
}



} else {echo "<p>Zapomněli jste napsat větu..asi..</p>";}

}




?>


Jinak to běží tady

Vím, že mi tam chybí ještě jeden cyklus, kterým se bude točit pořád dokola dokat $i < strhlen($veta), ale nejak se mi to tam nedari nacpat :(
Bubák
Profil
<span style="color: rgb(-25,170,120)">u</span>

Specifikace nedovoluje záporné hodnoty barvových složek.
panvicka
Profil
Jojo o tom vím, myslela jsem, že mi ta prasárna projde...je to jenom tím?
Kacko
Profil
panvicka:
$r = $r + 20;
$t = $t + 20;
...


Chyba je v te dvacicte(+ 20). Tohle cislo musis dopocitat pomerne s poctu znaku ve stringu, aby jsi tim pokryla celou siri duhy. Tedy:
$diff = round(560 / strlen($veta));

// ...bla bla bla...
while ($s < 127 && $i < strlen($veta)) {

// ..bla...

$s = $s + $diff;

// a vsude nahradit tu dvacitku za $diff..
panvicka
Profil
Jé děkuji, něco podobného mne napadlo, ale nevěděla jsem, jak to zrealizovat. Moc díky!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: