Wpisy otagowane ‘PHP’

Zabezpieczony: Optymalizacja przetwarzania tablicy w pętli

czwartek, 28 Październik 2010

Ten wpis jest zabezpieczony hasłem. Aby go zobaczyć, proszę wprowadzić poniżej swoje hasło:



Wprowadzenie do ADODB

wtorek, 22 Czerwiec 2010

Biblioteka ADODB jest warstwą abstrakcyjną pośredniczącą w komunikacji z bazą danych. Dzięki niej aplikacja może być przenoszona między wieloma różnymi systemami baz danych. ADODB obsługuje MySQL, PostgreSQL, Oracle, Interbase, Microsoft SQL Server, Access, FoxPro, Sybase, ODBC i ADO. Ułatwione jest też wysyłanie i odbieranie danych z bazy z poziomu skryptu PHP.

Tworzenie obiektu i nawiązywanie połączenia

Połączenie z bazą za pomocą biblioteki ADODB wygląda następująco:

include("adodb5/adodb.inc.php");
$db = NewADOConnection('mysql');
$db->Connect("127.0.0.1", "root", "haslo", "mojabaza");

W pierwszej linijce włączamy do skryptu bibliotekę ADODB. Ścieżka do pliku adodb.inc.php może być nieco inna – ważne, by wskazywała na wspomniany wcześniej plik. W drugiej linijce tworzymy obiekt komunikacji z bazą danych. Funkcja NewADOConnection() w argumencie przyjmuje symbol bazy danych. Ostatnia linijka łączy obiekt $db z rzeczywistą bazą danych. Metoda Connect pobiera kolejno argumenty: adres bazy danych, nazwa użytkownik, hasło i nazwa bazy danych.

Pobieranie i aktualizacja danych – metoda Execute()

$rs = $db->Execute('SELECT * FROM uzytkownik');
$rs = $db->Execute("UPDATE uzytkownik SET imie=$imie WHERE id=45;");

W metodzie Execute możemy umieścić dowolne zapytanie SQL. Jeżeli będzie to zapytanie pobierające dane, dane będą dostępne w zmiennej $rs

Pobieranie danych i wyświetlanie danych z bazy – metody: GetRow(), GetAll(), GetOne()

Istnieje znacznie wygodniejszy sposób pobierania danych z bazy niż metoda Execute(). Są to metody: GetRow(), GetAll() i GetOne(). W tych metodach umieszczamy tylko zapytania SELECT.

$rs = $db->GetAll('SELECT * FROM user WHERE id<40');
$rs = $db->GetRow('SELECT * FROM user WHERE id=1');
$rs = $db->GetOne('SELECT login FROM user WHERE id=1');

Metoda GetAll() zwraca wiele rekordów – wszystkie będące wynikiem zapytania. Wynik zapisywany jest w tablicy dwuwymiarowej $rs. Elementami tablicy głównej są tablice z polami jednego rekordu pobranego z bazy danych.
Metoda GetRow() zwraca jeden rekord w postaci tablicy jednowymiarowej. Jeżeli zapytanie zwróci więcej danych, zapisany zostanie jedynie pierwszy rekord.
Metoda GetOne() zwraca pojedynczą wartość. Jeżeli zapytanie zwróci więcej danych, zwrócona zostanie jedynie wartość pierwszej kolumny z pierwszego rekordu wyniku zapytania.

Biblioteka ADODB jest dużym ułatwieniem dla każdego programisty. 3 z 6 stron tworzonych na szkoleniu Zawodowy Webmaster wykorzystują ją do wszelkich operacji na bazie danych. Oprócz opisanych powyżej możliwości na szkoleniu wykorzystywane są również złączenia, podzapytania i funkcje agregujące.



Zabezpieczony: Odbieranie danych z formularza

czwartek, 4 Luty 2010

Ten wpis jest zabezpieczony hasłem. Aby go zobaczyć, proszę wprowadzić poniżej swoje hasło:



Jak używać funkcji round()

środa, 2 Grudzień 2009

Php ma wiele dosyć ciekawych funkcji. Dzisiaj postanowiłem opisać jedną z nich. Funkcja round() zwraca zaokrągloną wartość pierwszego argumentu z dokładnością do miejsca podaną w drugim argumencie. Drugi argument jest opcjonalny i domyślnie wynosi 0. Zaokrąglanie odbywa się zgodnie z regułami matematycznymi. Czyli:

<?php
echo round(13.4);
?>

wyświetli liczbę 13, a kod:

<?php
echo round(32.5);
?>

wyświetli liczbę 33. Podanie jawnie drugiego argumentu o wartości 0 nie wnosi niczego nowego w działaniu funkcji. Kod:

<?php
echo round(12.6, 0);
?>

wyświetli liczbę 13. Natomiast przy wartościach większych od zera, zaokrąglenia dokonuje się do części dziesiątych, setnych, tysięcznych…

<?php
echo round(3.976323, 2);
?>

Powyższy kod wyświetli nam 3.98. Przy wartościach mniejszych od zera drugiego argumentu, zaokrąglanie obywa się do dziesiątek, setek, tysięcy…

<?php
echo round(3421757, -3);
?>

Powyższy kod wyświetli 3422000



Podstawy wyświetlania danych w php

piątek, 27 Listopad 2009

Częstym problemem programistów (nie tylko początkujących) jest optymalizacja kodu. Tymczasem mało kto przejmuje się najprostszymi metodami odciążania serwera. Bo czy jest coś prostszego i bardziej powszechnego niż wyświetlanie tekstu przez php. W tym tekście zajmę się instrukcją echo, ale przedstawione zasady są dosyć uniwersalne i przez większość osób niestety zaniedbywane.

echo jest najprostszą instrukcją do wyświetlania tekstu. Można wywołać ją z tekstem przekazanym przez zmienną:

<?php
$tekst='Ala ma kota.';
echo $tekst;
?>

przez łańcuch znaków umieszczony w apostrofach:

<?php
echo 'Ala ma kota.';
?>

lub łańcuch znaków umieszczony w cudzysłowie:

<?php
echo "Ala ma kota.";
?>

Wszystkie trzy sposoby wyświetlą dokładnie to samo. Można też przekazać do instrukcji echo tekst razem ze zmiennymi.

<?php
$zwierz='kota';
echo "Ala ma $zwierz.<br />";
$zwierz='tygrysa';
echo "Ala ma $zwierz.";
?>

Efektem powyższego będą dwie linijki tekstu:

Ala ma kota.
Ala ma tygrysa.

Zmienne umieszczone w cudzysłowie zostaną zinterpretowane. Inaczej jest w przypadku apostrofów. Kod w postaci:

<?php
$zwierz='kota';
echo 'Ala ma $zwierz.<br />';
$zwierz='tygrysa';
echo 'Ala ma $zwierz.';
?>

da efekt nieco odmienny:

Ala ma $zwierz.
Ala ma $zwierz.

Czysty tekst lepiej jest umieszczać w apostrofach niż w cudzysłowie. Cała zawartość cudzysłowu jest przetwarzana przez php co bardziej obciąża serwer. Przy jednej linijce i małej liczbie odwiedzin można to pominąć, ale przy większym serwisie to już jest różnica. Umieszczając tekst ze zmiennymi najlepiej jest stosować apostrofy dla tekstu, a zmienne dołączać operatorem konkatenacji (czyli kropki).

<?php
$zwierz='kota';
echo 'Ala ma '.$zwierz.'.<br />';
$zwierz='tygrysa';
echo 'Ala ma '.$zwierz.'.';
?>

Tu efekt będzie zgodny z oczekiwaniami, a przy tym serwer mniej obciążony.

Ala ma kota.
Ala ma tygrysa.

Jeżeli już ktoś upiera się przy cudzysłowie, to nie ma powodu stosować operatora konkatenacji. Dwie pierwsze linie kodu będą dawały identyczny efekt i podobnie obciążają serwer. Trzecia linia jest bardziej przyjazna dla procesora.

<?php
echo "Zamówienie nr" . $numer . " zostało przyjęte przez " . $user;
echo "Zamówienie nr $numer zostało przyjęte przez $user";
echo 'Zamówienie nr' . $numer . ' zostało przyjęte przez ' . $user;
?>


Co robią i czym się różnią funkcje isset() i empty()

środa, 23 Wrzesień 2009

Wielu początkujących programistów php ma problemy z stosowaniem funkcji isset() oraz empty() – nie w każdej sytuacji potrafią jednoznacznie określić jaką wartość powinny te funkcje zwracać dla określonych argumentów. By wyjść im na przeciw postanowiłem zebrać najczęściej występujące przypadki i je wyjaśnić.

<?php
echo isset($a);
echo empty($a);
$a=NULL;
echo isset($a);
echo empty($a);
?>

Gdy zmienna $a nie istnieje lub ma wartość NULL, funkcja isset($a) zwróci wartość false, a funkcja empty($a) zwróci wartość true.

<?php
$a=true;
echo isset($a);
echo empty($a);
?>

Gdy zmienna $a ma wartość true, funkcja isset($a) zwróci wartość true, a funkcja empty($a) zwróci wartość false.

<?php
$a=false;
echo isset($a);
echo empty($a);
$a=0;
echo isset($a);
echo empty($a);
?>

Gdy zmienna $a ma wartość false lub 0, funkcje isset($a) i empty($a) zwrócą wartość true.

<?php
$a=-3;
echo isset($a);
echo empty($a);
$a=1.36;
echo isset($a);
echo empty($a);
?>

Gdy zmienna $a ma wartość liczbową różną od 0, to isset($a) zwróci wartość true, a funkcja empty($a) zwróci wartość false.

<?php
$a=”;
echo isset($a);
echo empty($a);
$a=’0′;
echo isset($a);
echo empty($a);
?>

Gdy zmienna $a jest pustym łańcuchem znaków lub łańcuchem składającym się z pojedynczego znaku ’0′, funkcje isset($a) i empty($a) zwrócą wartość true.

<?php
$a=’000′;
echo isset($a);
echo empty($a);
$a=’ ‘;
echo isset($a);
echo empty($a);
$a=’Ala ma 3/4 kota’;
echo isset($a);
echo empty($a);
?>

Gdy zmienna $a zawiera kilka znaków ’0′, lub zawiera znak spacji lub jest dowolnym innym ciągiem znaków, to isset($a) zwróci wartość true, a funkcja empty($a) zwróci wartość false.

<?php
$a=array();
echo isset($a);
echo empty($a);
?>

Gdy zmienna $a jest tablicą nie zawierającą żadnych elementów, funkcje isset($a) i empty($a) zwrócą wartość true.

<?php
$a=array(NULL);
echo isset($a);
echo empty($a);
$a=array(false);
echo isset($a);
echo empty($a);
$a=array(0);
echo isset($a);
echo empty($a);
$a=array(”);
echo isset($a);
echo empty($a);
?>

Gdy zmienna $a jest tablicą zawierającą puste elementy np. NULL, false, 0, pusty łańcuch znaków, to isset($a) zwróci wartość true, a funkcja empty($a) zwróci wartość false.

<?php
$a=array(‘kolor’ => ‘zielony’);
echo isset($a['kształt']);
echo empty($a['kształt']);
$a=array(‘krokodyl’, ‘żaba’, ‘hipopotam’);
echo isset($a[8]);
echo empty($a[8]);
class Test
{
var $a;
}
$a=new Test();
echo isset($a->a);
echo empty($a->a);
?>

Gdy odwołujemy się do nieistniejącego klucza lub indeksu tablicy albo do pustego pola obiektu, funkcja isset($a) zwróci wartość false, a funkcja empty($a) zwróci wartość true.

Dla wygody wszystkie rozpatrywane przypadki zebrałem w tabelce poniżej.

badany element isset() empty()
brak zmiennej false true
NULL false true
wartość logiczna true true false
wartość logiczna false true true
wartość liczbowa 0 true true
inna wartość liczbowa true false
pusty łańcuch znaków true true
łańcuch znaków zawierający zero true true
łańcuch znaków zawierający wiele zer true false
spacje true false
dowolny ciąg znaków true false
pusta tablica true true
tablica zawierająca puste elementy
(np. o wartościach NULL, false, 0, pusty łańcuch znaków)
true false
nieistniejący klucz tablicy false true
nieistniejący indeks tablicy false true
pole klasy bez podstawionej wartości false true