ďťż
 
Jak sprytnie =?ISO-8859-2?Q?skleja=E6_zapytania=3F?= ďťż
 
Jak sprytnie =?ISO-8859-2?Q?skleja=E6_zapytania=3F?=
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Jak sprytnie =?ISO-8859-2?Q?skleja=E6_zapytania=3F?=



Robert Niestroj - 11-05-2007 12:28
Jak sprytnie =?ISO-8859-2?Q?skleja=E6_zapytania=3F?=
  Witam,
jestem początkujący w PHP i bazach. Na projekt do szkoły muszę stworzyć
aplikację kliencką w PHP kontaktującą się z Oracle. No i mam np. stronę,
gdzie dodaję sobie jakieś dane do tabeli poprzez INSERT. Kod tutaj:
http://rafb.net/p/KJm1in40.html
Problem jest taki: NOT NULLe muszą być wypełnione, natomiast pozostałe
pola nie są konieczne no i wiadomo, że tworzy to przy dużej ilości
atrybutów niekoniecznych dużo przypadków. Napisałem sobie ten skrypt i
działa tak jak ma. Może jednak mi ktoś doradzi, czy da się takie
sklejanie zapytań napisać bardziej sprytnie, inteligentniej, lepiej,
łatwiej. Jeśli tak, to proszę o wskazówki jak :-) Dzięki za pomoc :-)

PS. /Sorry jak post poszedł dwa razy, za pierwszym razem coś poszło nie
tak chyba./

--
[ : Robert Niestroj ::::::: member of rally.pl te@m OPOLE :::::::::::: ]
[ : [JID: rniestroj@jabberpl.org] : [GG: 1734202] : [ICQ: 162506105] : ]
[ : ::::: [ http://firefox.pl ] :::::: [ http://rallyonline.pl ] ::::: ]
[ : "W porównaniu z nami Formuła 1 to przedszkole", Colin McRae 2001 : ]





Kijan - 11-05-2007 12:28

  A może warto pomyśleć o IMPLODE ?
wrzucać wartośći do tablicy i potem "sprytnie połączyć implode ?

--
Pozdrawiam Kijan.

sprawdź na którym miejscu jest Twoja strona WWW
http://google.kijan.com




adasiek - 11-05-2007 12:28

  Robert Niestroj <ODPOWIADAJACUSUNTOrniestroj@go2.pl.invalid> wrote in
news:f08khk.3cc.1@rallyonline.pl:

> http://rafb.net/p/KJm1in40.html
[...]
> sklejanie zapytań napisać bardziej sprytnie, inteligentniej, lepiej,
> łatwiej. Jeśli tak, to proszę o wskazówki jak :-) Dzięki za pomoc :-)

poza tym, ze nie sprawdzasz w zaden sposob, co przychodzi od klienta ;-)

$mapa = array(
array('nazwa_atrybutu_z_POST1', 'nazwa_atrybytu_z_SQL1'),
array('nazwa_atrybutu_z_POST2', 'nazwa_atrybytu_z_SQL2'),
array('nazwa_atrybutu_z_POST3', 'nazwa_atrybytu_z_SQL3')
);

$wartosci=array()
foreach ($mapa as $mapowanie) {
if (isset($_POST[$mapowanie[0])) if ($_POST[$mapowanie[0]]!=='') {
$przefilrowane=przefiltruj($_POST[$mapowanie[0]]);
$wartosci[]=array($mapowanie[1],$przefiltowane);
};
};

$sql='INSERT INTO nazwa tabeli (';
foreach ($kolumny as $wpis) $sql.=$wpis[0].',';
// obcninam ostatni przecinek;
$sql=substr($sql,0,strlen($sql)-1);
$sql.=') VALUES (';
foreach ($kolumny as $wpis) {
// tutaj wartoby do zmiennej $wpis dodac jeszcze info, czy wartosc
// jest liczbowa czy numeryczna i ewentualnie dodawac lub nie >'<;
$sql.='\''.$wpis[1].'\',';
};
// obcninam ostatni przecinek;
$sql=substr($sql,0,strlen($sql)-1);
$sql.=')';

ZALETY:
+ fragmenty kodu (prawie) sie nie powtarzaja

WADY:
- jest pelno klas do obslugi bazy danych, po co pisac wlasny kod?

pzdrv;
adas;




Robert Niestroj - 11-05-2007 12:28

  It was the 2007-04-19 21:20, when adasiek wrote :
> poza tym, ze nie sprawdzasz w zaden sposob, co przychodzi od klienta ;-)

Rozumiem chodzi o sprawdzenie isset() i o tą linię:
> if (isset($_POST[$mapowanie[0])) if ($_POST[$mapowanie[0]]!=='')
?

Pierwszy if sprawdza czy "coś przyszło od klienta" a drugi if czy coś
tam sensownego jest? Dlaczego nie wystarcza sam drugi if?

> $wartosci=array()
> foreach ($mapa as $mapowanie) {
> if (isset($_POST[$mapowanie[0])) if ($_POST[$mapowanie[0]]!=='') {
> $przefilrowane=przefiltruj($_POST[$mapowanie[0]]);
> $wartosci[]=array($mapowanie[1],$przefiltowane);
> };
> };

Co ma robić funkcja przefiltruj()? Co ma być w zmiennej mapowanie?

Resztę muszę dogłębniej przeanalizować ;-)

> WADY:
> - jest pelno klas do obslugi bazy danych, po co pisac wlasny kod?

Nie rozumiem dlaczego to jest wada?
Z jednej strony chciałbym wiedzieć jak co działa. Z drugiej strony
możesz zapodać jakieś hasło, link do jakiejś takiej klasy dla beginnerów? ;)

--
[ : Robert Niestroj ::::::: member of rally.pl te@m OPOLE :::::::::::: ]
[ : [JID: rniestroj@jabberpl.org] : [GG: 1734202] : [ICQ: 162506105] : ]
[ : ::::: [ http://firefox.pl ] :::::: [ http://rallyonline.pl ] ::::: ]
[ : "W porównaniu z nami Formuła 1 to przedszkole", Colin McRae 2001 : ]





Robert Niestroj - 11-05-2007 12:28

  It was the 2007-04-19 21:08, when Kijan wrote :
> A może warto pomyśleć o IMPLODE ?
> wrzucać wartośći do tablicy i potem "sprytnie połączyć implode ?

OK, czaję, może się przydać :-)

--
[ : Robert Niestroj ::::::: member of rally.pl te@m OPOLE :::::::::::: ]
[ : [JID: rniestroj@jabberpl.org] : [GG: 1734202] : [ICQ: 162506105] : ]
[ : ::::: [ http://firefox.pl ] :::::: [ http://rallyonline.pl ] ::::: ]
[ : "W porównaniu z nami Formuła 1 to przedszkole", Colin McRae 2001 : ]




adasiek - 11-05-2007 12:28

  Robert Niestroj <ODPOWIADAJACUSUNTOrniestroj@go2.pl.invalid> wrote in
news:f08o3s.20o.1@rallyonline.pl:

> It was the 2007-04-19 21:20, when adasiek wrote :
>> poza tym, ze nie sprawdzasz w zaden sposob, co przychodzi od klienta
>> ;-)
>
> Rozumiem chodzi o sprawdzenie isset() i o tą linię:
> > if (isset($_POST[$mapowanie[0])) if ($_POST[$mapowanie[0]]!=='')
> ?
>
> Pierwszy if sprawdza czy "coś przyszło od klienta" a drugi if czy coś
> tam sensownego jest? Dlaczego nie wystarcza sam drugi if?

nie, to nie sluzy do tego; to sluzy do sprawdzenia czy przyszlo dane
pole formularza; jak sprawdzasz wartosc zmiennej, ktorej nie ma, to
dostajesz taki warning: "Index [nazwa] unset in array $_POST";

>
>> $wartosci=array()
>> foreach ($mapa as $mapowanie) {
>> if (isset($_POST[$mapowanie[0])) if
>> ($_POST[$mapowanie[0]]!=='') {
>> $przefilrowane=przefiltruj($_POST[$mapowanie[0]]);
>> $wartosci[]=array($mapowanie[1],$przefiltowane);
>> };
>> };
>
> Co ma robić funkcja przefiltruj()? Co ma być w zmiennej mapowanie?

przywolana funkcja sprawdza czy klient nie podeslal w formularzu jakiegos
SQL injection a jezeli tak, to je wyrzuca; poczytaj o SQL Injection;

jezeli nie wiesz co ma byc w zmiennej $mapowanie, to powinienes sie
udac na kurs "Podstawy PHP" lub zajrzec do podrecznika funkcji foreach;

> Resztę muszę dogłębniej przeanalizować ;-)

zgodnie z tym, co napisal Kijan, mozna zastosowac funkcje implode
zamiast petli foreach do tworzenia wynikowego lancucha; tylko wymaga
to napisania uzytych tablic PHP "inaczej";

adas;




orcus - 11-05-2007 12:28

  On Thu, 19 Apr 2007 20:02:26 +0000, adasiek wrote:

>> Pierwszy if sprawdza czy "coś przyszło od klienta" a drugi if czy coś
>> tam sensownego jest? Dlaczego nie wystarcza sam drugi if?

tak mnie meczy - a dleczgo nie polaczyles tego && po prostu?

--
Pozdrawiam
orcus

..: IE służy do przeglądania internetu z twojego komputera i na odwrót :.




adasiek - 11-05-2007 12:28

  orcus <orcus@ekoterm.N05P4M.net> wrote in
news:pan.2007.04.19.20.02.44.8222@ekoterm.N05P4M.n et:

> On Thu, 19 Apr 2007 20:02:26 +0000, adasiek wrote:
>
>>> Pierwszy if sprawdza czy "coś przyszło od klienta" a drugi if czy coś
>>> tam sensownego jest? Dlaczego nie wystarcza sam drugi if?
>
> tak mnie meczy - a dleczgo nie polaczyles tego && po prostu?
>

http://pl2.php.net/manual/pl/languag...rs.logical.php

dlatego, ze taka konstukcja - w moim (byc moze mylnym) przekonaniu -
spowoduje sprawdzenie obu warunkow niezaleznie od wartosci logicznej
tego pierwszego; wiec jesli zmiennej nie bedzie, to drugi warunek
(polaczony &&) i tak wywali warning; moze tak nie jest ;-) nie umiem
znalezc odpowiedzi na to w dokumentacji;

adas;




andreux - 11-05-2007 12:28

  adasiek napisał(a):
> dlatego, ze taka konstukcja - w moim (byc moze mylnym) przekonaniu -
> spowoduje sprawdzenie obu warunkow niezaleznie od wartosci logicznej
> tego pierwszego; wiec jesli zmiennej nie bedzie, to drugi warunek
> (polaczony &&) i tak wywali warning; moze tak nie jest ;-) nie umiem
> znalezc odpowiedzi na to w dokumentacji;

<?php

error_reporting(E_ALL);

$a = 3;

if( $a > 4 && ($a = 6));
echo $a;

if( $a < 4 && ( $a = 6));
echo $a;

// inaczej
if( $a < 4 && $b > 3);
if( $a > 4 && $b > 3); // generuje notice bo lewa==true

?>

pozdrawiam,
Andreux




orcus - 11-05-2007 12:28

  On Thu, 19 Apr 2007 20:25:48 +0000, adasiek wrote:

>> tak mnie meczy - a dleczgo nie polaczyles tego && po prostu?

> dlatego, ze taka konstukcja - w moim (byc moze mylnym) przekonaniu -
> spowoduje sprawdzenie obu warunkow niezaleznie od wartosci logicznej

tak tez myslalem - juz w C wprowadzono zasade ze wyrazenia logiczne liczy
sie tylko tak dlugo jak nie mozna zwrocic wyniku co w polaczeniu z
"evaluowaniem" wyrazen moze dawac ciekawe efekty.

czyli dla || jak pierwszy warunek jest 1 to drugi nie jest sprawdzany a
dla && jak pierwszy jest 0 to drugi nie jest sprawdzany.

--
Pozdrawiam
orcus

..: IE służy do przeglądania internetu z twojego komputera i na odwrót :.




adasiek - 11-05-2007 12:28

  orcus <orcus@ekoterm.N05P4M.net> wrote in
news:pan.2007.04.19.20.44.15.165869@ekoterm.N05P4M .net:

> On Thu, 19 Apr 2007 20:25:48 +0000, adasiek wrote:
>
>>> tak mnie meczy - a dleczgo nie polaczyles tego && po prostu?
>
>> dlatego, ze taka konstukcja - w moim (byc moze mylnym) przekonaniu -
>> spowoduje sprawdzenie obu warunkow niezaleznie od wartosci logicznej
>
> tak tez myslalem - juz w C wprowadzono zasade ze wyrazenia logiczne liczy
> sie tylko tak dlugo jak nie mozna zwrocic wyniku co w polaczeniu z
> "evaluowaniem" wyrazen moze dawac ciekawe efekty.

nie obawiasz sie, ze to sie moze zmienic w blizej nieokreslonej przyszlosci
- albo np. byc roznie interpretowane przez rozne interpretery jezyka PHP?
czy moze jest to fragmentem standardu jezyka?

pzdrv;
adas;




Borys =?iso-8859-2?Q?Pogore=B3o?= - 11-05-2007 12:28

  Dnia Thu, 19 Apr 2007 20:57:40 +0000 (UTC), adasiek napisał(a):

> nie obawiasz sie, ze to sie moze zmienic w blizej nieokreslonej przyszlosci
> - albo np. byc roznie interpretowane przez rozne interpretery jezyka PHP?
> czy moze jest to fragmentem standardu jezyka?

To akurat jest jedna z zasad przy budowaniu efektywnych kompilatorów /
parserów - po co tracić moc obliczeniową na niepotrzebne czynności? Nie
powinno się to nigdy zmienić.

--
Borys Pogoreło
borys(#)leszno,edu,pl




orcus - 11-05-2007 12:28

  On Thu, 19 Apr 2007 20:57:40 +0000, adasiek wrote:

> nie obawiasz sie, ze to sie moze zmienic w blizej nieokreslonej przyszlosci
> - albo np. byc roznie interpretowane przez rozne interpretery jezyka PHP?
> czy moze jest to fragmentem standardu jezyka?

to sie nie zmienilo co najmniej od 1972 roku(nie wiem jak jezyki przed C)
i prawodopodobienstwo ze sie zmieni jest dla mnie takie same jak to ze
ktos zmieni "echo" na cos innego.

--
Pozdrawiam
orcus

..: IE służy do przeglądania internetu z twojego komputera i na odwrót :.




Miroo - 11-05-2007 12:28
=?iso-8859-2?Q?Re:_Jak_sprytnie_skleja=E6_zapytania=3F?=
  Użytkownik "Borys Pogoreło" <borys@pl.edu.leszno> napisał w wiadomości
news:1knaq0kkgrap$.1cn574zmv50q6.dlg@40tude.net...
> Dnia Thu, 19 Apr 2007 20:57:40 +0000 (UTC), adasiek napisał(a):
>
>> nie obawiasz sie, ze to sie moze zmienic w blizej nieokreslonej
>> przyszlosci
>> - albo np. byc roznie interpretowane przez rozne interpretery jezyka PHP?
>> czy moze jest to fragmentem standardu jezyka?
>
> To akurat jest jedna z zasad przy budowaniu efektywnych kompilatorów /
> parserów - po co tracić moc obliczeniową na niepotrzebne czynności? Nie
> powinno się to nigdy zmienić.

No cóż, ja piszę zazwyczaj tak jak adasiek.
Dlaczego? Bo kiedyś wbrew temu co było w dokumentacji
w warunku złożonym sprawdzany był kolejny warunek i wszystko
się sypało. Dlaczego tak się robiło? Nie wiem - może optymalizator
zgłupiał? Było to w C#, a nie PHP.
Druga sprawa - w Delphi jest w opcjach projektu "Complete boolean eval"
opisana w helpie nastepująco: "This means that every operand of
a Boolean expression built from the and and or operators is
guaranteed to be evaluated, even when the result of the
entire expression is already known."
Nigdy nie wiesz co w opcjach poustawia sobie osoba korzystająca
z twojego kodu (nawet ty :> ) więc bezpieczniej rozbijać
warunki tego typu.

Oczywiście, żeby nie było niedomówień - chodzi tylko o sytuacje,
gdy kolejny warunek się wykłada jeśli pierwszy (nie) jest spełniony,
a nie o wszystkie złożone warunki :)
--
Pozdrawiam
Miroo (http://miroo.ovh.org)




Wojciech Bancer - 11-05-2007 12:28

  adasiek napisał(a):

[...]

> http://pl2.php.net/manual/pl/languag...rs.logical.php

> dlatego, ze taka konstukcja - w moim (byc moze mylnym) przekonaniu -
> spowoduje sprawdzenie obu warunkow niezaleznie od wartosci logicznej
> tego pierwszego;

Nie. Tak się dzieje w przypadku ||, nie &&.

> wiec jesli zmiennej nie bedzie, to drugi warunek (polaczony &&)
> i tak wywali warning; moze tak nie jest ;-) nie umiem znalezc
> odpowiedzi na to w dokumentacji;

To raczej wynika z budowy kompilatorów. Bez sensu byłoby sprawdzać
dwa warunki, skoro juz po pierwszym jest właściwa decyzja. :)

--
Wojciech Bancer




Wojciech Bancer - 11-05-2007 12:28

  Miroo napisał(a):

[...]

>> To akurat jest jedna z zasad przy budowaniu efektywnych kompilatorów /
>> parserów - po co tracić moc obliczeniową na niepotrzebne czynności? Nie
>> powinno się to nigdy zmienić.

> No cóż, ja piszę zazwyczaj tak jak adasiek.
> Dlaczego? Bo kiedyś wbrew temu co było w dokumentacji
> w warunku złożonym sprawdzany był kolejny warunek i wszystko
> się sypało. Dlaczego tak się robiło? Nie wiem - może optymalizator
> zgłupiał? Było to w C#, a nie PHP.

Optymalizator nie głupieje. Co najwyżej człowiek nie wie czasem który
operator ma wyższy priorytet. :)

[...]

--
Wojciech Bancer




Miroo - 11-05-2007 12:28
=?iso-8859-2?Q?Re:_Jak_sprytnie_skleja=E6_zapytania=3F?=
  Użytkownik "Wojciech Bancer" <proteus@post.pl> napisał w wiadomości
news:slrnf2gqvi.d71.proteus@ender.elsat.net.pl...

>> No cóż, ja piszę zazwyczaj tak jak adasiek.
>> Dlaczego? Bo kiedyś wbrew temu co było w dokumentacji
>> w warunku złożonym sprawdzany był kolejny warunek i wszystko
>> się sypało. Dlaczego tak się robiło? Nie wiem - może optymalizator
>> zgłupiał? Było to w C#, a nie PHP.
>
> Optymalizator nie głupieje. Co najwyżej człowiek nie wie czasem który
> operator ma wyższy priorytet. :)

Rozwiń swoją myśl..
Dodam, że dla czytelności kodu i świętego spokoju nie
oszczędzam na nawiasach w wyrażeniach warunkowych.
--
Pozdrawiam
Miroo (http://miroo.ovh.org)




Wojciech Bancer - 11-05-2007 12:28

  Miroo napisał(a):

>>> się sypało. Dlaczego tak się robiło? Nie wiem - może optymalizator
>>> zgłupiał? Było to w C#, a nie PHP.
>> Optymalizator nie głupieje. Co najwyżej człowiek nie wie czasem który
>> operator ma wyższy priorytet. :)

> Rozwiń swoją myśl..
> Dodam, że dla czytelności kodu i świętego spokoju nie
> oszczędzam na nawiasach w wyrażeniach warunkowych.

Rozwinę. Jeszcze nie widziałem i nie słyszałem o przypadku, w którym
kompilator stosujący składnię C popełnił błąd przy analizowaniu
operatorów logicznych. Zawsze błąd powodował użytkownik, który
pojechał gdzieś zbyt dużą / zbyt małą liczbą nawiasów.

--
Wojciech Bancer




=?ISO-8859-2?Q?=A3ukasz_Filut?= - 11-05-2007 12:28

  Wojciech Bancer pisze:
> Miroo napisał(a):
>
>>>> się sypało. Dlaczego tak się robiło? Nie wiem - może optymalizator
>>>> zgłupiał? Było to w C#, a nie PHP.
>>> Optymalizator nie głupieje. Co najwyżej człowiek nie wie czasem który
>>> operator ma wyższy priorytet. :)
>
>> Rozwiń swoją myśl..
>> Dodam, że dla czytelności kodu i świętego spokoju nie
>> oszczędzam na nawiasach w wyrażeniach warunkowych.
>
> Rozwinę. Jeszcze nie widziałem i nie słyszałem o przypadku, w którym
> kompilator stosujący składnię C popełnił błąd przy analizowaniu
> operatorów logicznych. Zawsze błąd powodował użytkownik, który
> pojechał gdzieś zbyt dużą / zbyt małą liczbą nawiasów.
>
tu sie nie zgodzę. Np gcc w wersji 3 przy optymalizacji o3 różne dziwne
rzeczy wyczynia, szczególnie przy inkrementacji wskaźników ...
wersja 4 już jest ok.
Pozdrawiam

--
orcus
Cztery zjawiska blokują postęp ludzkości: ignorancja, głupota, komitety
normalizacyjne oraz ludzie sprzedający komputery.
http://www.wsb.pl




orcus - 11-05-2007 12:28

  On Fri, 20 Apr 2007 11:06:12 +0200, Łukasz Filut wrote:

> tu sie nie zgodzę. Np gcc w wersji 3 przy optymalizacji o3 różne dziwne
> rzeczy wyczynia, szczególnie przy inkrementacji wskaźników ...
> wersja 4 już jest ok.

taa... ale to sa _bledy_ i tak zawsze beda traktowane.

Nie zapominajac o starym problemie rozwiazywanym poprzez dopisanie "c = c"
na poczatku programu.

To jeste element standardu jezyka i tak powinno pozostac. Jak sie zmieni
to bedzie o tym glosno bo to tak jakby jak juz pisalem ktos echo zamienil
na cos innego.

--
Pozdrawiam
orcus

..: IE służy do przeglądania internetu z twojego komputera i na odwrót :.




Miroo - 11-05-2007 12:28
=?iso-8859-2?Q?Re:_Jak_sprytnie_skleja=E6_zapytania=3F?=
  Użytkownik "Wojciech Bancer" <proteus@post.pl> napisał w wiadomości
news:slrnf2gvfl.d71.proteus@ender.elsat.net.pl...

> Rozwinę. Jeszcze nie widziałem i nie słyszałem o przypadku, w którym
> kompilator stosujący składnię C popełnił błąd przy analizowaniu
> operatorów logicznych. Zawsze błąd powodował użytkownik, który
> pojechał gdzieś zbyt dużą / zbyt małą liczbą nawiasów.

Programistą jestem nie od dziś, ale oczywiście zdarza mi się
popełniać nawet bardzo głupie błędy. W tamtym przypadku jednak
zmiana && na dwa ify rozwiązała problem, nie miałem czasu wnikać
co było przyczyną. Zresztą często wolę napisać nieco nadmiarowo
niż potem szukać godzinami przyczyny.
Widziałem już różne dziwne rzeczy wyczyniane przez kompilatory.
Byc może kompilatory same w sobie były ok, a sypało się coś
na styku IDE<->kopilator i kompilowany był nieco inny kod,
niż widoczny na ekranie.

Pamiętam pierwszą niespodzianke, jaką zrobił mi kompilator C.
Przyniosłem kod napisany w domu pod linuksem na uczelnię.
Włączam kompilację na Solarisie i bach, error. Co jest?
Okazało się, że kompilator C na Solarisie wymagał entera
po ostatniej linijce kodu :)
--
Pozdrawiam
Miroo (http://miroo.ovh.org)




Borys =?iso-8859-2?Q?Pogore=B3o?= - 11-05-2007 12:28

  Dnia Fri, 20 Apr 2007 11:38:50 +0200, Miroo napisał(a):

> Pamiętam pierwszą niespodzianke, jaką zrobił mi kompilator C.
> Przyniosłem kod napisany w domu pod linuksem na uczelnię.
> Włączam kompilację na Solarisie i bach, error. Co jest?
> Okazało się, że kompilator C na Solarisie wymagał entera
> po ostatniej linijce kodu :)

Skompiluj swój kod z "-Wall -W -Werror -ansi -pedantic" to się dopiero
zdziwisz ;)

--
Borys Pogoreło
borys(#)leszno,edu,pl




=?ISO-8859-2?Q?=A3ukasz_Filut?= - 11-05-2007 12:28

  orcus pisze:
> On Fri, 20 Apr 2007 11:06:12 +0200, Łukasz Filut wrote:
>
>> tu sie nie zgodzę. Np gcc w wersji 3 przy optymalizacji o3 różne dziwne
>> rzeczy wyczynia, szczególnie przy inkrementacji wskaźników ...
>> wersja 4 już jest ok.
>
> taa... ale to sa _bledy_ i tak zawsze beda traktowane.
>
> Nie zapominajac o starym problemie rozwiazywanym poprzez dopisanie "c = c"
> na poczatku programu.
>
> To jeste element standardu jezyka i tak powinno pozostac. Jak sie zmieni
> to bedzie o tym glosno bo to tak jakby jak juz pisalem ktos echo zamienil
> na cos innego.
>

nie no ok, pisze tylko że takowe się zdarzają, a kolega w to wątpił ;).
Pozdrawiam

--
orcus
Cztery zjawiska blokują postęp ludzkości: ignorancja, głupota, komitety
normalizacyjne oraz ludzie sprzedający komputery.
http://www.wsb.pl




Tomasz =?UTF-8?Q?Pi=C5=82at?= - 11-05-2007 12:28

  adasiek <podolany@poczta.wp.pl> wrote:
>>>> tak mnie meczy - a dleczgo nie polaczyles tego && po prostu?
>>
>>> dlatego, ze taka konstukcja - w moim (byc moze mylnym) przekonaniu -
>>> spowoduje sprawdzenie obu warunkow niezaleznie od wartosci logicznej
>>
>> tak tez myslalem - juz w C wprowadzono zasade ze wyrazenia logiczne liczy
>> sie tylko tak dlugo jak nie mozna zwrocic wyniku co w polaczeniu z
>> "evaluowaniem" wyrazen moze dawac ciekawe efekty.
>
> nie obawiasz sie, ze to sie moze zmienic w blizej nieokreslonej przyszlosci
> - albo np. byc roznie interpretowane przez rozne interpretery jezyka PHP?
> czy moze jest to fragmentem standardu jezyka?

Nie może być różnie interpretowane, jest to standard i nie zmieni się.
Keywords dla zainteresowanych: short-circuiting, lazy evaluation.

Warto tylko pamiętać, że "&&"/"||" mają wyższy priorytet niż "and"/"or"
(i nie tylko): http://www.php.net/manual/en/languag...ors.precedence

Ponc
--
Kto misiowi urwał ucho?




Robert Niestroj - 11-05-2007 12:28

  It was the 2007-04-19 21:20, when adasiek wrote :

Przeanalizowałem twój kod i proszę o poprawienie mnie jak coś źle rozumiem.

> $mapa = array(
> array('nazwa_atrybutu_z_POST1', 'nazwa_atrybytu_z_SQL1'),
> array('nazwa_atrybutu_z_POST2', 'nazwa_atrybytu_z_SQL2'),
> array('nazwa_atrybutu_z_POST3', 'nazwa_atrybytu_z_SQL3')
> );

Tworzysz sobie tablicę dwuwymiarową z nazwami pól z formularzy i
odpowiadającymi im nazwami kolumn w Oracle. Tablica 2-kolumnowa i
wierszy tyle w danym formularzu pól.

> $wartosci=array()

Tworzysz sobie pustą tablicę.

> foreach ($mapa as $mapowanie) {

Dla każdego elementu z $mapa czyli będzie "zwracać" jeden wiersz z tej
tabeli czyli tablicę z nazwą pola formularza i nazwą kolumny w bazie.

> if (isset($_POST[$mapowanie[0])) if ($_POST[$mapowanie[0]]!=='') {

Sprawdzasz, czy zmienna z formularza została przesłana - isset. Drugi if
sprawdza czy jest tam pusta wartość.

> $przefilrowane=przefiltruj($_POST[$mapowanie[0]]);

Ta linia jest potrzebna do rozwiązania problemu SQL Injection. Gdyby
mnie problem wstępnie nie interesował to mogę pominąć.

> $wartosci[]=array($mapowanie[1],$przefiltowane);

Tworzysz nową tablicę z dwuwymiarową, gdzie pierwsza kolumna to nazwa
kolumny w bazie a druga kolumna to wartosc tam wpisywana.

> };
> };
>
> $sql='INSERT INTO nazwa tabeli (';

Początek stringu

> foreach ($kolumny as $wpis) $sql.=$wpis[0].',';

Skąd tutaj tablica $kolumny? Nie powinna tu być $wartosci i wtedy nazwa
kolumny brana z $wpis[0] ?

> // obcninam ostatni przecinek;
> $sql=substr($sql,0,strlen($sql)-1);
> $sql.=') VALUES (';

Tu jasne.

> foreach ($kolumny as $wpis) {
> // tutaj wartoby do zmiennej $wpis dodac jeszcze info, czy wartosc
> // jest liczbowa czy numeryczna i ewentualnie dodawac lub nie >'<;
> $sql.='\''.$wpis[1].'\',';
> };

To samo co wyzej - tez chyba powinno byc $wartosci a nie $kolumny?
Poza tym jaka jest różnica między wartością liczbową a numeryczną? Czy
nie powinno to być raczej rozpoznawanie czy wartość jest liczbą lub
liczbą nie jest i wtedy dodawać >'< ? Gdzie najlepiej wpisać info o
typie danych - już w tablicy $mapa? Tak samo dopisać też informacje,
które kolumny są konieczne? Bo Twój skrypt jak widzę tego nie uzwględnia?

> // obcninam ostatni przecinek;
> $sql=substr($sql,0,strlen($sql)-1);
> $sql.=')';

Tu jasne.

> WADY:
> - jest pelno klas do obslugi bazy danych, po co pisac wlasny kod?

Jak możesz zapodaj link do jakiejś prostej klasy dla beginneró w PHP :-)
Twój mail w polu From jest aktualny i bez żadnego spamtrapa? Chciałbym
się w razie czego zapytać coś z PHP na priv.

--
[ : Robert Niestroj ::::::: member of rally.pl te@m OPOLE :::::::::::: ]
[ : [JID: rniestroj@jabberpl.org] : [GG: 1734202] : [ICQ: 162506105] : ]
[ : ::::: [ http://firefox.pl ] :::::: [ http://rallyonline.pl ] ::::: ]
[ : "W porównaniu z nami Formuła 1 to przedszkole", Colin McRae 2001 : ]




adasiek - 11-05-2007 12:28

  Robert Niestroj <ODPOWIADAJACUSUNTOrniestroj@go2.pl.invalid> wrote in
news:f0bm6c.26s.1@rallyonline.pl:

>> $wartosci=array()
>
> Tworzysz sobie pustą tablicę.
>
[...]
>> $wartosci[]=array($mapowanie[1],$przefiltowane);
>
> Tworzysz nową tablicę z dwuwymiarową, gdzie pierwsza kolumna to nazwa
> kolumny w bazie a druga kolumna to wartosc tam wpisywana.

i zapisuje to jako kolejny wiersz tablicy $wartosci ;-)

>> foreach ($kolumny as $wpis) $sql.=$wpis[0].',';
>
> Skąd tutaj tablica $kolumny? Nie powinna tu być $wartosci i wtedy
> nazwa kolumny brana z $wpis[0] ?

acha - tak; oczywiscie w trakcie pisania stwierdzilem, ze to bedzie
bardziej odpowiednia nazwa i jak widac nie zamienilem tego wszedzie;

> Poza tym jaka jest różnica między wartością liczbową a numeryczną? Czy
> nie powinno to być raczej rozpoznawanie czy wartość jest liczbą lub
> liczbą nie jest i wtedy dodawać >'< ? Gdzie najlepiej wpisać info o

tak - wlasnie to mialem na mysli;

> typie danych - już w tablicy $mapa? Tak samo dopisać też informacje,
> które kolumny są konieczne? Bo Twój skrypt jak widzę tego nie
> uzwględnia?

a jednak - po prostu do tablicy $wartosci wchodza tylko te elementy,
ktore mialy odpowiadajece im pole w tablicy $_POST - prawda? wiec
wszystkie elementy $wartosci sa "konieczne";

>> WADY:
>> - jest pelno klas do obslugi bazy danych, po co pisac wlasny kod?
>
> Jak możesz zapodaj link do jakiejś prostej klasy dla beginneró w PHP
> :-) Twój mail w polu From jest aktualny i bez żadnego spamtrapa?

niestety - nie pracuje na co dzien z bazami danych pod PHP i nie moge
za bafdzo nic polecic; pewnie bym sprawdzil co oferuje w tej materii
PEAR i http://adodb.sourceforge.net/ oraz przejrzal zasoby dostepne tu:
http://www.hotscripts.com/

> Chciałbym się w razie czego zapytać coś z PHP na priv.

to bardzo zly pomysl ;-) ale mail dziala;

adas;
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Wydajność baz danych w zależności od poziomu izolacji ANSI/ISO Czy zna (obsługuje) ktoś program Iso Draw ? MYSQL - kodowanie w ISO-PL strona plus baza w iso do utf-8 Kodowanie: z iso na utf mecze sie i mecze i nic - zapytanie czesciowe [sql][pgsql] zapytanie sql [mysql 4.0] SELECT t1.id, t1.foo FROM t1 oraz COUNT t2 w jednym zapytaniu. [MySQL] Zapytanie z pliku , wynik do pliku pytanie o zapytanie z having count = count z innej kolumny
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • dirtyboys.xlx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com