Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak zrobić funkcję funkcję wykonującą zapytania na bazie z opcjonalnymi argumentami
Forum PHP.pl > Forum > Bazy danych
nowy_pehapowiec
Głupie i pewnie proste ale nie wiem.

Potrzebuje przerobić cześć swoich funkcji tak aby nie wszystkie ich argumenty były wymagane. I nie mam dobrego pomysłu. Chodzi o to, żeby np warunek WHERE był opcjonalny. Tylko, że nie bardzo wiem co wstawić jako warunek żeby zawsze był prawdziwy.

Np
jak wymusić opcjonalność $con i $ord w poniższym zapytaniu?
SELECT * FROM $tab
WHERE $con
ORDER BY $ord

Poratuje ktoś podpowiedzią?

pozdro
nospor
ale może napisz do czego praktycznie to chcesz wykorzystac, bo moze cos za bardzo kombinujesz.

Tu pisalem o opcjonalnych warunkach:
http://nospor.pl/wyszukiwarka-zapytanie-za...runkow-n31.html

order by zrobic nalezy analogicznie
nowy_pehapowiec
OK widzę, że tak samo rozwiązaliśmy ten problem. Myślałem, że w SQL są jakieś dodatkowe mechanizmy zapewniające opcjonalność fragmentów zapytania.

A przy okazji czy wiesz coś na temat:
http://forum.php.pl/index.php?showtopic=133781&hl=

pozdro

Jeszcze jedno pytanko.

Czemu dostaje błąd przy takim warunku
"SELECT * FROM $t WHERE id = $tab['index']"

ale po wstawieniu
SELECT * FROM $t WHERE id = $a
gdzie $a = $tab['index']
wszystko jest już ok

pozdro
nospor
podstaw obslugi stringow
przeczytaj dokladnie 2 razy to:
http://pl.php.net/manual/pl/language.types.string.php

a znajdziesz rozwiązanie
nowy_pehapowiec
OK, widzę, że rozwiązania sa trzy albo nawiasy albo łączenie stringów za pomocą kropki albo wpisywanie indeksów bez apostrofów czy innych znaków. Która z tych opcji najlepiej się tobie sprawdziła w praktyce?

Teraz pytanie czemu tak jest? Co takiego jest w $q = "SELECT * FROM $t WHERE id = $tab['index']" że nie może być poprawnie sparsowane?

pozdro
nospor
Cytat
Która z tych opcji najlepiej się tobie sprawdziła w praktyce?
jakos nie zwracalem na to uwagi szczegolnie

Cytat
Teraz pytanie czemu tak jest?
To sie pytaj tych od php. Co tam jest? No tam jest apostrof smile.gif

ps: cieszę się, ze przestudiowałeś link dokładnie smile.gif
nowy_pehapowiec
No wiem, że apostrof, ale nie wiem czemu miałby powodować jakieś niejednoznaczności i błędy? Przecież jeśli otwieram string znakiem" i w środku mam zmienną z indeksem to czemu u licha nie może być w apostrofach ten indeks - nie rozumiem. Nospor a czy jest jakaś ogólnie przyjęta umowa jaki zapis stosować? Mi najbardziej intuicyjne wydaje się łączenie stringów za pomocą kropki ale to mało wygodne jest, więc albo brak apostrofów albo nawiasy - jak radzisz?

PS
nie mogę sobie poradzić z: http://forum.php.pl/index.php?showtopic=133781&hl=
pomógłbyś mi? Nie wiem co to może być

pozdr
nospor
Cytat
ale nie wiem czemu miałby powodować jakieś niejednoznaczności i błędy
pewnie z tego samego powodu co brak srednika na koncu instrukcji powoduje bledy - bo tak.

Cytat
Nospor a czy jest jakaś ogólnie przyjęta umowa jaki zapis stosować
Nie kombinujesz za bardzo? Stosuj tak jak ci wygodnie. Ja w wiekszosci wypadkow stosuje łączenie stringow - bo tak. Choć gdy mam dużo zmiennych wstawic do tekstu to wstawiam bez łączenia.
nowy_pehapowiec
Cytat(nospor @ 28.10.2009, 20:05:11 ) *
pewnie z tego samego powodu co brak srednika na koncu instrukcji powoduje bledy - bo tak.

Cytat(nospor @ 28.10.2009, 20:05:11 ) *
To jedyna rzecz jakiej nie lubię w PHP: średniki i zabawy z " i '
Nie kombinujesz za bardzo? Stosuj tak jak ci wygodnie. Ja w wiekszosci wypadkow stosuje łączenie stringow - bo tak. Choć gdy mam dużo zmiennych wstawic do tekstu to wstawiam bez łączenia.


Pytałem przez ciekawość, zawsze można się czegoś dowiedzieć:)
Np wczoraj widziałem kod znajomego który funkcje w PHP zawsze wywołuje w podobny sposób:

1 Kopiuje z pliku z funkcją jej nazwę i argumenty.
2 Wkleja do skryptu i po znaku = przypisuje każdemu argumentowi wartość.
Twierdzi, że w ten sposób nigdy nie myli argumentów bo zawsze ma ich nazwy w kodzie i są one identyczne jak te w kodzie funkcji. Dla mnie to jest ekstremalnie nienaturalne ale co najmniej osobliwe i interesujące biggrin.gif

pozdro

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.