Forum poświęcone PHP
Mój kod który wypisuje tabele według wybranej wartości kolumny w drugiej tabeli private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { string Polaczenie; Polaczenie = "Password=northwind;User ID=northwind;" + "Initial Catalog=Northwind;" + "Data Source=.\SQLEXPRESS"; SqlConnection objConn = new SqlConnection(Polaczenie); objConn.Open(); string idKlienta = (string)(((DataGridView)sender)[0, e.RowIndex].Value); SqlDataAdapter daOrders = new SqlDataAdapter("Select * from Orders where CustomerID" + idKlienta, objConn); DataSet dsNorthwind = new DataSet("Northwind"); daOrders.FillSchema(dsNorthwind, SchemaType.Source, "Orders"); daOrders.Fill(dsNorthwind, "Orders"); DataTable tabOrders; tabOrders = dsNorthwind.Tables["Orders"]; DataView widok = new DataView(); widok.Table = tabOrders; this.dataGridView2.DataSource = widok; } wyskakuje mi błąd jak wybieram następny wiersz przy daOrders.FillSchema(dsNorthwind, SchemaType.Source, "Orders"); treści An expression of non-boolean type specified in a context where a condition is expected, near 'SET'.
Tue,18 Nov 2008 11:47:00 +0100
Mam kontener z position: relative, a w nim 2 divy z position: absolute. Muszę coś zrobić, żeby kontener rozciągał się na wysokość taką, jaką osiągną divy w nim. Jak to można zrobić? #kontener { position: relative; width: 100%; } #main-text { position: absolute; left: 0px; right: 300px; padding: 20px 12px 20px 12px; } #sidebar { position: absolute; right: 0px; width: 300px; top: 0px; bottom: 0px; }
Tue,18 Nov 2008 11:45:28 +0100
mam takie zadanie do zrobienia: (...) zdefiniuj klasę zagnieżdżoną Zalacznik o polu typ typu string i next typu wskaźnik do Zalacznik, następnie w klasie Wiadomosc dodaj pole zalaczniki (wskaźnik do Zalacznik), które będzie listą zalączników do wiadomości. (...) zdefiniuj metodę wypiszZalaczniki() przebiegającą listę i wypisującą kolejne jej elementy, wykorzystaj ją w metodzie wypisz() (....) i mam już klasę Zalacznik w klasie Wiadomosc, itp itd. (...) class Wiadomosc{ (...) class Zalacznik { (...) private: Zalacznik *next; (...) } (...) Zalacznik *zalaczniki // niby ma być to lista zalacznikow (...) } ja nie bardzo się łapie czy to tak ma wyglądać :/ oczywiście nie chce się to kompilować a błędu nie umiem rozwiązać ;/ ;/ mógłyb mi ktoś podsunąć jak należy to rozwiąząć? +ta funkcja co przebiega i wypisuje załączniki... //edit w konstruktorze klasy Wiadomosc dodałem coś takiego: zalaczniki=new Zalacznik; zalaczniki=Zalacznik::next ale znowuż wywala sie w klasie Zalacznik :/ // edit a czy nie lepiej było by zrobić coś a'la kolejka na wskaźnikach ?? i potem ją tylko wsadzić w te klasy?
Tue,18 Nov 2008 11:29:50 +0100
Jak połączyć button z tym że wybieram wiersz w DataGridView? Musze stworzyć okienko które by pokazywało zawartość całej zaznaczonej przeze mnie linijki w Datagridzie.
Tue,18 Nov 2008 11:22:01 +0100
cześć mam kod do edycji "komórek" w listview chyba. ale jest on zapisany w C++ jak można go zmienić na delphi ?? //--------------------------------------------------------------------------- void __fastcall TForm1::ListView1SelectItem(TObject *Sender, TListItem *Item, bool Selected) { Edit1->Text = Item->Caption; // pierwsze kolumna Edit2->Text = Item->SubItems->Strings[0]; // druga kolumna Edit3->Text = Item->SubItems->Strings[1]; // trzecia kolumna } //---------------------------------------------------------------------------- w tym ze ja mam 6 kolumn
Tue,18 Nov 2008 11:14:23 +0100
Rozdział 14. Wyrażenia
Wyrażenia są naważniejszymi elementami składowymi PHP. W PHP prawie wszystko co napiszesz jest wyrażeniem. Najprostszą i najdokładniejszą definicją wyrażenia jest "wszystko co ma wartość".
Najbardziej podstawową formą wyrażeń są stałe i zmienna. Jeśli napiszesz "$a = 5" przypisujesz '5' do '$a'. '5' ma oczywiście wartość 5, lub innymi słowy '5' jest wyrażeniem o wartości 5 (w tym przypadku, '5' jest stałą liczbą całkowitą).
Po tym przypisaniu możesz się spodziwać, że wartością $a jest także 5, więc jeśli napiszesz "$b = $a" możesz się spodziewać, że będzie to równoznaczne z napisaniem "$b = 5". Innymi słowy, $a jest wyrażeniem o wartości 5. Jeśli wszystko działa prawidłowo, wszystko będzie się dziać tak jak napisano wyżej.
Trochę bardziej złożonymi przykładami wyrażeń są funkcje. Przyjrzyj się poniższej funkcji:
Zakładając że oswoiłeś się z koncepcją funkcji (jeśli nie, przejrzyj najpierw rozdział o funkcjach), możesz założyć, że napisanie $c = foo() jest równoznaczne z napisaniem $c = 5, i masz racię. Funkcje są wyrażeniami o wartości którą zwracają. Ponieważ foo() zwraca 5, wartością wyrażenia 'foo()' jest 5. Zazwyczaj funkcje nie zwracają statycznej wartości, ale coś obliczają.
Oczywiście wartości w PHP nie muszą być liczbami całkowitymi, i bardzo często nie są nimi. PHP obsługuje 3 skalarne warotści danych: wartości całkowite (integer), wartości rzeczywiste (float i ciągi znaków (string) (wartości skalarne to takie, których nie możesz 'rozbić' na mniejsze kawałki, w przeciwieństwie do np. tablic). PHP obsługuje także dwa złożone (nieskalarne) typy danych: tablice i obiekty. Każdą z tych wartości można przypisać do zmiennych lub może być zwrócona przez funkcję.
PHP rozwija wyrażenia znacznie bardziej, podobnie jak wiele innych języków programowania. PHP jest językiem zorientowanym na wyrażenia, co oznacza że prawie wszystko jest wyrażeniem. Przyjrzyj się przykładowi który już analizowaliśmy, '$a = 5'. Łatwo jest zauważyć, że są tu dwie wartości. Wartość stałej całkowitej '5', a także wartość $a, która zostanie zamieniona na 5. Ale tak naprawdę jest tu jeszcze jedna wartość, którą jest wartość operacji przypisania. Przypisanie przyjmuje wartość przypisywanej wartości, w tym przypadku 5. W praktyce oznacza to, że '$a = 5', niezależnie co to robi, jest wyrażeniem o wartości 5. Wynika z tego, że napisanie '$b = ($a = 5)' jest równoznaczne napisaniu '$a = 5; $b = 5;' (średnik oznacza koniec instrukcji). Ponieważ przypisania są przetwarzane od prawej do lewej, możesz także napisać '$b = $a = 5'.
Kolejnym dobrym przykładem orientacji wyrażeniowej jest pre- i postinkrementacja i dekrementacja. Użytkownicy PHP i wielu innych języków mogą być już zaznajomieni z notacją zmienna++ i zmienna--. Są to operatory inkrementacji i dekrementacji. W PHP/FI 2 instrukcja '$a++' nie ma wartości (nie jest wyrażeniem), więc nie możesz jej przypisać lub użyć w jakikolwiek sposób. PHP rozszerza możliwości inkrementacji/dekrementacji robiąc także z nich wyrażenia, podobnie jak w C. W PHP, tak jak w C, sa dwa typy inkrementacji: preinkrementacja i postinkrementacja. I pre- i postinkrementacja zwiększają wartość zmiannej, więc efekt w stosunku do zmiennej jest taki sam. Różnica jest w wartości wyrażenia inkrementacji. Preinkrementacja, która jest oznaczana jako '++$zmienna', zwraca zwiększoną wartość (PHP zwiększa zmienną przed odczytaniem wartości, dlatego nazywa się to 'pre-inkrementacją'). Postinkrementacja, która jest oznaczana jako '$zmienna++', zwraca orginalną wartość $zmienna przed zwiększeniem jej wartości (PHP zwiększa wartość po odczytaniu jej wartości, stąd nazwa 'post-inkrementacja').
Popularnym typem wyrażeń są porównania. Wyrażenia te zwracają wartość FALSE lub TRUE. PHP obsługuje > (większy), >= (większy lub równy), == (równy), != (nie równy), < (mniejszy) i <= (mniejszy lub równy). Język obsługuje także zbiór operatorów ścisłego porównania: === (równy i tego samego typu) i !== (nie równy lub różnego typu). Wyrażenia te są powszechnie używane przy sprawdzaniu warunków, jak na przykład instrukcje if.
Ostatnim przykładem, którym będziemy się tu zajmować są połączone wyrażenia operacji i przypisania. Już wiesz, że jeśli chcesz zwiększyć wartość zmiennej $a o 1, możesz po prostu napisać '$a++' lub '++$a'. Ale co jeśli chcesz dodać do niej więcej niż jeden, na przykład 3? Mógłbyś napisać wielokrotnie '$a++', ale nie jest to sposób ani efektywny ani wygodny. Częściej spotykane jest używanie instrukcji '$a = $a + 3'. '$a + 4' zwraca wartość zmiennej $a plus 3, która jest przypisywana z powrotem do $a, co oznacza zwiększenie wartości zmiennej $a o 3. W PHP, tak jak kilku innych językach jak na przykład C, możesz napisać to krócej, co z czasem stanie się także bardziej przejrzyste i łatwiejsze do zrozumienia. Dodanie 4 do bieżącej wartości $a może być zapisane jako '$a += 4'. Oznacza to dokładnie "weź wartość $a, dodaj do niej 3 i przypisz ją z powrotem do $a". Oprócz bycia krótszą i bardziej przejrzystą, instrukcja ta jest także szybsza w wykonaniu. Wartość '$a += 5', tak jak wartość zwykłego przypisania, jest przypisywaną wartością. Zauważ, że NIE jest to 4, ale połączona warotść $a i 4 (jest to wartość która jest przypisywana do $a). Dowolne dwuoperandowe operatory mogą być użyte w trybie operacji-przypisania, na przykład '$a -= 5' (odejmij 5 od wartości $a), '$b *= 7' (pomnóż wartość $b przez 7), itp.
Jest jeszcze jedno wyrażenie, które może się wydać dziwne jeśli nie widziałeś go w innych językac, trójoperandowy operator warunkowy:
Jeśli wartością pierwszego podwyrażenia jest TRUE (rózna od zera), to zwracany jest drugie podwyrażanie, i jest to wynik wyrażenia warunkowego. W przeciwnym wypadku, zwracana jest wartość trzeciego podwyrażenia.
Poniższy przykład powinien pomóc w lepszym zrozumieniu pre- i postinkrementacji i ogólnie koncepcji wyrażeń:
<?php |
Na początku rozdziału powiedzieliśmy, że będziemy opisywać różne typy instrukcji, i tak jak obiecywaliśmy, wyrażenia mogą być instrukcjami. Jednakże nie każde wyrażenie jest instrukcją. Niektóre wyrażenia mogą być instrukcjami. Ten przypadek ma postać 'wyrażenie' ';', czyli wyrażenie a po nim średnik. W '$b=$a=5;', $a=5 jest poprawnym wyrażeniem, ale nie jest instrukcją. Jednakże '$b=$a=$b;' jest poprawną intrukcją.
Ostatnią rzeczą wartą uwagi jest wartość prawdy wyrażeń. W wielu przypadkach, głównie przy sprawdzaniu warunkow i w pętlach, nie interesuje cię wartość wyrażenia, ale tylko czy oznacza TRUE czy FALSE. Stałe TRUE i FALSE (niezależne od wielkości znaków) są dwiema możliwymi wartościami logicznymi. Kiedy to konieczne, wyrażenie jest automatycznie konwertowane na typ boolean. Zobacz rozdział o rzutowaniu typów jeśli interesują cię szczegóły jak to jest przeprowadzane.
PHP dostarcza pełnej i potężnej implementacji wyrażeń i całkowita ich
dokumentacja przekracza ramy tego podręcznika. Powyższe przykłady powinny
dać ci ogólne pojęcie czym są wyrażenia i jak możesz konstruować przydatne
wyrażenia. Przez resztę podręcznika będziemy pisać
expr aby oznaczyć dowolne poprawne wyrażenie
PHP.
| Poprzedni | Spis treści | Następny |
| Magiczne stałe | Początek rozdziału | Operatory |