To jest tylko wersja do druku, aby zobaczyć pełną wersję tematu, kliknij TUTAJ
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

HTML/PHP/AJAX/JS - [php] generator

gaku - 14-12-2007, 15:13

picer,
Kod:
<img src="img/b_w.gif>"</td></tr></table>
coś tu nie pasuję :> ?

Widmo - 15-12-2007, 02:08

brawo! :)
gaku - 15-12-2007, 08:57

przyglądnąłem się temu kodowi jeszcze raz i często pojawiają się takie błędy. Popraw je
picer - 09-09-2008, 20:57

Witam ponownie :>
Jeśli mam taki ciąg znaków:
Cytat:
rnbqkbnr/pp1ppppp/6p1/8/8/8/PPPPPPPP/RNBQKBNR

I chciałbym to poupychać do 64 zmiennych począwszy od $a8, $b8,(...)$h8 aż do $a1, $b1,(...)$h1. Pragnę gdy jest literka aby zmienna przyjmowała jej wartość, natomiast gdy w ciągu znaków znajduje się cyfra oznaczała ona ilość kolejnych zmiennych o wartości np. 'none'
Wiemtylko , że mogę podzielić ten ciąg znaków na porcje które powinny się znaleźć w kolejnych liniach.
Kod:
list($linia[8],$linia[7], $linia[6], $linia[5], $linia[4], $linia[3], $linia[2], $linia[1]) = explode("/", $ciagznakow);

Nie wiem w jaki sposób nadać te wartości. Wiecie jak mi pomóc?

[ Dodano: 11-09-2008, 23:55 ]
To może inne pytanie. Jak podzielić wyraz na litery, tak aby każda litera miała swoją zmienną?

Seraphe - 12-09-2008, 13:58

picer napisał/a:
To może inne pytanie. Jak podzielić wyraz na litery, tak aby każda litera miała swoją zmienną?


Żeby podzielić używasz explode().

Co do przyporządkowania, zapewne trza foreach() użyć.

gaku - 12-09-2008, 15:03

teoretycznie jeżeli masz np
$zmienna="wartosc";
to
$zmienna[0] odpowiada pierwszej literce, $zmienna[1] odpowiada drugiej... i tak dalej

picer - 12-09-2008, 19:02

No tak ale jeśli moja zmienna to: $wyraz[1] a chcę przypisać nowym zmiennym każdą literkę?
explode() tu nie zadziała, bo nie ma separatora(delimiter)

gaku - 12-09-2008, 20:22

wybacz, ale możesz mi rozrysować to ?
Radek - 12-09-2008, 22:04

picer, co Ty chcesz osiagnac? do czego Ci to? Chcesz zapelniac pamiec przypisujac kazdej literce ze stringa zmienna? Bez sensu. Ale sprobuj tego:
Kod:

$string = 'asaakn3en32db3dbsdf3dvasdXSDHsdsd';
$alfa    = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
for ( $i = 0, $l = strlen($string); $i < $l; $i++ )
{
eval('$'.$alfa[$i].' = ' . $string[$i] . ';');
}
echo $a;
echo $b;

pisane na sucho.

picer - 13-09-2008, 02:18

Co chcę osiągnąć?
Skrypt przerabiający notację szachową FEN na obraz pozycji(ułożenia pionków).
Krótko z czym to sie je:
:arrow: Mamy tabele z kwardratów 8x8. :arrow: Kwadraty mają naprzemian dwa kolory: biały i czarny. :arrow: Jest 8 lini, które są oddzielane znakiem "/". :arrow: Jeśli odczytujemy literę to odpowiada ona jakiemuś obrazkowi pakowanemu do kwadratu, jeżeli natomiast odczytamy cyfrę, to oznacza ona ilość kolejnych pustych kwadratów.
Przykładowy zapis FEN: rnbq1bnr/2pppp2/8/7p/8/8/PPPPPPPP/RNBQKBNR

Póki coś to spłodziłem coś takiego:
Kod:

<?php
$kolor = 0;
$fen = 'rnbq1bnr/2pppp2/8/7p/8/8/PPPPPPPP/RNBQKBNR';

list($linia8, $linia7, $linia6, $linia5, $linia4, $linia3, $linia2, $linia1) = explode('/', $fen);
echo '<table border="0">';
for($nr = 8; $nr > 0; $nr--) //powtarza czynność dla każdej linii
{
echo '<tr>';
    for($nr2 = 7; $nr2 >= 0; $nr2--) //powtarza czynność dla każdej wartości z linii
    {
        if(is_numeric('$linia' . $nr . '[' . $nr2 . ']') and '$linia' . $nr . '[' . $nr2 . ']' > 0 and '$linia' . $nr . '[' . $nr2 . ']' <= 8) //jeśli wartość należy do zbioru liczb od 1 do 8
        {
            while('$linia' . $nr . '[' . $nr2 . ']' == 0)
            {
                if($kolor == 0)
                {
                echo '<td bgcolor="E8CEA5" width="32" height="32"></td>'; //białe
                $kolor++;
                }
                elseif($kolor == 1)
                {
                echo '<td bgcolor="A58B5A" width="32" height="32"></td>'; //czarne
                $kolor--;
                }
                else{break; echo'błąd';}
            '$linia' . $nr . '[' . $nr2 . ']' - 1;
            }
        }
        elseif(is_numeric('$linia' . $nr . '[' . $nr2 . ']') and '$linia' . $nr . '[' . $nr2 . ']' < 0 or '$linia' . $nr . '[' . $nr2 . ']' > 8) //jeśli wartość nie należy do zbioru od 1 do 8
        {
        break; echo 'błąd';
        }
        else //jeżeli wartść nie jest liczbą
        {
            if($kolor == 0)
            {
            echo '<td bgcolor="E8CEA5" width="32" height="32"><img src="img/' . '$linia' . $nr . '[' . $nr2 . ']' . '.gif"></td>'; //białe
            $kolor++;
            }
            elseif($kolor == 1)
            {
            echo '<td bgcolor="A58B5A" width="32" height="32"><img src="img/' . '$linia' . $nr . '[' . $nr2 . ']'    . '.gif"></td>'; //czarne
            $kolor--;
            }
            else{break; echo 'błąd';}
        }
    }

echo '</tr>';
}
echo '</table>';

Jak możecie się domyśleć to nie działa tak jak bym chciał. - Tworzy się tabelka a do każdego pola ładuje się <img src="img/' . '$linia' . $nr . '[' . $nr2 . ']' . '.gif">(w źródle widać np. <img src="img/$linia8[7].gif">)

Radek - 13-09-2008, 12:29

bo obejmujesz zmienne w ' i ' - a tak się nie robi.
Kod:
echo '<img src="img/' . $linia . $nr[$nr2] . '.gif" />';

picer - 14-09-2008, 22:02

no fakt...
Ale jak cały proces przejdzie wychodzi teraz tak:
Kod:
<img src="img/.gif">


[ Dodano: 15-09-2008, 00:22 ]
Ale jeśli wywołam przez echo np. $linia8[7] to pokaże mi odpowiednia wartość.

[ Dodano: 22-09-2008, 00:20 ]
Wiem co jest nie tak. Jeśli wywołuję:
Kod:
$linia . $nr . '[' . $nr2 . ']'

to wynik jest taki że: zmienna $linia jest pusta bo nie jest zdefiniowana.
Ja chcę wywoływać zmienną o postaci:
Kod:
$linia + $nr + [$nr2]

Czyli np. zmienną
Kod:
$linia4[2]

I moje pytanie teraz: jak zrobić żeby $linia nie oznaczało wartości zmiennej $linia tylko żeby było elementem w nazwie zmiennej.



Powered by phpBB modified by Przemo © 2003 phpBB Group